Android内置系统apk问题

平台:Rockchip
android版本: 7.1
个人博客:https://www.letcos.top/

1.问题描述

​ 一款产品需要内置定制的launcher,使用了一些第三方的sdk。按系统app的内置方法,增加share system uid获得系统权限。但是在使用的过程中大概率会出现系统应用setting(设置)闪退。并伴随录音服务挂掉,密钥链等问题(开始以为是独立的 bug,后面分析都是内置系统apk引起的问题)。

2. 分析思路

2.1 分析

查看logcat ,下面是关键log

03-12 10:48:50.247 1381 1381 E AndroidRuntime: Process: com.android.settings, PID: 1381
03-12 10:48:50.247 1381 1381 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-v7a, /system/lib, /vendor/lib, /system/lib, /vendor/lib]]

setting apk找不到32位的库,所以运行会闪退。那看一下系统内置的setting是多少位的。

//查看系统apk信息
adb shell dumpsys package p > dumpsys_p

在 dumpsys_P中找到setting的primaryCpuAbi=arm64-v8a,可见setting是64位apk。由于setting是64位apk,而且没有编译32位库,所以找不到32位库闪退就很好解释了。现在的问题是为什么64位的setting apk会到32位的目录下去找所需要的库?

 Package [com.android.settings] (f0c9a0e):
    userId=1000
    sharedUser=SharedUserSetting{f9d70ba android.uid.system/1000}
    pkg=Package{3232b02 com.android.settings}
    codePath=/system/priv-app/Settings
    resourcePath=/system/priv-app/Settings
    legacyNativeLibraryDir=/system/priv-app/
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值