【问题标题】:Where to place JNI/native libraries in Android Studio Project在 Android Studio 项目中放置 JNI/本机库的位置
【发布时间】:2019-02-02 10:22:00
【问题描述】:
【问题讨论】:
标签:
android
gradle
android-ndk
java-native-interface
【解决方案1】:
一个支持jni的Android项目的典型结构如下:
.
├── 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
但是,理论上您可以在 app 级别的 build.gradle 文件中任意配置您的 jniLibs 路径。
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+,您无需为您的 c/c++ 源代码显式配置 jniLibs 路径,因为它将由 Android Studio 自动管理。所有src/main/cpp 下的c/c++ 源代码将自动编译并打包到您的apk 中。