我正在尝试编译以下代码:
https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/master
转换为apk文件。
为此, 我创建了一个默认的Android项目,活动为空。之后,我将资源库中的相关Java文件添加到了我的项目中,并进行了一些修改。我还向项目添加了适当的xml / image资源。
现在,我需要将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,它是旧的/过时的/缺少详细信息。
这是我的项目结构:
答案 0 :(得分: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 级别jniLibs
文件中的任意位置配置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中。