【发布时间】:2015-04-02 01:48:58
【问题描述】:
我有一个这样加载的库:
static {
System.loadLibrary("myLibrary");
}
这在大多数设备上都可以正常工作。然而,在一台设备上,它会导致堆栈跟踪崩溃:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/com.google.android.maps.jar", zip file "/vendor/overlay/myBuild.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "myLibrary.so"
at java.lang.Runtime.loadLibrary(Runtime.java:366)
at java.lang.System.loadLibrary(System.java:989)
at com.sony.foo.bar.<clinit>(myClass.java:20)
接受的答案 here 提示我尝试将 myLibrary 的副本添加到新的 armeabi-v7 文件夹中,其中原始库位于名为 armeabi 的文件夹中。这修复了崩溃。
我试图理解这一点。这是否意味着崩溃的手机具有不同的 CPU? CPU 标识符应用程序将其识别为与其他应用程序具有相同的类型(制造商、型号)。即使假设崩溃的手机是armeabi-v7,最受好评的答案here 和接受的答案here 和here 听起来就像armeabi-v7 手机应该能够使用armeabi 文件夹中的库.不是这样吗?
最后,有没有更好的方法来解决这个问题,这样我就不会在 apk 中有同一个库的两个相同副本?
【问题讨论】:
标签: android android-library unsatisfiedlinkerror