项目结构:
应用程序项目 --> 依赖于库项目
图书馆项目 有一个用于编译 jni 库的文件夹
jniLibs.srcDirs = ['libs']
我尝试按照示例应用程序将以下内容添加到 build.gradle 的 android 元素中 https://android.googlesource.com/platform/tools/build/+/2e1f7810edd76d92cee8d3e06bc4dec0c288adea/tests/ndkSanAngeles/build。 gradle 但是 android 库项目不支持 ProductFlavours,因此组装失败,并显示“无法在项目上找到参数 [dghdhd] 的方法 ProductFlavors()”
productFlavors {
x86 {
ndk {
abiFilter "x86"
}
}
arm {
ndk {
abiFilters "armeabi-v7a", "armeabi"
}
}
}
有没有办法向 Android 库项目添加 ndk 支持?
最终我不需要使用产品香料。
对于图书馆项目,我添加了以下内容:
android {
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
libs 文件夹中有一个名为“armeabi-v7a”的文件夹,因为这是我唯一的目标,所以它非常有用。
ndk 文件 (.so) 被传播到使用 android 库项目的 android 项目中。
要求:
1) 默认情况下,您可以简单地将所有共享本机库放在 main / jniLibs 文件夹中。
项目结构
根文件夹/android项目
根文件夹/android_project/app/src/main/jniLibs/x86
根文件夹/android_project/app/src/main/jniLibs/armeabi-v7a
根文件夹/android_project/app/src/main/jniLibs/...
Gradle 会自动将它们上传到设备。
然后您可以在应用程序中加载该库。
static {
System.loadLibrary("mylibrary");
}
2) 您还可以将所有共享本机库放在自定义位置。
示例包含 bin / android / Debug 目录的路径。
在这种情况下,您应该在 build.gradle 文件中手动设置库位置。
项目结构
根文件夹/android项目
根文件夹/bin/android/Debug/jniLibs/x86
根文件夹/bin/android/Debug/jniLibs/armeabi-v7a
根文件夹/bin/android/Debug/jniLibs/...
根文件夹/android_project/app/build.gradle
apply plugin: 'com.android.model.application'
model {
android {
sources {
main {
jni {
source {
srcDirs = []
}
}
jniLibs {
source {
srcDirs "/../../bin/android/Debug/jniLibs"
}
}
}
}
}
}
根据此线程:
https://groups.google.com/forum/#!topic/adt-dev/nQobKd2Gl_8
无法将 .so 文件添加到库项目是插件 v0.8 中修复的一个错误。
我正在使用 Android Studio 2.1,我发现将源或 sourceSets 条目添加到我的 build.gradle 中没有明显效果。 相反,我发现我需要以下内容:
android {
defaultConfig {
ndk {
moduleName "libmp3lame"
}
}