[英]How to setup NDK libs path in Gradle?
我有两个项目A和B.
A是一个主要项目,使用B思想依赖A-> B.
NDK库位于两个项目中:
-------------- --------------
| A | | B |
-------------- --------------
| JNI libs | | JNI libs |
-------------- --------------
A
|-jniLibs
|-armeabi-v7a
|-x86
B
|-jniLibs
|-armeabi-v7a
|-x86
我尝试将JNI包含在两个项目中:
...
sourceSets {
main {
jni.srcDirs = []
jniLibs.srcDirs = ['jniLibs']
}
}
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
productFlavors {
x86 {
ndk {
abiFilters "x86", ""
}
}
arm7 {
ndk {
abiFilters "armeabi-v7a", ""
}
}
}
...
...
sourceSets {
main {
jni.srcDirs = []
jniLibs.srcDirs = ['jniLibs']
}
}
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a', 'mips'
universalApk true
}
}
productFlavors {
x86 {
ndk {
abiFilters "x86", ""
}
}
arm7 {
ndk {
abiFilters "armeabi-v7a", ""
}
}
}
...
当我尝试启动我的应用程序时,我遇到了一个关于缺少JNI lib方法实现的错误。 您可以说jni lib不包含该方法,但是如果我将所有.so
文件放到A项目并尝试使用B项目中的lib - 我没有任何错误。
所以问题是:如何在gradle中直接找到JNI lib路径?
最后我解决了我的问题。 仔细阅读。
错误在于与JNI一起工作的Java类的路径。
没有gradle错误。 错误是包名。 我将包含本机方法的类移动到另一个包中。
当您为包含本机方法的类更改包名称(移动包)时,您应该在本机代码中更改方法签名。 如果您无法更改本机代码,则应保留此类的包名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.