gpt4 book ai didi

java - 如何在 Gradle 中设置 NDK 库路径?

转载 作者:太空宇宙 更新时间:2023-11-04 12:36:27 25 4
gpt4 key购买 nike

我有两个项目AB

A是一个主项目,使用B思想依赖A->B

NDK 库位于两个项目中:

--------------    --------------
| A | | B |
-------------- --------------
| JNI libs | | JNI libs |
-------------- --------------


A
|-jniLibs
|-armeabi-v7a
|-x86

B
|-jniLibs
|-armeabi-v7a
|-x86

我尝试将 JNI 包含到这两个项目中:

来自 A 的 build.gradle fragment :

 ...
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", ""
}
}

}
...

来自 B 的 build.gradle fragment :

 ...
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 库方法实现的错误。您可以说 jni lib 不包含该方法,但是如果我将所有 .so 文件放入 A 项目并尝试使用 B 项目中的 lib - 我不会出现任何错误。

那么问题是:如何在gradle中直接定位JNI lib路径?

最佳答案

终于解决了我的问题。 仔细阅读。

错误出现在与 JNI 一起使用的 Java 类的路径中。

没有 gradle 错误。错误在于包名称。我将包含 native 方法的类移至另一个包。

当您更改包含 native 方法的类的包名称(移动包)时,您应该更改 native 代码中的方法签名。如果您无法更改 native 代码,您应该保留此类的包名称。

关于java - 如何在 Gradle 中设置 NDK 库路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37286408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com