java.lang.UnsatisfiedLinkError при перемещении APK в / system / priv-app / - PullRequest
1 голос
/ 10 ноября 2019

После успешной отладки моего приложения я хочу переместить приложение в системные приложения, чтобы я мог использовать системные разрешения, такие как REBOOT и SET_TIME. Однако при перемещении моего APK в / system / priv-app / folder или добавлении APK в стороннее системное приложение при компиляции ПЗУ при запуске приложения появляется следующая ошибка:

java.lang.UnsatisfiedLinkError: Couldn't load zbarjni from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/system/priv-app/mcaster.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]]:

Я могуотладка, установка и запуск APK успешно через adb. Я испробовал большинство предложений, касающихся UnsatisfiedLinkError, таких как наиболее распространенные:

ndk { 
 abiFilters "armeabi", "armeabi-v7a", "x86", "mips"  
}

для gradle, однако я все еще сталкиваюсь с ошибкой. (моя архитектура процессора - armeabi-v7a)

Я бы предположил, что, поскольку я могу установить APK и успешно запустить его через ADB, все отсутствующие библиотеки присутствуют в APK, однако при работе сприложение как системное приложение.

Куда еще можно обратиться, чтобы устранить ошибку UnsatisfiedLinkError при перемещении моего приложения в системные приложения?

1 Ответ

0 голосов
/ 13 ноября 2019

Сначала мне удалось запустить приложение после копирования APK в / system / priv-app / путем ручного копирования файлов .so в / system / lib. Это привело меня к мысли, что проблема заключается в том, что компиляция не делает то же самое.

Для компиляции APK в ПЗУ в качестве системного приложения требуется, чтобы Android.mk включал следующие строки для копирования файлов .so из проекта в папку system / lib. ПЗУ относится к определенному устройству, поэтому в него была включена .so, относящаяся к архитектуре.

Android.mk

PRODUCT_COPY_FILES += ${LOCAL_PATH}/lib/libiconv.so:system/lib/libiconv.so
PRODUCT_COPY_FILES += ${LOCAL_PATH}/lib/libzbarjni.so:system/lib/libzbarjni.so
PRODUCT_COPY_FILES += ${LOCAL_PATH}/lib/libopencv_java3.so:system/lib/libopencv_java3.so
PRODUCT_COPY_FILES += ${LOCAL_PATH}/lib/libledcontrol_jni.so:system/lib/libledcontrol_jni.so

Это решило ошибку UnsatisfiedLinkError, поскольку файлы теперь присутствуют в system /Lib

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