Где разместить JNI / нативные библиотеки в Android Studio Project - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь скомпилировать следующий код:

https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/master

в файл apk.

Для этого Я создал проект Android по умолчанию с пустым действием. После этого я добавил в свой проект соответствующие файлы Java из репозитория и внес некоторые изменения. Я также добавил соответствующие ресурсы xml / image в свой проект.

Теперь мне нужно добавить библиотеки JNI / native в мой проект. https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/master/native/

Однако я не знаю, где их разместить. Единственные ссылки, которые я мог найти, были

1] Как добавить библиотеки JNI в проект студии android? Но структура моего проекта отличается от скриншота.

и

2] Где создать папку jni в Android Studio , которая устарела / устарела / не содержит деталей.

Вот моя структура проекта:

Project_Structure

1 Ответ

0 голосов
/ 28 августа 2018

Типичная структура проекта Android с поддержкой jni выглядит следующим образом:

.
├── CMakeLists.txt // Your cmake configuration files. 
├── app.iml
├── build
├── build.gradle
├── libs
├── proguard-rules.pro
└── src
    ├── androidTest
    │   └── java
    ├── main
    │   ├── AndroidManifest.xml
    │   ├── cpp // Directory to put your jni native source code. 
    │   │   └── native-lib.cpp
    │   ├── java
    │   ├── jniLibs // Directory to put your jni libs, i.e. the .so files. 
    │   └── res
    └── test
        └── java

Но теоретически вы можете настроить путь jniLibs в любом месте внутри файла app level build.gradle.

android {
    ...
    defaultConfig {
        ...
        externalNativeBuild {
            cmake {
                cppFlags "-frtti -fexceptions"
            }
        }
    }
    ...
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    ...
    sourceSets {
        main {
            // put your jni libs.
            jniLibs.srcDirs += "${projectDir}/jniLibs"]
        }
        debug {
            // put your debug version jni libs.
            jniLibs.srcDirs += "${projectDir}/jniLibs/debug"]
        }
        release {
            // put your release version jni libs.
            jniLibs.srcDirs += "${projectDir}/jniLibs/release"]
        }
    }
    ...
}

Для Android Studio 3.0+ вам не нужно явно настраивать путь jniLibs для исходного кода c/c++, так как он будет автоматически управляться Android Studio. Все эти c/c++ исходные коды под src/main/cpp будут скомпилированы и автоматически упакованы в ваш apk.

...