- 问题
设备无法恢复出厂设置
09-02 16:52:15.024 620 620 D MasterClear: FactoryRecoveryMode = 1
09-02 16:52:15.026 620 620 W MasterClear: !!! FACTORY RESET !!!
09-02 16:52:15.030 620 620 I MasterClear: NOT wiping external storage; starting thread Reboot
09-02 16:52:15.032 620 3532 I MasterClear: Calling RecoverySystem.rebootWipeUserData(context, shutdown=false, reason=MasterClearConfirm, forceWipe=false, wipeEsims=false)
09-02 16:52:15.032 620 620 D BroadcastQueue: Finished with ordered broadcast BroadcastRecord{aa67b6a u0 android.intent.action.FACTORY_RESET} receivers:([ResolveInfo{68e27d3 android/com.android.server.MasterClearReceiver p=100 m=0x108000}]) take 34ms in [foreground], remains -1
09-02 16:52:19.278 620 3452 E MasterClear: Can't perform master clear/factory reset
09-02 16:52:19.278 620 3452 E MasterClear: java.io.IOException: Reboot failed (no permissions?)
09-02 16:52:19.278 620 3452 E MasterClear: at android.os.RecoverySystem.bootCommand(RecoverySystem.java:1312)
09-02 16:52:19.278 620 3452 E MasterClear: at android.os.RecoverySystem.rebootWipeUserData(RecoverySystem.java:1010)
09-02 16:52:19.278 620 3452 E MasterClear: at com.android.server.MasterClearReceiver$1.run(MasterClearReceiver.java:123)
-
调试分析
参看 Android 13 aosp 恢复出厂设置流程
在frameworks/base/core/java/android/os/RecoverySystem中的bootCommand()抛出IOException(“Reboot failed (no permissions?)”)初始版本未配置好默认系统的Selinux
-
解决
关闭默认Selinux策略
adb shell
su
echo 0 > /sys/fs/selinux/enforce