最近Crashlytics
报告了我正在使用的应用程序从HTC One A9
Android 7.0
设备崩溃。
Fatal Exception: java.lang.UnsatisfiedLinkError nativeLibraryDirectories=[/data/app/com.app.test-1/lib/arm64, /system/lib64, /vendor/lib64]]] couldn't find lib.so
我到处都是特别相似的问题,但是找不到合适的解决方案,因为该应用程序也支持64位版本的本机库。 (请参见下面的cmake
配置)
这是第一次使用此设备的人安装了该应用程序,之前我没有在任何其他设备上看到任何链接错误。
我实际上不确定是否要在发布的错误中所提及的路径中寻找native-lib?如果是这样,为什么不根据我的lib/arm64-v8a
在abiFilters
路径中查找lib?
这是我在应用cmake
中的gradle
配置:
cmake {
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
}
该问题如何解决?
答案 0 :(得分:0)
首先,如果是一个坠机事故,我将不必担心。只有当多个用户崩溃时,我才对其进行优先级排序。在Android上会发生严重的错误,特别是如果您考虑某些设备的质量。
我认为这不是您丢失的图书馆。
实际的问题是真正奇怪的库名称: lib.so
这不是您在Android NDK应用程序中期望的有效名称。您总是希望它寻找lib xxx .so
事实并非如此,这意味着库名称被篡改或在清单文件中未正确指定。
在活动标记内查找AndroidManifest.xml,以查找line,如下所示:
<meta-data android:name="android.app.lib_name" android:value="xxx" />
接下来,在您的apk文件中,您将希望看到这样列出的库:
lib/arm64-v8a/libxxx.so
lib/armeabi-v7a/libxxx.so
当然,使用xxx作为您的应用名称。
如果APK或AndroidManifest中的条目丢失,则问题就在您端。如果他们在那里,我只会怀疑是虚假的客户设备,可能是文件存储空间不足之类的东西。