Android系統Recovery工作原理之使用update.zip升級過程分析
阿新 • • 發佈:2019-01-06
① 在main函式的開頭,首先將使用者設定的option選項存入OPTIONS變數中,它是一個python中的類。緊接著判斷有沒有額外的指令碼,如果有就讀入到OPTIONS變數中。
② 解壓縮輸入的zip包,即我們在上文生成的原始zip包。然後判斷是否用到device-specific extensions(裝置擴充套件)如果用到,隨即讀入到OPTIONS變數中。
③ 判斷是否簽名,然後判斷是否有新內容的增量源,有的話就解壓該增量源包放入一個臨時變數中(source_zip)。自此,所有的準備工作已完畢,隨即會呼叫該 指令碼中最主要的函式WriteFullOTAPackage(input_zip,output_zip)
④ WriteFullOTAPackage函式的處理過程是先獲得指令碼的生成器。預設格式是edify。然後獲得metadata元資料,此資料來至於Android的一些環境變數。然後獲得裝置配置引數比如api函式的版本。然後判斷是否忽略時間戳。
⑤ WriteFullOTAPackage函式做完準備工作後就開始生成升級用的指令碼檔案(updater-script)了。生成指令碼檔案後將上一步獲得的metadata元資料寫入到輸出包out_zip。
⑥至此一個完整的update.zip升級包就生成了。生成位置在:out/target/product/tcc8800/full_tcc8800_evm-ota-eng.mumu.20120315.155326.zip。將升級包拷貝到SD卡中就可以用來升級了。
四、 Android OTA增量包update.zip的生成
② 解壓縮輸入的zip包,即我們在上文生成的原始zip包。然後判斷是否用到device-specific extensions(裝置擴充套件)如果用到,隨即讀入到OPTIONS變數中。
③ 判斷是否簽名,然後判斷是否有新內容的增量源,有的話就解壓該增量源包放入一個臨時變數中(source_zip)。自此,所有的準備工作已完畢,隨即會呼叫該 指令碼中最主要的函式WriteFullOTAPackage(input_zip,output_zip)
④ WriteFullOTAPackage函式的處理過程是先獲得指令碼的生成器。預設格式是edify。然後獲得metadata元資料,此資料來至於Android的一些環境變數。然後獲得裝置配置引數比如api函式的版本。然後判斷是否忽略時間戳。
⑤ WriteFullOTAPackage函式做完準備工作後就開始生成升級用的指令碼檔案(updater-script)了。生成指令碼檔案後將上一步獲得的metadata元資料寫入到輸出包out_zip。
⑥至此一個完整的update.zip升級包就生成了。生成位置在:out/target/product/tcc8800/full_tcc8800_evm-ota-eng.mumu.20120315.155326.zip。將升級包拷貝到SD卡中就可以用來升級了。
四、 Android OTA增量包update.zip的生成