-
浅记一下冻结应用后无法开机的解决办法
2026-01-15 14:53:48
前言办法很多,我记得我很早之前弄的时候有一种简便方法,但时间一长不太记得清,碰巧正好遇到个朋友有这个问题,于是记录一下解决过程.
碰巧遇到Android 12新特性:XML优化成Binary XML了.文件大小减少了大约2.4倍,读取速度提高了4.3倍.更多参考Android ABX
坏处就是修改起来有点麻烦了.😅不过问题不大,版本低于12的修改起来简单多了.所以修改版本>=12的话前提第3点就尤为重要.
虽然本人之前搞Android系统比较熟练,但毕竟转IOS很久了.不是特别熟悉了😂
冻结错误开不机一般问题表现为卡二屏(即跳过一屏加载引导画面),这种问题可以初步确认是系统问题.
如果只是二屏加载时间长,可以查看magsik模块是否过多等等不玩Android了,不多说了
本方法前提(前3点必备):
解锁BootLoader (如果你是华为手机,除了交钱有可能解决外基本上没其他办法了.另外,华为手机不配搞机.原因有很多.)刷入支持解密的第三方REC(Recovery)有一定智力基础和动手能力.(可选,如果满足更简单些)支持连接你手机的数据线,支持连接手机的PC且正确安装了相关驱动程序并(也是可选的:)正确配置了ADB解决过程进入恢复模式(Recovery Mode)电源+音量上键.出现画面松开电源键即可.(本操作可能不是对所有机型适用,至少对大部分手机是适用的.)
满足前提第4点但未配置ADB:自行操作:
将/data/system/users/0/package-restrictions.xml(0是指的userid)复制到/sdcard(主要是方便在电脑上修改)
然后将此文件(如图所示)复制到电脑上进行下面的修改.
如果你的安卓版本低于12或xml未采用abx格式:打开此文件,你会看到一些受限制的应用的包名和应用的状态等.比如某个APP处于disable状态,或者某个APP具有更高的优先级等
我们主要关注它的状态即enabled的值.
数字为3时是禁用状态,为1时是状态正常.如果你清楚冻结了某个应用而无法开机的包名,只需修改出问题的即可.而不必全部修改.
如果不清楚,将全部enabled=“3”替换为enabled="1"即可.
修改完成后将文件覆盖回去,然后再剪切并覆盖到/data/system/users/0/package-restrictions.xml并修改它的权限为-rw-rw----(即只有Owner和Group有读Read和写Write权限其余都没有.)数字表示:0600
然后重启即可解决问题.
如果你的安卓版本>=12或xml采用abx格式:下载该开源项目
使用Python通过命令来将abx转化可读的xml
然后参考上面👆的修改方式进行修改即可.
修改完后,
使用Java通过运行Main.java带上参数(可读xml的文件路径)转化为abx格式然后再覆盖回去.之后操作.参考上面👆
以下为我使用IntelliiJ IDEA运行的命令和相关截图.仅供参考!
1/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=49316:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/lanyun/Downloads/makeabx/src/out/production/makeabx com.ccl.abxmaker.Main /Users/lanyun/Downloads/ccl_abx/package-restrictions.xml
满足前提第4点且配置ADB:如果你的安卓版本>=12或xml采用abx格式请参考上面👆的办法解决.
方法一:pull拉取文件,命令运行.
1adb -d pull /data/system/users/0/package-restrictions.xml xx(为你的目录,例如C:\或者.即当前目录)参考上面👆内容修改后再push回去.
123adb -d push “xx(本地xml文件的路径)” /data/system/users/0/chmod 0660 package-restrictions.xmlreboot #重启完成✅方法二(本人未试过,理论可行):adb shell pm list packages 打印设备上的所有软件包,若使用–user参数则查询用户的空间的包
adb shell pm list packages -d 输出被禁用的软件包
冻结(禁用)应用命令:adb shell pm disable-user +应用名
解冻(启用)应用命令:adb shell pm enable +应用名
其他ADB命令自行搜索🔍.
方法三:运行以下命令
1234adb shell #之后命令需以root身份运行.若不是root身份可能需要su一下cd /data/system/users/0/find ./ -name 'package-restrictions.xml' | xargs perl -pi -e 's|enabled="1"|enabled="3"|g'reboot不满足前提第4点:如果你的安卓版本>=12或xml采用abx格式请参考上面👆的办法解决.
可用在REC终端中使用以下命令解决.
123cd /data/system/users/0/find ./ -name 'package-restrictions.xml' | xargs perl -pi -e 's|enabled="1"|enabled="3"|g'reboot其他简易解决办法直接重刷一遍完整包就行了,数据啥的都不会丢失.
不想要数据的话,双清也能行.