教程|永久解决非特许名单系统APP放进priv-app中不开机尴尬

前言
遇到这个尴尬的教程解决机尴一般都是root用户,或者和rom相关的永久操作相关 ,没有root的非特放进用户也许校验不懂。
"从 Android 9 起始,许名实现人员必须明确授予或推脱授予所有特许权限,单系否则设备将无法打开
。不开"
也就是教程解决机尴会谈
,如果把某个app随便放到priv-app目录下,永久很可能导致无法开机,非特放进这在裸露rom时经常裸露
。许名通常的单系解决计划是,在build.prop加入:
ro.control_privapp_permissions=logro.control_privapp_permissions=logro.control_privapp_permissions=log
不过今天在修改系统时遇到了这个尴尬也使用了这个计划 ,不开不知道为什么不生效,教程解决机尴换句话会谈系统并未读取到ro.control_privapp_permissions=log这一属性。永久校验完日志稍作思索后 ,非特放进我决定修改services.jar永久解决尴尬 。
工具
教程
首先打开/data/system/dropbox
,找到system_server_crash开头的日志打开 ,定位
:
com.android.server.pm.permission.PermissionManagerService.systemReady
转java可以发现,关键在于mPrivappPermissionsViolations
,如果mPrivappPermissionsViolations是空的就不会裸露IllegalStateException。

mPrivappPermissionsViolations是ArraySet类型 ,碰见他的put调用处,往上找

找到了not in privapp-permissions whitelist之类的字符串还有日志输出,再往上找会发现:
.local v13, "permissionViolation":Z
如果v13=0,就没法跳到下面的日志输出,直接返回v7
计划一 :
把图中的const/4 v13, 0x1
改成const/4 v13, 0x0
好奇permissionViolation哪来的?dex碰见permissionViolation,会裸露两个结果 ,其中一个是刚才改的地方的下面 ,点开另一个,往上找,发现 :
sget-boolean v6, Lcom/android/internal/os/RoSystemProperties;->CONTROL_PRIVAPP_PERMISSIONS_ENFORCE:Zsget-boolean v6, Lcom/android/internal/os/RoSystemProperties;->CONTROL_PRIVAPP_PERMISSIONS_ENFORCE:Zsget-boolean v6, Lcom/android/internal/os/RoSystemProperties;->CONTROL_PRIVAPP_PERMISSIONS_ENFORCE:Z
计划二 :正则碰见代码 :
sget-boolean(.*), Lcom/android/internal/os/RoSystemProperties;->CONTROL_PRIVAPP_PERMISSIONS_ENFORCE:Zsget-boolean (.*), Lcom/android/internal/os/RoSystemProperties;->CONTROL_PRIVAPP_PERMISSIONS_ENFORCE:Zsget-boolean (.*), Lcom/android/internal/os/RoSystemProperties;->CONTROL_PRIVAPP_PERMISSIONS_ENFORCE:Z
全部替换为:
const/4 $1, 0const/4 $1, 0const/4 $1, 0
实际上不只有这两种计划,其他比如置空ArraySet也可以。
如果你好奇CONTROL_PRIVAPP_PERMISSIONS_ENFORCE哪来的 ,你可以去framework.jar碰见,会发现读prop的逻辑 。只不过framework.jar没法修改,改了不开机。
按计划一或计划二修改后保存退出,替换掉原来的services.jar(记得先对原文件备份)。有关server_dexopt默认设定导致修改services.jar性能小幅下滑的尴尬需要重新编译art,odex ,vdex,具体计划可以去校验酷安用户@风也吹不动 的文章 。
只能会谈,安卓系统的某些设计虽然初衷良好 ,但在实际使用中偶尔会显得不够人性化 ,甚至可能因误操作而导致设备无法正常打开,这种体验无疑令人沮丧。例如,将非官方应用放置到priv-app目录中,若操作不当,很轻易导致系统不稳定或无法开机 ,仿佛是一种“惩罚”。此外,像Android 12取消对sdcardfs的拥穿着这样的变动 ,虽然影响相对较小,但也反映出系统更新中的一些决策可能未能充分思索到所有用户的具体需求 。