将APK移至/ system / priv-app /时出现java.lang.UnsatisfiedLinkError

成功调试我的应用程序后,我想将其移至系统应用程序,以便可以利用系统权限,例如REBOOT和SET_TIME。但是,将我的APK移动到/ system / priv-app /文件夹或将APK添加到ROM编译器中的第三方系统应用程序时,运行该应用程序时会收到以下错误:

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]]]:

我可以通过adb成功调试和安装并运行APK。 我尝试了有关UnsatisfiedLinkError的大多数建议,例如最常见的添加方法:

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

渐行渐远,但是我仍然遇到错误。 (我的CPU体系结构是armeabi-v7a)

我认为,由于我可以安装APK并通过ADB成功运行它,因此APK中存在所有缺少的库,但是与将应用作为系统应用一起使用时,显然存在一些差异。

将应用程序移至系统应用程序时,我还能在哪里找到解决此UnsatisfiedLinkError的问题?

wang787890 回答:将APK移至/ system / priv-app /时出现java.lang.UnsatisfiedLinkError

在将APK复制到/ system / priv-app /之后,我首先成功运行了该应用程序,方法是将.so文件手动复制到/ system / lib。这使我相信问题出在编译上,而不是这样做。

将APK作为系统应用程序编译到ROM中,要求Android.mk包含以下行,以将.so文件从项目复制到system / lib文件夹。 ROM特定于某个设备,因此包含了与体系结构相关的.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中

本文链接:https://www.f2er.com/3127911.html

大家都在问