1.recovery全量包更新的流程:
- 編譯:
build/envsetup.sh。
lunch 選擇16。
make otapackage
- 将blaze_tablet-ota-eng.xx.xx.zip更新包重名為update.zip,下載下傳到/cache目錄下
- 進入recovery模式
adb root
adb shell
echo "--locale en_US\n--show_text" > /cache/recovery/command
reboot recovery
系統重新開機,進入recovery模式,并啟動recovery程序,進入該程序後選中 "apply update from /cache"選項,系統會自動更新update.zip
- 錯誤列印:
Finding update package
Opening update package...
Verifying update package...
Installing update...
assert failed: !less_than_int(1312352025,getprop("ro.build.date.utc"))
E:Error in /sdcard/update.zip(status7)
說明更新包較舊導緻終止執行
-
解決方法:
修改build/core/Makefile
$(INTERNAL_OTA_PACKAGE_TARGET):$(BUILT_TARGET_FILES_PACKAGE) $(DISTTOOLS)
@echo "Package OTA: [email protected]"
$(hide) ./build/tools/releasetools/ota_from_target_files -v \
-p $(HOST_OUT) \
-k $(KEY_CERT_PAIR) \
-n \
-n 在更新時是否不檢查時間戳,預設要檢查,即預設情況下隻能基于舊版本更新
2.recovery增量包更新的流程:
- 在源碼根目錄下依次執行下列指令
build/envsetup.sh
lunch 選擇16
make
make otapackage
執行上面的指令後會在out/target/product/blaze_tablet下生成我們第一個系統更新包。
先将其命名為A.zip
- 在源碼中修改我們需要改變的部分,比如修改核心配置,增加新的驅動等等。修改後再一次執行上面的指令。就會生成第二個修改後生成的update.zip更新包。将其命名為B.zip。
-
以上面的A.zip 和B.zip包作為輸入,以update.zip包作為輸出。生成的update.zip就是最後需要的增量包。
具體使用方式是:将上述兩個包拷貝到源碼根目錄下,然後執行下面的指令。
./build/tools/releasetools/ota_from_target_files -i A.zip B.zip update.zip
出現的錯誤:
在執行上述指令時會出現未找到recovery_api_version的錯誤。原因是在執行上面的腳本時如果使用選
項i則會調用 WriteIncrementalOTAPackage會從A包和B包中的META目錄下搜尋misc_info.txt來讀
取recovery_api_version的值。但是在執行make otapackage指令時生成的update.zip包中沒有這個目錄
更沒有這個文檔。
-
解決的方法:
此時需要使用執行make otapackage生成的原始的zip包。這個包的位置在out/target/product/blaze_tablet/obj/PACKAGING/target_files_intermediates/目錄下,它是在用指令make otapackage之後的中間生産物,是最原始的更新包。将兩次編譯的生成的包分别重命名為A.zip和B.zip,并拷貝到根目錄下重複執行上面的指令:
./build/tools/releasetools/ota_form_target_files -i A.zip B.zip update.zip
在上述指令即将執行完畢時,生成update.zip更新包。
- 将上面生成的更新包update.zip,下載下傳到/cache目錄下
adb root
adb shell
echo "--locale en_US\n--show_text" > /cache/recovery/command
reboot recovery
-
系統重新開機:
進入recovery模式,并啟動recovery程序,進入該程序後選中 "apply update from /cache"選項,系統 會自動更新update.zip
echo "--locale en_US\n--show_text\n--send_intent" > /cache/recovery/command