編輯:關於android開發
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的值而定。
升級時的進度條,升級哪些文件都是這個腳本裡指定的。如果需要修改打包的文件,這一般修改這個腳本或替換包裡資源文件為主
關於這塊網上描述的比較多,不再陳述了,可參考
1 2[實用教程]_關於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/[produce name]/obj/PACKAGING/target_files_intermediates/
因需要先刷到舊版本中才能使用差分包,故需要做版本管理的就要把中間文件和完整包都保存下來,分別在如下路徑(需要同時生成的匹配的版本)
out/target/product/[produce name]/obj/PACKAGING/target_files_intermediates/
out/target/product/[produce name]/
再用新舊obj目錄對應文件產生差分包
1 2 3 4 5 6mkdir 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對應的版本裡就能用該差分包升級了。
1 2 3
差分包制作過程中的錯誤
http:
//blog.csdn.net/kangear/article/details/23831431
對Android的惡意吐槽(勿看,有毒) 我認為android系統中有一個特惡心人的大敗筆。就是這個大敗筆造成了android系統的卡卡卡不停。 這個大敗筆就是對ac
安卓應用反編譯(二)-APK包反編譯淺析 第二章 APK包反編譯 被編譯器處理過的代碼和資源已經打包成了APK,有的甚至被轉化成了二進制文件。但是我們也有一些方法,把這些
【騰訊Bugly干貨分享】基於RxJava的一種MVP實現,buglyrxjava本文來自於騰訊bugly開發者社區,非經作者同意,請勿轉載,原文地址:http://de
ListView + PopupWindow實現滑動刪除,popupwindowlistview 原文:ListView滑動刪除 ,仿騰訊QQ(鴻洋_) 文章