我正在尝试编译以下代码:
https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/master
进入一个apk文件。
为此, 我创建了一个带有空 Activity 的默认 Android 项目。之后,我将存储库中的相关java文件添加到我的项目中并进行了一些修改。我还在我的项目中添加了适当的 xml/图像资源。
现在,我需要将 JNI/本地库添加到我的项目中。 https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/master/native/
但是,我不知道将它们放在哪里。我能找到的唯一引用是
1] How to add JNI Libraries in android studio project?但是,我的项目结构看起来与屏幕截图不同。
和
2] Where to create jni folder in Android Studio这是旧的/过时的/缺乏细节。
这是我的项目结构:
最佳答案
典型的支持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中。
关于android - Android Studio 项目中 JNI/native 库的放置位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046767/