http://lhc180.blog.51cto.com/316940/768929
在Aandroid系统启动后,Android系统会把APK的资源文件解压到系统的/data/app; 启动OOBE(开机设置程序);第一次启动与通常的启动是不同的。
在工厂生产系统时,为了测试产线的设备,必须需要开机测试。但是一但启动系统,产品到客户手中就不是第一次启动了。如果重新烧写系统,又比较耗费时间。为了解决这个矛盾,需要在生产线上,开机测试后清除第一次启动痕迹。
基本的方法如下:
1 在应用层,写一个小app,发出清除痕迹的命令。
2 在server层,添加一个ResetFactoryReceiver.java;接受应用层的“清除痕迹“的命令。
3 在recover层,添加功能reset-factory,处理“清除痕迹“的实现。具体就是删除/data/目录下面的所有内容,保留自己的备份文件夹。因为recover模式下,没有删除文件夹的功能函数,需要我们自己递归删除文件。
4 删除之后直接关机。具体代码如下:
1 的实现:发一个intent即可;
2 的实现;在/data/system/packages.xml文件,记录了文件启动的类名,只启动一次的程序OOBE,有属性disabled-components
删除disabled-components 属性,就可以让这个程序重新开机启动:
packages.xml文件省略内容如下:
-
<package name="com.android.oobeshell" codePath="/system/app/OOBESHELL.apk" nativeLibraryPath="/data/data/com.android.oobeshell/lib" flags="1" ft="134b20d6348" it="134b20d6348" ut="134b20d6348" version="13" userId="10016">
-
<sigs count="1">
-
<cert index="0" />
-
阅读(1117) | 评论(0) | 转发(0) |