Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1385497
  • 博文数量: 478
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4833
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-28 11:12
文章分类

全部博文(478)

文章存档

2019年(1)

2018年(27)

2017年(21)

2016年(171)

2015年(258)

我的朋友

分类: Android平台

2015-11-11 20:35:27

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文件省略内容如下:


  1. <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"> 
  2. <sigs count="1"> 
  3. <cert index="0" /> 
  4. 阅读(1122) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~