我们有两个相同的应用程序。它们都具有相同的项目结构。有本机共享库(已编译,无法访问源代码)。我已将共享库放在
中root/app/main/jniLibs/armeabi
root/app/main/jniLibs/armeabi-v7a
和root/app/main/jniLibs/x86
没有针对.so
架构的arm64
文件。
我的设备支持以下架构,
[ro.product.cpu.abi]: [arm64-v8a]
[ro.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.product.cpu.abilist64]: [arm64-v8a]
[ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi]
然而,第一个应用程序运行没有任何问题,但第二个应用程序与java.lang.UnsatisfiedLinkError
崩溃。以下是堆栈跟踪。
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.someapp.name-1/base.apk"],nativeLibraryDirectories=[/data/app/com.someapp.name-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libstar_wars_jni.so"
at java.lang.Runtime.loadLibrary(Runtime.java:366)
at java.lang.System.loadLibrary(System.java:988)
at com.native.library.tstlib.<clinit>(tstlib.java:6)
at com.someapp.name.FingerprintDevice$1.disconnect(FingerprintDevice.java:82)
at com.someapp.name.FingerprintDevice$1.onReceive(FingerprintDevice.java:73)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5268)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)
我还检查了生成的APK,发现apk so
目录中存在/lib
个文件。
我不知道下一步该去哪儿。指针表示赞赏:)