android OTA升級包製作

來源:互聯網
上載者:User

標籤:

0.簽名

java -Xmx2048m -jar out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 

這個key是debug模式下自動產生的key

你也可以通過openssl建立自己私人的key 

 

OTA打包過程中會自動使用產生的key進行簽名,OTA升級包裡簽名的位置如下

│ [OTA PACKAGE]

│ └─META-INF

│ CERT.RSA

│ CERT.SF

│ MANIFEST.MF

│└─com

│---└─android

│------otacert

 

1.使用Android的打包命令製作oTA升級包

 整個項目編譯完成後再執行make otapackage

產生的完整升級包會存放在out\debug\target\product\[project name]\  下

具體名字根據make otapackage的install來確定

產生的過程檔案包在out/target/product/ardbeg/obj/PACKAGING/target_files_intermediates/目錄下,該檔案可用於建立差分升級包

 

2.OTA包的修改

1)update-script

OTA包解壓後META-INF\com\google\android目錄下有兩個檔案

update-binary是一個二進位檔案,相當於一個指令碼解譯器,能夠識別updater-script中描述的操作。該檔案在Android源碼編譯後out/target/product/tcc8800/system bin/updater產生,可將updater重新命名為update-binary得到。
該檔案在具體的更新包中的名字由源碼中bootable/recovery/install.c中的宏ASSUMED_UPDATE_BINARY_NAME的值而定。

updater-script:此檔案是一個指令檔,具體描述了更新過程。我們可以根據具體情況編寫該指令碼來適應我們的具體需求。該檔案的命名由源碼中bootable/recovery/updater/updater.c檔案中的宏SCRIPT_NAME的值而定。

升級時的進度條,升級哪些檔案都是這個指令碼裡指定的。如果需要修改打包的檔案,這一般修改這個指令碼或替換包裡資源檔為主

關於這塊網上描述的比較多,不再陳述了,可參考

[實用教程]_關於ROM的updater-script指令碼詳解http://wenku.baidu.com/link?url=PBCuu50VRxDzx_1wb5JfyZH-oURgYhMTyDVq5SGKsPZqfP3wW6DbegiFqszYJVzP3037osTX-aEFmsAx5nnMH6CYcJOuDAXo1jm0BfROmi3

 

2)recovery代碼

[src path]\bootable\recovery

 

其中bootable\recovery\updater\install.c 

該函數中註冊的子函數可直接在update-script指令碼中調用

部分嵌入式產品中,bootloader,開機畫面等分區的燒寫讀取都是自己定義的,需要更新這種分區就需要在註冊函數裡,增加私人的函數

 

3)修改已產生的升級包

解壓縮update.zip,並根據上述規則修改update-script指令碼和資源檔

重新打包,打包時記住一定要用儲存模式打包,千萬不要選擇有任何壓縮內容相關的方式。否則簽名會失敗

再參考第0條手動簽名新的包檔案刷機就可以了

 

3.OTA差分升級包

先 make otapackage 分別製作新舊兩個包。

用於製作差分包的包檔案在如下目錄下

out/target/product/ardbeg/obj/PACKAGING/target_files_intermediates/

 

因需要先刷到舊版本中才能使用差分包,故需要做版本管理的就要把中間檔案和完整包都儲存下來,分別在如下路徑(需要同時產生的匹配的版本)

out/target/product/[produce name]/obj/PACKAGING/target_files_intermediates/ 

out/target/product/[produce name]/

 

再用新舊obj目錄對應檔案產生差分包

mkdir OTA/cp xxxx_obj.zip  OTA/old_obj.zipcp yyyy_obj.zip OTA/new_obj.zip//網上建議在原始碼根目錄運行產生工具,據說是裡面使用了根目錄相對路徑./build/tools/releasetools/ota_from_target_files -v -n -i OTA/old_obj.zip OTA/new_obj.zip OTA/diff.zip

這樣就產生了差分包,在old product對應的版本裡就能用該差分包升級了。 

 

差分包製作過程中的錯誤http://blog.csdn.net/kangear/article/details/23831431

  

 

android OTA升級包製作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.