7.1 预装客户应用 导致设置等系统应用几率报错
错误日志:
03-20 00:29:58.875 597 597 W PackageManager: Instruction set mismatch, PackageSetting{234cf3a com.android.xdsclient/1000} requires arm whereas PackageSetting{38ca960 android/1000} requires arm64
03-20 00:29:58.875 597 597 W PackageManager: Instruction set mismatch, PackageSetting{234cf3a com.android.xdsclient/1000} requires arm whereas PackageSetting{8d19963 android.rockchip.update.service/1000} requires arm64
03-20 00:29:58.875 597 597 W PackageManager: Instruction set mismatch, PackageSetting{234cf3a com.android.xdsclient/1000} requires arm whereas PackageSetting{c36d1db com.android.gallery3d/1000} requires arm64
03-20 00:29:58.875 597 597 I PackageManager: Adjusting ABI for com.android.settings to armeabi (requirer=com.android.xdsclient, scannedPackage=null)
03-20 00:29:58.876 597 597 I PackageManager: Adjusting ABI for com.DeviceTest to armeabi (requirer=com.android.xdsclient, scannedPackage=null)03-20 00:32:24.691 2793 2793 W System : ClassLoader referenced unknown path: /system/priv-app/Settings/lib/arm64
03-20 00:32:24.719 2793 2793 D AndroidRuntime: Shutting down VM
03-20 00:32:24.721 2793 2793 E AndroidRuntime: FATAL EXCEPTION: main
03-20 00:32:24.721 2793 2793 E AndroidRuntime: Process: com.android.settings, PID: 2793
03-20 00:32:24.721 2793 2793 E AndroidRuntime: java.lang.RuntimeException: Unable to instantiate application com.android.settings.SettingsApplication: java.lang.ClassNotFoundException: Didn't find class "com.android.settings.SettingsApplication" on path: DexPathList[[zip file "/system/priv-app/Settings/Settings.apk"],nativeLibraryDirectories=[/system/priv-app/Settings/lib/arm64, /system/priv-app/Settings/Settings.apk!/lib/armeabi, /system/lib, /vendor/lib, /system/lib, /vendor/lib]]
03-20 00:32:24.721 2793 2793 E AndroidRuntime: at android.app.LoadedApk.makeApplication(LoadedApk.java:802)
03-20 00:32:24.721 2793 2793 E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5399)
03-20 00:32:24.721 2793 2793 E AndroidRuntime: at android.app.ActivityThread.-wrap2(ActivityThread.java)
03-20 00:32:24.721 2793 2793 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1551)
03-20 00:32:24.721 2793 2793 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
03-20 00:32:24.721 2793 2793 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154)
03-20 00:32:24.721 2793 2793 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6141)
03-20 00:32:24.721 2793 2793 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
03-20 00:32:24.721 2793 2793 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
看log去确认是否有so或jar不存在,发现确实是有的,而且只是概率性不行
后面发现系统是64位,而预装应用只有32位库且是带有系统进程android.uid.system的应用 <com.android.xdsclient/1000>
1000代表 android.uid.system
同一个uid的应用不能32位和64位混着用。
解决方法:
1..在apk对应的android.mk中
LOCAL_DEX_PREOPT := nostripping
2. device/rockchip/xx/BoardConfig.mk
DEX_PREOPT_DEFAULT := nostripping
推荐APK修改
拓展参考<https://blog.csdn.net/lulus_tecpath/article/details/107366904>
https://blog.csdn.net/weiqifa0/article/details/88754221
:
android加载so文件的机制 apk在安装的过程中,系统就会对apk进行解析根据app的primaryCpuAbi值,确定这个apk安装是在32还是64位的虚拟机上,如果是32位虚拟机那么就不能使用64位so,如果是64位虚拟机也不能使用32位so。
而64位设备可以提供32和64位两种虚拟机,根据apk选择开启哪一种,因此说64位设备兼容32的so库。具体来说就是apk在安装的时候,apk解包的时候,就已经确定要加载多少位的库了,如果apk里面放有两种库,实际用的时候,也是只会加载一种库。
apk架构确定顺序
- 如果apk包中lib文件夹下有.so库,就根据这个.so库的架构模式,确定app的primaryCpuAbi的值
- 2.对于system app, 如果没法通过第一步确定primaryCpuAbi的值,PKMS会根据/system/app/${APP_NAME}/lib和/system/app/${APP_NAME}/lib64这两个文件夹是否存在,来确定它的primaryCpuAbi的值
- 3.对于还没有确定的app, 在最后还会将自己的primaryCpuAbi值与和他使用相同UID的package的值设成一样
- 4.对于到这里还没有确认primaryCpuAbi的app,就会在启动进程时使用ro.product.cpu.abilist这个property的值的第一项作为它关联的ABI
7.1 预装客户应用 导致设置等系统应用几率报错相关推荐
- SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析
SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析 所在项目客户的一家工厂上线已经超过半年,其业务部门提出一个使用了半年的RF枪程序,突然不能使用了.程序直接Dump ...
- 【踩坑记录】mybatis-plus的insert方法,默认会生成一个uuid作为主键,导致类型不一致,存入数据库报错
[踩坑记录]mybatis-plus的insert方法,默认会生成一个uuid作为主键,导致类型不一致,存入数据库报错 报错记录 解决方案 推荐方案 使用uuid作为主键,修改id的类型为bigint ...
- redis设置主从复制-slave Replication--解决报错:(error) READONLY You can't write against a read only slave.
我的个人博客:zhang0peter的个人博客 主节点按照我上篇文章的内容配好redis后就可以了:ubuntu, debian 安装redis,设置开机自动启动和密码,允许外网访问 在从节点安装好r ...
- room区域规则设置减少design rule error报错数量
下图中标注的区域显示过孔的距离不符合规则,出现9个报错,观察后知道这个地方过孔距离太小不会导致电路出错,所以此处的过孔距离可以设置为更小的值:比如"0"来去掉报错: 方法步骤1:设 ...
- c# 传递Null的string值导致的调用C++的dll报错 Attempted to read or write protected memory.
c# 调用C++的dll报错 Attempted to read or write protected memory: 原因是:c# 传递Null的string值导致的,将Null改为string.e ...
- nginx 缓存区太小导致后台Connection reset by peer 报错
问题概述:图片bit 64生成数据流太大,导致小程序分享弹窗的二维码图片生成失败 后台报错: 排查: Client------>nginx------->h5------>nginx ...
- 迅雷插件导致js获取后端返回结果报错问题
最近在调试公司一个项目,其中使用了js,在登录该系统时,页面不能正常跳转.但是我使用别的浏览器(调试使用的是谷歌浏览器)能够正常跳转.这就很奇怪,使用页面调试工具,获取到后端的返回结果如下图: < ...
- video.js在vue项目中设置中文语言包,报错videojs is not defined 解决办法
在vue项目中使用video.js时要求中文化,但是网上的解决办法不太好找,特此记录一下. 错误步骤: 根据网上的教程,找到中文包在node_modules/video.js/dist/lang/zh ...
- mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...
现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time' 原因 ...
最新文章
- 如何在Mac环境下搭建svn服务器端环境
- 消息队列—经典5连问—你能抗几道?
- krylov子空间迭代法
- SQLite3.8.4.2在Windows平台下的编译和使用
- 神经网络与深度学习——TensorFlow2.0实战(笔记)(五)(Matplotlib绘图基础<1>python)
- dnn神经网络 缺点_抄近路神经网络如何因找捷径而犯错
- 计算机视觉—TensorFlow入门(5)
- Lambda表达式公共拼接函数(原创)
- 解析json对象出现$ref: $.list[0]的解决办法
- 黑苹果Mojave下驱动高通模块Atheros DHXA-195(AR9285无线网卡和AR3011 蓝牙3.0)
- 经纬度坐标相互转换度分秒
- 微型计算机软硬件论文,关于微型计算机软硬件论文3000字_微型计算机软硬件毕业论文范文模板...
- Flink二:IngestionTime与ProcessingTime
- Vue 可暂停计时器
- python爬取B站视频弹幕分析并制作词云
- 初学HTML5:Web workers
- 有关系统DLL文件大全
- java jdk 8u101_JDK1.8安装
- python实验五答案_Python实验五
- 手机号,邮箱正则匹配验证
热门文章
- android动画篇——动画加速器
- Scrum Alliance国际Scrum中文认证和敏捷教练职业发展体系
- 2.哥德巴赫猜想是任何不小于4的偶数,都可以写出两个质数之和的形式。它是世界三大数学难题之一,至今没有被完全证明。编写一个多线程程序验证100000000以内哥德巴赫猜想是对的。
- Android CPU, Compilers, D8 R8
- python rgb2gray 将rgb图像转换为gray图像
- 满屏飞舞的心HTML动画,使用snowfall.jquery.js实现爱心满屏飞的效果
- python,求约数,开方法
- python numba class_Numba 开发手册 (二)
- SQL数据类型 bigint、int、mediumint、smallint、tinyint 取值范围,占位
- 每日言论:『恐惧来自未知』