Типичная структура проекта 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.