android内置第三方APP为系统应用,第三方APP内置到/system/app目录下报错java.lang.UnsatisfiedLinkError,so文件不加载
项目场景:
在无系统签名的情况下,将第三方APP内置到/system/app目录下,可以将第三方应用变为系统应用,用户无法直接卸载。不过前提是手机需要root。
问题描述
使用es文件管理工具将第三方应用的apk文件添加到/system/app目录下,可能会出现加载so文件报错,例如:
java.lang.UnsatisfiedLinkError: Couldn't load ijkffmpeg from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/system/app/tets .apk"],
nativeLibraryDirectories=[/vendor/lib, /system/lib]]]: findLibrary returned null
原因分析:
主要原因有两种:
1,apk打包时,没有添加对应的cpu架构。
2,系统在安装该目录下的app时不会自动安装相应的so文件,所以需要手动将apk所需要的so文件复制到对应的目录下。如上报错的目录:/system/lib,/vendor/lib目录。
解决方案:
一,查看项目是否添加了对应的cpu架构。
1,查看android设备的cpu架构类型:
//adb执行命令
cat /proc/cpuinfo其中:
CPU architecuture: 7 //7为arm-v7,8为arm-v8
2,查看项目的build.gradle是否添加了对应的cpu架构
ndk {// 设置支持的SO库架构setAbiFilters(["armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"])}sourceSets {main {jniLibs.srcDirs = ['libs']}}
gradle.properties添加
android.useDeprecatedNdk=true
3,打包成功后对应的apk文件的lib目录下会有对应架构的so文件。
二,添加到系统目录
1,先普通安装一次apk,获取其所需的so文件。正常安装的情况下,apk目录为:/data/app。对应的so文件在/data/data/包名/lib 目录下。
2,将该目录下的so文件复制到报错时指出的目录下,/system/lib下。
3,卸载正常安装的apk,并将其安装包放到/system/app目录下
4,重启安卓设备即可。
android内置第三方APP为系统应用,第三方APP内置到/system/app目录下报错java.lang.UnsatisfiedLinkError,so文件不加载相关推荐
- 【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )
文章目录 一.报错信息 二.解决方案 ( 指定 APK 打包动态库的 CPU 架构 ) 一.报错信息 外部引用 so 动态库 , 如果只有一个 armeabi-v7a 的动态库 , 那么如果在 arm ...
- 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )
文章目录 一.报错信息 二.解决方案 ( Android Studio 配置外部 so 动态库两种方法 ) 1.jniLibs 目录存放 2.libs 目录存放 一.报错信息 外部引用 so 动态库 ...
- JAVA第三方包导入但找不到类,解决:导入第三方包报错java.lang.NoClassDefFoundError:XXX.XXX,XXXXXX...
报错信息如下,主要是导入androidpn测试client端,结果报错 04-02 16:28:34.325: E/dalvikvm(485): Could not find class 'org.a ...
- 【错误记录】Android 应用运行报错 ( java.lang.VerifyError: Verifier rejected class androidx. | 逆向中遇到的问题 )
文章目录 一.报错信息 二.问题分析 一.报错信息 从 DEX 文件加载 Activity 组件 , 运行时报如下错误 ; 2021-12-12 14:02:52.432 5342-5342/com. ...
- Android Studio报错 “java.lang.IllegalStateException: Room cannot verify the data integrity” 解决方法
最近在Android Studio遇到以下报错: Caused by: java.lang.IllegalStateException: Room cannot verify the data int ...
- android中有米广告报错java.lang.NoClassDefFoundError: net.youmi.android.AdManager
java.lang.NoClassDefFoundError: net.youmi.android.AdManager 这是新版ADT需要把引用第三方的jar目录设为source folder--这 ...
- 我的Android进阶之旅------gt;Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed....
今天在调用MediaRecorder.stop(),报错了,java.lang.RuntimeException: stop failed. E/AndroidRuntime(7698): Cause ...
- Android Studio编译报错:“ java.lang.OutOfMemoryError: Java heap space”
前言: 最近换了工作,到了新东家,厂子大了,人也多了,希望在新的环境中不断成长.在上家公司电脑是最好的,新的公司就是一般配置,内存只有8G,因此Android Studio3.5编译报错:java.l ...
- 报错java.lang.ClassCastException: XXXXXXX.Application cannot be cast to android.app.MyApplicati
最近做百度地图,发现这种错误一般是AndroidManifest.xml中配置有错. <application android:icon="@drawable/icon&quo ...
最新文章
- Worktile荣登2020中关村国际前沿科技创新大赛大数据与云计算领域TOP10
- Javapinyin4J实现中文名转拼音
- Stopwatch类学习
- Take Your Seat Gym - 102222D
- 让你的silverlight更炫(一):从自定义控件说起
- 敏捷开发团队管理系列之二:程序与测试团队I
- ElementUI 按需引入坑爹的点记录
- 高斯正反算 java_高斯投影正反算的代码
- java Session生命周期讨论
- linux 下网站压力测试工具webbench
- fseek函数与ftell函数使用例程
- android 打电话区号,Android Q新功能首曝:漫游自动加拨国际区号
- IDEA 社区版进行 Web 开发
- 11 种主要神经网络结构图解
- 直播弹幕互动游戏如何开播?
- 中国电信 CTWing 物联网平台运营数据大解密
- java8 stream collectors.joining
- QT-----无人机地面站如何修改显示界面1——OpenPilotGCS_config.xml
- 【Ware】免费的格式转换软件推荐
- FPGA的设计艺术(7)STA实战之SmartTime时序约束及分析示例(II)