浅记一下冻结应用后无法开机的解决办法

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其他简易解决办法直接重刷一遍完整包就行了,数据啥的都不会丢失.

不想要数据的话,双清也能行.

开一家母婴用品店要多少钱
原神桦木在哪里多