Неустранимое исключение: java.lang.UnsatisfiedLinkError не удалось найти lib.so - PullRequest
0 голосов
/ 03 октября 2019

Недавно 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 config ниже)

Впервые кто-то с этим устройством установил приложение, и я не видел никаких ошибок связывания на других устройствах ранее.

I 'я на самом деле не уверен, что он ищет native-lib в упомянутых путях в опубликованной ошибке? Если это так, почему он не ищет библиотеку в пути lib/arm64-v8a, основанную на моем abiFilters?

Вот мой cmake конфиг внутри приложения gradle:

cmake {
    abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
}

Как решить эту проблему?

1 Ответ

0 голосов
/ 04 октября 2019

Прежде всего: если это один инцидент с аварией, я бы об этом не беспокоился. Только в случае сбоя нескольких пользователей я бы назначил это по приоритетам. Случаются странные ошибки на Android, особенно если учесть качество некоторых устройств.

Я не думаю, что это недостающая библиотека с вашей стороны.

Реальная проблема действительно страннаяимя библиотеки: lib.so

Это недопустимое имя, которое можно ожидать в приложении Android NDK. Вы всегда ожидаете, что он будет искать lib xxx .so

Тот факт, что это не так, означает, что имя библиотеки было искажено или неправильно указано в файле манифеста.

Найдите в AndroidManifest.xml внутри тега активности строку , например, такую:

<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 отсутствуют, ошибка на вашей стороне. Если бы они были там, я бы заподозрил фальшивое пользовательское устройство, возможно, страдает от нехватки файлового хранилища или чего-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...