相关疑难解决方法(0)

如何在64位Android设备上使用32位本机库

我在我的应用程序中使用本机库,该库仅为armeabi,armeabi-v7a和x86编译.

在像Samsung S6这样的64位设备上加载此库时,应用程序崩溃并出现UnsatisfiedLinkError

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.myapp-2/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-2/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libfoo.so"
    at java.lang.Runtime.loadLibrary(Runtime.java:366)
    at java.lang.System.loadLibrary(System.java:989)
Run Code Online (Sandbox Code Playgroud)

不幸的是,图书馆是封闭的来源.有没有办法解决这个问题而无需使用64位目标重新编译库?

android android-ndk ndk-build

54
推荐指数
2
解决办法
3万
查看次数

Gradle排除arm64库

我有一个包含两个库的应用程序,其中两个库都依赖于本机库.两者都使用gradle包含,因此结构如下所示:

MyApp的

- Libary1
-- x86, armeabi native libs
- Library2
-- Library3
--- x86, armeabi, arm64-v8a
Run Code Online (Sandbox Code Playgroud)

我想删除arm64支持,因为我还需要*.so for Library1,我没有.(所以目前我在arm64设备上得到了一个UnsatisfiedLinkError)

我已经尝试过这个:(用abiFilters"armeabi","x86") /sf/answers/2155987781/

但我仍然得到我的apk中的arm64文件夹和*.so文件...有什么我想念的吗?如果本机库在依赖层次结构中更深入,那abiFilter的东西应该可以工作吗?

在此先感谢任何支持:)

android android-gradle-plugin

9
推荐指数
1
解决办法
8827
查看次数