我在我的应用程序中使用本机库,该库仅为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)
不幸的是,图书馆是封闭的来源.有没有办法解决这个问题而无需使用64位目标重新编译库?
我有一个包含两个库的应用程序,其中两个库都依赖于本机库.两者都使用gradle包含,因此结构如下所示:
MyApp的
- Libary1
-- x86, armeabi native libs
- Library2
-- Library3
--- x86, armeabi, arm64-v8a
我想删除arm64支持,因为我还需要*.so for Library1,我没有.(所以目前我在arm64设备上得到了一个UnsatisfiedLinkError)
我已经尝试过这个:(用abiFilters"armeabi","x86") /sf/answers/2155987781/
但我仍然得到我的apk中的arm64文件夹和*.so文件...有什么我想念的吗?如果本机库在依赖层次结构中更深入,那abiFilter的东西应该可以工作吗?
在此先感谢任何支持:)