Android OTA 差分包升級


原帖地址 http://quanminchaoren.iteye.com/blog/1344607

稍作修改,因為直接用會有些錯誤

 

根目錄下兩個命令:

1、make ——會生成系統的img文件,system.img,boot.img,userdata.img,recovery.img

2、make otapackage——會生成sd卡用的全部系統升級包,如msm8660_surf-target_files-eng.xxxx.zip

 

要生成差分升級包,需要先作出兩個全升級包,然后根據這兩個升級包做出差分升級包

1、制作全系統升級包

source目錄下:. build/envsetup.sh(.后有空格)

choosecom 1 1 7 eng

make

make otapackage(或m otapackage)

2、在用戶名下建立一個目錄,這個隨意,在哪里建都行

mkdir ~/OTA 

3、將編譯生成的out/target/product/msm8660_surf/obj/PACKAGING/target_files_intermediates/msm8660_surf-target_files-eng.xxxx.zip 拷貝並且更名放到目錄~/OTA/msm8660_surf-target_files-eng.A.zip

4、在代碼中做一些修改,

5、第二次make;make otapackage

6、第二次編譯生成的out/target/product/msm8660_surf/obj/PACKAGING/target_files_intermediates/msm8660_surf-target_files-eng.xxxx.zip 拷貝並且更名放到目錄/OTA/msm8660_surf-target_files-eng.tangzm_B.zip

7、在src根目錄下執行制作差分包的命令,必須在src根目錄下執行,因為ota_from_target_files.py這個腳本里面寫定了相對路徑的引用文件。

./build/tools/releasetools/ota_from_target_files -x pagesize=xxxx -k xxxx -d MMC -i <A包> <B包>  <差分包名>。

如: ./build/tools/releasetools/ota_from_target_files -x pagesize=4096 -k ~/project/build/target/product/security/testkey -d mmc -v -i ~/OTA/msm8660_surf-target_files-eng.tangzm_B.zip ~/OTA/msm8660_surf-target_files-eng.tangzm_B.zip ~/OTA/update.zip

 

~/OTA/update.zip  就是升級用的差分包。

 

注:

在源碼根目錄下采用步驟7中命令格式( ./build/tools/releasetools/ota_from_target_files -x pagesize=xxxx -k xxxx -d MMC -i <A包> <B包>  <差分包名>。)不好用,因為我的是廠家自定義編譯腳本,需要用到外部.py文件,所以修改了build/core/Makefile文件,該文件中默認好像執行./build/tools/releasetools/ota_from_target_files生成FullOtaPackage,我在調用位置采用步驟7命令格式保存修改,編譯,根據log顯示看到能夠進行A、B包的差分比較。

-x pagesize=4096 是設置pagesize的大小,因為執行程序的過程中需要這個參數,否則會報錯keyerror。                     還有一種情況不加-x,編譯時出現keyerror錯誤,可能是引用外部key-value時,key不存在導致(如:keyerror:'/recovery'),我編譯時折騰了一天,原因是編譯腳本是廠家自定義,里面包含android系統既存編譯命令m otapackage,在自定義的腳本中鍵值對為(recovery,recovery),而在調用build/tools/releasetools/ota_from_target_files中函數時傳的參數為"/recovery"。
-k 是在簽名的時候會用到的信息,不過貌似不加也可以成功,因為后面會執行java命令進行簽名
-d mmc 是指使用文件格式為ext4,默認為mtd,即yaffs2。因為我們這個系統使用了ext4文件系統的支持

-v 顯示具體命令

-i A.zip B.zip Update.zip 為產生增量包,后面跟着源文件和差分包的路徑名稱

不明確的話 ,可以直接打開ota_from_target_files 里面有各個命令的說明。

這個腳本被build/core/Makefile調用,因為Makefile中有引用外部變量所以不用特別設置,但是直接執行這個腳本則要設置import相關信息,好像很麻煩,還是用build/core/Makefile調用來的方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM