android平台刷機包的製作研究

2021-08-25 15:00:28 字數 1943 閱讀 2688

最近有朋友問偶如何製作android平台的刷機包的問題。總算說服自己研究一下如何製作乙個android平台的刷機包,可能我了解的方法還不是很全面,也走了不少的彎路,但是以此做為一串探索的足跡,希望能為來者節約寶貴的時間,也請對此感興趣的各位同仁盡量避免偶曾經犯過的錯誤。

在此先要明確宣告一下:

由於android平台的更新換代過於頻繁,偶的做法不一定好用,也不一定完全正確(只是記錄一下偶在自己的nexus one上面做的一些實驗而已)。依照偶的做法出現了您的手機出現任何問題,偶都是不負責的喔!!

英文好的朋友可以不必看著偶聒噪,直接看英文官方的參考**即可:

... re-pack_boot_images

只用android源**做一些簡單實驗的朋友可以參考下面這幾個**:

說起android刷機包,聽起來非常神秘,實際上它僅僅是乙個經過數字簽名的zip壓縮包而已。如果要自己製作刷機包,則必須了解刷機包的基本工作原理,偶首先從android系統的啟動說起:

android系統啟動的時候,首先會進行一些諸如硬體自檢之類的操作,這些操作完成以後(至少它應該知道當前的機器有沒有電),會檢查一下當前手機按鍵的狀態(接下來就是所謂刷機模式切換了,不同的android手機有不同的按鍵組合用來進入刷機模式),如果此時按鍵狀態處於刷機組合,那麼系統會呼叫rom裡面的乙個叫做recovery的程式(這時就是進入了所謂的刷機程式了,它只是乙個工具性質程式,用於檢查刷機包的完整性和數字簽名的合法性。對於目前大多數root過的機器而言,數字簽名的合法性都不會成問題,然後由recovery程式將刷機包進行解壓,然後把刷機包裡面的檔案寫入到rom中去,以此完成刷機過程);如果此時按鍵沒有標明是刷機模式,那麼系統會建立記憶體盤,開始從rom裡面載入相應的檔案系統,並把相關的檔案拷貝到記憶體盤中,進而引導linux啟動,然後是啟動虛擬機器dalvik,然後就是建立工作程序載入和執行framework,然後就會看到待機的畫面。當然在這個過程中還發生了許多事情,啟動了許多服務,為了簡化起見,對於啟動過程偶只講解到此,感興趣的朋友可以自己結合著linux的啟動過程加以對比來學習。

現在來總結一下,實際上刷機包就是乙個rom檔案的壓縮包,進入刷機模式後,recovery程式會把刷機包裡面的檔案寫入rom儲存區替換rom儲存區的原有檔案;當下次啟動手機的時候,會從rom中載入剛剛替換過的檔案,並利用這些檔案來啟動和執行系統。這就是刷機包的全部功能和作用,看不懂的朋友可以反覆看幾次,刷機的本質就是檔案的覆蓋和替換操作,偶相信各位一定能看懂!

ok,現在大家已經知道rom檔案的zip壓縮包就是所謂的刷機包。製作刷機包的過程就是準備這些檔案,然後重新把這些檔案壓縮成乙個zip包的過程,在製作的最後,使用簽名工具簽個名,就可以測試和發布刷機包了。雖然說起來就是一句話的事情,但是實際上準備這些檔案的過程是非常痛苦和漫長的。

那麼update.zip壓縮包裡面的都包含哪些檔案?這些檔案又都是如何做出來的呢?hoho,現在開始漸漸接觸到問題的本質了,解壓縮這個update.zip壓縮包以後我們可以看到兩個目錄和乙個檔案:

boot.img <---檔案,這是編譯核心源**生成的核心映像,然後與android原始碼編譯出來的ramdisk.img一起通過mkbootimg工具建立出來的,圖省事的朋友也可以從網上其他的刷機包裡面拷貝乙個能用的出來即可,基本上都差不多。

meta-inf <---目錄,這個目錄是手工建立的,主要用來存放乙個公升級指令碼update-script(這個指令碼的內容與system目錄中包含的檔案有很大關聯)以及儲存若干刷機包內的apk檔案的簽名。

system <---目錄,這個目錄就是編譯android的平台源**生成的,

其實最好的學習方式就是把現在網際網路上的那些update.zip包給解包,然後自己乙個乙個檔案地看和分析,然後修改,嘗試做自己的刷機包。

對於這個boot.img,基本思路是編譯android kernel**,生成核心image然後利用mkbootimg感興趣的朋友可以參考下面這兩個wiki**:

... re-pack_boot_images

... _recovery_partition

android平台刷機包的製作研究

最近有朋友問偶如何製作android平台的刷機包的問題。總算說服自己研究一下如何製作乙個android平台的刷機包,可能我了解的方法還不是很全面,也走了不少的彎路,但是以此做為一串探索的足跡,希望能為來者節約寶貴的時間,也請對此感興趣的各位同仁盡量避免偶曾經犯過的錯誤。在此先要明確宣告一下 由於an...

Android刷機教程 ZIP包

現在採用安卓作業系統的手機非常的多,並且一般採用安卓系統的手機第三方rom資源也是非常的豐富,因此刷機就成了玩安卓機的一大樂趣。本文就來介紹下安卓手機通過recovery模式刷機的方法,希望對大家能有所幫助 步驟閱讀 1要想通過recovery模式刷機,首先條件是手機已成功刷入了recovery,由...

Android 刷機過程

原裝刷機過程 1.開啟原裝手機 2.開啟開發模式 開發人員選項,usb除錯開啟 3.adb push cm 11 20140222 nightly maguro.zip sdcard 4.adb reboot bootloader 啟動到bootloader下 5.fastboot oem unlo...