我正在尝试测试自己创建的一个新的Android系统级应用程序,该应用程序在执行设备出厂重置后会捕获各种系统事件挂钩。
通过Android Studio AVD Manager,我创建了多个模拟的Android TV设备,分别是Oreo(8.0.0)和Pi(9.0),但没有一个允许成功应用出厂重置。
我已执行的步骤:
~/Android/Sdk/emulator/emulator -avd Android_TV_1080p_API_26_Oreo_8.0.0_ -writable-system
adb root
adb remount
adb -e shell mkdir /system/priv-app/ftiApp
adb push app-debug.apk /system/priv-app/ftiApp/
adb install -r -d -t app-debug.apk
adb reboot
我可以在system apps目录中看到已安装的系统应用程序,这时我想应用出厂重置,以便将模拟设备重新踢回到应首次启动启动设置向导事件的状态。触发我的系统应用正在监听。
(对于Oreo 8.0.0),导航到以下菜单选项设置>存储和重置>恢复出厂设置,然后选择恢复出厂设置按钮始终会导致失败并显示以下日志消息:
09-07 12:13:57.911 5979-5979/? I//system/bin/uncrypt: received command: [--wipe_data
--reason=ResetConfirmFragment
--locale=en-US
] (57)
09-07 12:13:57.911 5979-5979/? E//system/bin/uncrypt: failed to set bootloader message: failed to find /misc partition
09-07 12:13:57.912 5979-5979/? I//system/bin/uncrypt: received 0, exiting now
09-07 12:13:57.912 1962-5908/system_process E/RecoverySystemService: uncrypt failed with status: -1
09-07 12:13:57.916 1962-5908/system_process E/MasterClear: Can't perform master clear/factory reset
java.io.IOException: Reboot failed (no permissions?)
at android.os.RecoverySystem.bootCommand(RecoverySystem.java:935)
at android.os.RecoverySystem.rebootWipeUserData(RecoverySystem.java:773)
at com.android.server.MasterClearReceiver$1.run(MasterClearReceiver.java:75)
09-07 12:14:06.572 1962-2893/system_process I/GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@7f1448f)
无法找到 / misc 分区似乎是问题的症结所在,但是我不知道如何解决该问题,因为这些模拟设备已被AVD Manager旋转了一部分使用标准图片的Android Studio?
(请注意,这是Android Studio 3.1.4的最新版本)
这些模拟设备不支持以此方式恢复出厂设置吗?还是这些设备的配置确实有问题,导致恢复出厂设置数据无法正常工作?