龚强
摘 要:针对使用Android系统的智能电视进行恢复出厂设置时重置速度慢的情况进行了研究和分析,从其重置原理入手,通过简化备份、导入、执行等设置方法以实现该系统的快速恢复出厂设置。实践证明,该方法有效,供相关人员参考和借鉴。
关键词:Android系统;电子产品;出厂设置;USB
中图分类号:TN949.2 文献标识码:A DOI:10.15913/j.cnki.kjycx.2017.08.113
随着消费类电子产品应用的不断发展,Android系统已成为电子产品是否能脱颖而出的重要决定因素,很多产品在追求即开即用的效果。在这样的行业需求下,针对Android系统,设计并实现了一种基于该系统恢复出厂设置的快速重置方法,以提高基于该平台的智能电视产品的开机启动速度。
1 Android系统恢复出厂设置原理分析
1.1 Android系统的原生恢复出厂设置
如图1所示,从Android系统接收到用户恢复出厂设置请求后,过程包含执行恢复出厂设置和重新启动系统各两次,最后重新系统初始化后才进入到待机模式。
恢复出厂设置步骤一和恢复出厂设置步骤二是整个恢复出厂设置过程的两个关键步骤。
1.1.1 执行恢复出厂设置步骤一
这是工厂应用程序接收到恢复出厂设置请求后完成的第一个关键步骤,主要完成了以下3项内容:①清除工厂频道信息;②将系统语言设置为默认的语言(比如英语);③打开开机向导菜单。
1.1.2 执行恢复出厂设置步骤二
这是经过第一次系统重启后进入到恢复(Recovery)模式下所要完成的主要步骤,在这里主要完成的动作是清除用户数据,但清除用户数据采用的方法是用格式化命令对用户数据区进行标准格式化。
1.2 Android系统快速恢复出厂设置
1.2.1 Android系统快速恢复出厂设置流程
在Android系统的快速恢复出厂设置流程中,当系统接收到恢复出厂设置请求后,直接调用执行恢复出厂设置的两个步骤,最后发送Power事件使系统进入待机状态,省去了两次系统重新启动及初始化过程,同时对恢复出厂设置步骤二的实现方式进行了优化,从而大大缩短了恢复出厂设置的总体时间。
1.2.2 原生与快速模式的比较
在两种模式下,恢复出厂设置步骤一所执行的动作完全相同,恢复出厂设置步骤二所完成的动作也都是清除用户数据,但主要区别在于采用的方法不同——原生模式采用的方法是直接对用户数据进行格式化处理,快速模式采用的方法则是从备份区中将原始初始数据复制过来覆盖当前用户数据。两种方法都达到了恢复出厂设置的目的,但效率不同。恢复出厂设置步骤二的详细比较如表1所示。
2 Android系统快速恢复出厂设置的实现
2.1 备份用户初始数据
由于快速恢复出厂设置采用的方法是从备份区复制数据过来覆盖当前用户数据,因此,在编译Android系统时需要额外保存一份完整的用户数据,它的内容与当前用户区被变更前的初始数据完全相同,但永远不会再被更改,相当于具有只读属性。具体实现方法是当前电视首次上电正常开机后,但还没有进行更改任何设置前,在串口命令模式下执行以下指令:
「busyboxcp-Rdp/data/tvcustomer/」
将/data目录下的所有数据完整复制到/tvcustomer目录下备份,以便在快速模式下执行恢复出厂设置步骤二时使用。
2.2 导出tvcustomer.img映像文件
接着上一个步骤,将一个存储空间足够大的U盘插入到电视上的USB接口,在电视端的串口中执行如下指令导出tvcustomer.img映像文件:
「busyboxddif=/dev/block/mmcblk0pxx of=/mnt/usb/sda1/
tvcustomer.img」
其中,mmcblk0pxx是tvcustomer分区所对应的设备,不同智能电视平台会有所差异,可用「ls-l」查询获得;sda1代码U盘挂载在USB接口1,如果不是USB接口1,则要进行更改。
2.3 重新生成emmc.bin文件
emmc.bin文件是编译Android系统最终编译生成的用于烧录eMMC Flash的二进制文件。将上一步获取的包含备份数据的tvcustomer.img复制到Android系统编译环境下的相应目录下,重新编译生成emmc.bin,这样工厂批量烧录的所有eMMC Flash都将包含了完整的备份数据。
2.4 执行快速恢复出厂设置
2.4.1 注册恢复出厂设置服务
由于在恢复出厂设置步骤二中涉及到从备份区复制数据覆盖当前用户数据,需要一定的权限及优先级保证,因此,在系统初始化时注册了一个系统服务,具体方法是在init.rc文件定义以下factory_reset服务:
service factory_reset/system/bin/factory_reset.sh
class main
user root
group root
disabled
oneshot
console
其中,服务名称为factory_reset,服务的执行脚本为factory_reset.sh,其他字段都是对本服务属性进行的一些可选描述,可查询相关资料了解。
2.4.2 执行快速恢复出厂设置过程
当factory.apk接收到用户的恢复出厂设置请求后,可以在处理代码中执行以下语句来启动factory_reset服务:
private StringFactory_reset_Service="factory_reset";
…
SystemProperties.set("ctl.start",Factory_reset_Service);
通過设置系统属性"ctl.start"将自动启动系统服务factory_reset,从而进一步触发系统调用可执行脚本factory_reset.sh,完成清除用户数据动作。
2.4.3 可执行脚本factory_reset.sh分析
在这个可执行脚本中,最主要需要完成以下2个任务。
从备份区还原数据到当前用户区:
busybox cp-Rdp/tvcustomer/data/*/data/
发出一个Power事件,使系统进入到待机模式:
input keyevent26
从KeyEvent.java的如下定义可知,26正是Power事件:
/**Key code constant:Power key.*/
public static final intKEYCODE_POWER=26;
至此,整个完整的快速恢复出厂设置过程已经分析完毕。
3 总结
综上所述,随着Android智能系统的不断深化应用,目前,众多的电视产品都有Android智能系统。因此,为了降低制造成本及提高生产效率,我们有必要缩短恢复出厂设置的时间。本文探讨了从其重置原理入手,通过简化备份、导入、执行等设置方法缩短恢复出厂设置的时间,并通过实践认为此方法具有推广应用的价值。
参考文献
[1]崔伟东,贵靖.基于Android手机的数据恢复途径的应用[J].速读旬刊,2015(11).
[2]付星,龙超.Android智能电视三屏互动的设计与实现[J].中国高新技术企业,2012(07).
〔编辑:张思楠〕