通过ADB清除数据/恢复出厂设置

60

基本上这是我的问题。

我有200多部运行原始安卓系统的手机需要被擦除(以擦除数据/恢复出厂设置的方式),然后安装一个新的ROM和一些额外的apk。

目前除了擦除数据部分,其他所有操作都可以通过一组命令的.bat文件自动完成。但就是无论如何我都想不出如何模仿或强制进入恢复模式来擦除数据。

我目前尝试过的事情:

  • 自己使用rm -r *在应该擦除数据的文件夹上进行擦除。这确实可以擦除数据,但是ROM不能正常工作并且会陷入引导循环中。
  • 尝试使用“adb input keyevent”来模仿按键。我不知道它们映射到哪里,因为它们基本上在UNIX shell中,并且即使在那里也没有“input”,因为操作系统还没有加载。
  • 尝试找到实际运行擦除/重置的文件/脚本,然后手动运行它。这可能是最简单的方法,因为它已经在某个地方为我编写了,但我只是找不到它隐藏在哪里,即使在像CWM之类的东西中也是如此。

如果有人有任何方法可以通过.bat文件或通过adb shell执行恢复出厂设置,我将非常感激。已经试了大约两天了,进展很小。


这个问题可能更适合在http://android.stackexchange.com上提问。 - Tyler
谢谢 :) 我实际上认为我已经解决了这个问题,所以我会更新这个问题,以防其他人需要并从谷歌中找到它。 - deadwards
这段代码对我有效:adb shell am broadcast -a android.intent.action.MASTER_CLEAR - Long Rainbow
emulator @avd_name -wipe-data 对我很有用。它可以从头开始重启设备。 - Nick Bull
对于第一个模拟器:avd_names="$(emulator -list-avds)"; emulator @"${avd_names%% *}" -wipe-data - Nick Bull
1个回答

63

经过一番搜寻,我最终下载了Android恢复部分的源代码。事实证明,你实际上可以向恢复模式发送命令。

 * The arguments which may be supplied in the recovery.command file:
 *   --send_intent=anystring - write the text out to recovery.intent
 *   --update_package=path - verify install an OTA package file
 *   --wipe_data - erase user data (and cache), then reboot
 *   --wipe_cache - wipe cache (but not user data), then reboot
 *   --set_encrypted_filesystem=on|off - enables / diasables encrypted fs

根据我找到的资料,以下是你可以使用的命令,但对于修改过的文件可能会有所不同。因此,使用adb,你可以执行以下操作:

adb shell
recovery --wipe_data

使用--wipe_data似乎做到了我所寻求的,这很方便,尽管我还没有完全测试过。

编辑:

对于仍在使用此主题的任何人,这些命令可能会根据您使用的恢复方式而更改。 如果您正在使用Clockword恢复,这些命令应该仍然有效。 您可以在/cache/recovery/command中找到其他命令。

有关更多信息,请参见此处: https://github.com/CyanogenMod/android_bootable_recovery/blob/cm-10.2/recovery.c


6
仅供参考 - 我的个人手机,三星Galaxy S2 I9100(我是一名开发者,但不是在安卓上)在尝试使用ROM管理器进行备份后停止响应。我甚至无法启动到恢复模式或下载模式。在搜索互联网后,我尝试使用Odin,但它没有识别手机。ADB有,然后我找到了这篇帖子。在使用这个命令之后,我的手机终于回应了!非常感谢,即使你不是故意的。我希望其他人能够通过我的评论找到您的帖子。 - H.Wolper
7
恢复:未找到。 Android调试桥版本1.0.31 | Droid 2 Global | CyanogenMod 7.2。 - earthmeLon
5
请尝试使用“wipe”命令。不过,您必须以root身份才能擦除数据(adb shell, suadb root)。如果您无法获取root权限,则此方法将无法使用。 - Artem Russakovskii
2
@daniel 你可能已经遇到过“recovery --wipe_data”导致“分段错误”的情况。 - kmonsoor
11
我发现在Android 4.3上我们需要使用另一个命令:adb shell wipe data。如果手机屏幕损坏但手机仍然可用,您可以通过“adb shell”登录到手机。 - kirsche40
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接