java 差分升級_android OTA升級包制作【轉】

本文详细介绍了如何使用Java制作Android的OTA升级包,包括签名过程、使用Android打包命令生成完整升级包、修改OTA包的update-script和资源文件、以及如何制作差分升级包。还提到了在制作过程中可能遇到的问题和解决方法。
摘要由CSDN通过智能技术生成

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

生成的完整升級包會存放在outdebug argetproduct[project name]  下

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

生成的過程文件包在out/target/product/ardbeg/obj/PACKAGING/target_files_intermediates/目錄下,該文件可用於創建差分升級包

2.OTA包的修改

1)update-script

OTA包解壓后META-INFcomgoogleandroid目錄下有兩個文件

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]ootable ecovery

其中bootable ecoveryupdaterinstall.c

aHR0cHM6Ly9mdWNrLnRoaW5rc2Fhcy5jbi9nZXQvaHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvNDIwNDMyLzIwMTUwMS8yMDE4MDIwNDE1NjMxODIucG5n

該函數中注冊的子函數可直接在update-script腳本中調用

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

3)修改已產生的升級包

解壓縮update.zip,並根據上述規則修改update-script腳本和資源文件

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

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

3.OTA差分升級包

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

用於制作差分包的包文件在如下目錄下

out/target/product/[produce name]/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.zip

cp 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值