龔強
摘 要:針對使用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).
〔編輯:張思楠〕