首页文章android13恢复出厂设置命令 安卓恢复出厂设置命令安卓手机怎么恢复出厂设置「android13恢复出厂设置命令 安卓恢复出厂设置命令」

android13恢复出厂设置命令 安卓恢复出厂设置命令安卓手机怎么恢复出厂设置「android13恢复出厂设置命令 安卓恢复出厂设置命令」

时间2025-03-07 09:26:39发布yu分类文章浏览21
导读: 最近看恢复出厂的一个问题,以前也查过这方面的流程,所以这里整理一些AP+framework层的流程; 在setting-->备份与重置--->恢复出厂设置--->重置手机--->清除全部内容--->手机关机--->开机--->进行恢复...


      最近看恢复出厂的一个问题,以前也查过这方面的流程,所以这里整理一些AP+framework层的流程;

      在setting-->备份与重置--->恢复出厂设置--->重置手机--->清除全部内容--->手机关机--->开机--->进行恢复出厂的操作--->开机流程;


     Step 1:前面找settings中的布局我就省略了,这部分相对简单一些,直接到清除全部内容这个按钮的操作,

    对应的java类是setting中的MasterClearConfirm.java这个类,




通过上述的代码,可以看出,实际上点击清除全部内容的时候,如果前面勾选上格式哈SD卡,就会执行mEraseSdCard为true里面的逻辑,如果没有勾选,就执行mEraseSdCard=false的逻辑,其实就是发送一个广播,






        Step 2:这个广播接受的地方,参见AndroidManifest.xml中的代码,如下:





找这个MasterClearReceiver.java这个receiver,下面来看看这个onReceiver()里面做了什么操作:






这个里面主要的操作是:RecoverySystem.rebootWipeUserData(context);准备做重启的动作,告诉手机要清除userData的数据;


 Step 3:接着来看看RecoverySystem.rebootWipeUserData()这个方法做了哪些操作:




这个里面的广播可以先忽略不计,重点来看看bootCommand()这个方法,注意这个参数“--wipe_data --locale=”




这个方法的操作大致是“写节点/cache/recovery/command”,把传递过来的字符串写进去;然后调用PowerManager进行重启操作,reboot();


 Step 4:接着我们来看看PowerManager的reboot方法做了哪些操作:





这个调用到了PowerManagerService.java这个类的reboot方法中了:





重点来看看shutdownOrRebootInternal()这个方法,

由于传递过来的shutdown为false,所以执行ShutdownThread.reboot(mContext, reason, confirm);reason:recevory

下面调用到ShutdownThread


   Step 5:这个追踪ShutdownThread.reboot()这个方法,这就有点像破案电影,一点一点查找罪犯的难点;

来窥视一下这个类:



这个里面做的操作就是给这个变量mRebootReason“recevory”,重点调用shutdownInner()这个方法;


    看beginShutdownSequence()这个方法吧,重点调用到这个方法里面去了,来瞅瞅这个方法:



      这段代码有句话会影响关机动画播放不完


      解决办法

          (1)“可以把这个screenTurnOffTime时间乘以2,这个时间看log是5000毫秒,就是5秒,乘以2就是10秒,大概就能播放完全关机动画了。”

          (2)把这句话注释掉,但是有可能会引起问题,导致恢复出厂设置的时候没有进行恢复出厂的操作。目前正在追踪此问题;


      这段代码中还有影响关机动画是否走客制化的关机动画,如果ro.operator.optr这个属性配置的是CUST,则会走客制化的关机动画,否则走系统默认的关机动画;






      然后重点看 sInstance.start();这个方法,就走到了run()方法里满了;


          Step 6:



      重点看running()这个方法:

      下面这个方法比较长,来分析一下:




      这个方法做了一些列的操作,会关闭一些操作,如:


      重点看  rebootOrShutdown(mReboot, mRebootReason);这个方法;准备重启的方法;


       Step 7:来看看rebootOrShutdown()这个方法:



      关机震动也在这个方法里面;这个方法重点看PowerManagerService.lowLevelReboot(reason);

        Log.i(TAG, "Rebooting, reason: " + reason);这句log也很重要,可以有助于我们分析代码;


          Step 8:下面来看看PowerManagerServices.java这个类的lowLevelReboot()这个方法:



      这个方法调用到了native里面,后面的操作我就不分析了。。。


      大致流程是:

         关机,然后开机,底层判断节点后进入恢复出厂模式,recevory.img释放完全后,进入开机的流程。。。

      以后有进展再补充这部分的流程,整个过程大致就是这个样子了,里面的细节有好多没有分析,大家可以自行研究。。。,抛砖引玉的目的达到了。







      温州版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com

      展开全文READ MORE
      设置恢复
      小米“新卷王”诞生,骁龙8Gen2旗舰跌至2859元,12GB+512GB+IP68小米新手机「小米“新卷王”诞生,骁龙8Gen2旗舰跌至2859元,12GB+512GB+IP68」 怎么样远程删除安卓手机中的所有数据?安卓手机怎么恢复出厂设置「怎么样远程删除安卓手机中的所有数据?」