android OTA升級包製作

来源:http://www.cnblogs.com/androidshouce/archive/2016/07/08/5652250.html
-Advertisement-
Play Games

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


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 6 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對應的版本里就能用該差分包升級了。 

 

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

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這個demo寫的是將集合視圖添加到滾動視圖中,實現可以滑動的效果。 (效果圖) 1.創建視圖,定義集合視圖和滾動視圖 2.初始化我們定義的集合視圖和滾動視圖 3.實現集合視圖的代理方法 4.結束! 此文是小編第一次書寫博客,有不足的地方還請大神指點改正。 ...
  • ...
  • ...
  • 最近想把之前自己做的一些好玩的項目共用到Github,網上找了一圈上傳教程,都感覺寫的太深奧、複雜,雲里霧裡,特把自己的方法紀錄如下: PS:這種方式一般適用於:開始做項目時,沒有直接在github上添加,等做到一半或做完才想添加的項目。 準備工作: 1、Github帳號 2、在Github上添加新 ...
  • 前言:昨天公司計劃把項目中的部分功能做出SDK的形式,供其他公司的產品使用,所以不得不重新研究一下單例模式。 為什麼單例 1、在記憶體中只有一個對象,節省記憶體空間。避免頻繁的創建銷毀對象,可以提高性能。避免對共用資源的多重占用。可以全局訪問。 2、確保一個類只有一個實例,自行實例化並向系統提供這個實例 ...
  • ■ 基本操作 啟動: oncreate onstart onresume back: onPause onStop onDestroy home: onPause onStop home後的啟動(未銷毀): onRestart onStart onResume 已銷毀後的啟動:onCreate on ...
  • 在android的應用層中,涉及到很多應用框架,例如:Service框架,Activity管理機制,Broadcast機制,對話框框架,標題欄框架,狀態欄框架,通知機制,ActionBar框架等等。 經常會使用到通知機制中的通知欄框架(Notificaiton),它適用於交互事件的通知。它是位於頂層 ...
  • 結合自身的實踐開發經驗總結出了22個iOS開發的小技巧,以非常歡樂的語調輕鬆解決開發過程中所遇到的各種苦逼難題,光讀著便已忍俊不禁。 1. TableView不顯示沒內容的Cell怎麼辦? 類似於圖1,我不想讓下麵的那些空顯示。很簡單,添加“self.tableView.tableFooterVie ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...