Android OTA 差分包升級

以前作的差分包升級任務,期間調查並遇到的問題,總結分享一下,備用:)java

根目錄下兩個命令:android

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

二、make otapackage——會生成sd卡用的所有系統升級包,如msm8660_surf-target_files-eng.xxxx.zipui

 

要生成差分升級包,須要先做出兩個全升級包,而後根據這兩個升級包作出差分升級包spa

一、製做全系統升級包ip

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

choosecom 1 1 7 eng源碼

makeit

make otapackage(或m otapackage)編譯

二、在用戶名下創建一個目錄,這個隨意,在哪裏建都行

mkdir ~/OTA 

三、將編譯生成的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

四、在代碼中作一些修改,

五、第二次make;make otapackage

六、第二次編譯生成的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

七、在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調用來的方便

相關文章
相關標籤/搜索