admin管理员组文章数量:1122871
android 恢复出厂 自动恢复文件夹,Android恢复出厂设置
恢复出厂设置核心代码:sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));
即发送一个广播,需要在AndroidManifest.xml配置
android:permission="android.permission.MASTER_CLEAR"
android:priority="100" >
并加入权限
基本上以上就可以实现恢复出厂设置的。系统的设置功能就是这样完成恢复出厂设置的,但是这个过程中有很多问题,主要是因为权限造成的。
最明显的问题是,添加android.permission.MASTER_CLEAR权限时会报错。Permission is only granted to system apps
这里就说明了我们自己实现恢复出厂设置和系统设置恢复出厂的区别
这个错误很好解决,只需要 project\clean 一下就去掉错误了
但是运行程序时,当然不会恢复出厂啦,提示是权限不足,E/AndroidRuntime(2562): java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.MASTER_CLEAR_NOTIFICATION from pid=2562, uid=10027
根据提示可以看出是广播的权限,但是我们已经声明了权限android:permission="android.permission.MASTER_CLEAR"
在android/platform/frameworks/base/core/res/AndroidManifest.xml文件中,可以看到
当然还有很多类似的
也就是说我们不能使用这个广播,但是没有其他办法的情况下只能铲除这块石头
直接把这条注释掉,然后重新编译系统,烧录,然后就能够前进一步
继续运行会发现新的错误E/MasterClear(1060): Can't perform master clear/factory reset
E/MasterClear(1060): java.io.FileNotFoundException: /cache/recovery/command: open failed: EACCES (Permission denied)
依然是权限问题,即没有/cache/recovery/文件夹的操作权限
网上有好几种解决办法,我只说我最终解决问题的办法(1)AndroidManifest.xml添加android:sharedUserId="android.uid.system"
(2)Android.mk添加LOCAL_CERTIFICATE := platform
此时,程序是不能安装的,提示错误:
Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
大概意思就是要给apk添加系统权限
我用系统自带
在platform/build/target/product/security/中找到platform.pk8 platform.x509.pem等签名文件
signapk.jar:由/platform/build/tools/signapk/编译产出,可以在/out/host/linux-x86/framework/中找到
把这几个文件与apk放到同一目录下,命令行执行
java -jar signapk.jar platform.x509.pem platform.pk8 FactoryTest.apk FactoryTest_signed.apk
把MyFactoryTest_signed.apk安装后,发现任然不能安装,错误
Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]
采用另一种方法,用
mm命令
在Android源码环境下编译得到apk将eclipse中的项目MyFactoryTest整个拷贝到android/platform/packages/apps/目录下
在android源码根目录下执行:source build/envsetup.sh
到刚才的项目目录下(cd android/platform/packages/apps/MyFactoryTest)执行:mm
安装android/platform/out/target/product/mt8658sdk/system/app/MyFactoryTest1.2.apk
出现错误Failure [INSTALL_FAILED_DEXOPT]
这是因为在system\app下面的apk是经过优化的,而dex文件不会打包到apk中,dex文件会被优化后,生成odex文件。
下面就是程序经编译之后,在workspace/out/target/product/generic/system/app/下生成的.odex和.apk两个文件Install: out/target/product/generic/system/app/xxx.odex
Install: out/target/product/generic/system/app/xxx.apk
这样安装apk时,就会缺少dex文件,导致报错[INSTALL_FAILED_DEXOPT]。
找到未优化过的apk,即在out/target/product/generic/obj/APPS/下找到对应的APP:package.apk.unaligned
当然可以重命名一下package.apk.unaligned ————>FactoryTest.apk
安装后完成
本文标签: android 恢复出厂 自动恢复文件夹Android恢复出厂设置
版权声明:本文标题:android 恢复出厂 自动恢复文件夹,Android恢复出厂设置 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1704543292a628145.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论