Android 源碼編譯後,怎麼發布到真機?

編譯後的一堆img要再打包么

是系統移植,不是編譯和發布Android App


一句話回答:如果是個人研究用的話,不必打包成rom包那種形式,可以直接通過fastboot寫到真機上。具體的命令是:

fastboot flashall -w

你只需要將手機置於fastboot模式下,然後在你編譯生成的一大堆*.img文件的地方執行這個明星就行了。-w 選項清空設備上的/data分區,在第一次完整刷機的時候是必須的,不然可能讀取到錯誤的緩存文件,系統就起不來了。

===========================更具體的分割線================================

注意:鑒於編譯環境只能是是Linux或Mac,下面的解釋忽略windows.

在Linux或Mac上面可以參考這篇文章進行刷機.概括來說在*nix上,先從官方下載rom包,解壓後運行./flash-all.sh腳本,就可以刷入新系統了。在這裡我下載了Nexus 6p的官方的rom包,我們看看這個文件中的內容是什麼? 下面就是腳本文件的內容

fastboot flash bootloader bootloader-angler-angler-02.45.img
fastboot reboot-bootloader
sleep 5
fastboot flash radio radio-angler-angler-02.50.img
fastboot reboot-bootloader
sleep 5
fastboot -w update image-angler-mmb29p.zip

上面幾個命令跟bootloader、基帶、重新啟動有關,我們直接看最下面的命令.fastboot -w update image-angler-mmb29p.zip

這個image-angler-mmb29p.zip又是什麼呢?解開後就是這麼幾個文件:

android-info.txt boot.img cache.img recovery.img system.img userdata.img vendor.img

有沒有很熟悉,其實就是我們編譯後,生成的幾個img文件。

fastboot update filename 的意思就是用指定的文件進行刷機,這裡是image-angler-mmb29p.zip。其實就是我們的編譯生成的幾個*.img文件重新簽名打包了。這跟在編譯生成的 *.img的路徑下執行flashall 命令是一樣的。


研究Android還是1.5時代的事情,所以並不清楚現在是不是還是這樣子,權當拋磚引玉了。

如果自己刷過機,應該知道刷機包里有一堆img文件,而android編譯之後也是一堆img,刷機的話主要的就是boot.img, system.img和userdata.img,boot.img是bootloader和kernel還有ramdisk的結合,有了這三個img就可以把系統刷在手機上(前提是編譯的目標vender和真機是一個)。

以前翻譯過一篇關於boot.img結構的文章,比較淺,可以參考一下:

http://blog.odichy.org/2009/07/14/%E4%BF%AE%E6%94%B9bootimg%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.html


植入進去就好了


推薦閱讀:

Xposed帶我用上真正的安卓機
MIUI主題製作賺錢嗎?
為什麼許多廠商喜歡魔改 AOSP?
小米MIUI有哪些好的主題推薦?

TAG:Android開發 | Android移植 | Android | Android系統源碼 |