文章轉自:http://www.cnblogs.com/thinkinglife/p/4960486.html
第一次下載好Android源代碼工程後,我們通常是在Android源代碼工程目錄下執行make命令,經過漫長的等待之後,就可以得到Android系統鏡像system.img了。以後如果我們修改了Android源代碼中的某個模塊或者在Android源代碼工程新增一個自己的模塊,是不是還是執行make命令呢?答案是否定的,Google爲我們準備了另外的命令來支持編譯單獨的模塊,以及重新打包system.img的命令。在繼續學習Android源代碼之前,就讓我們先來看看這個命令吧。
一. 首先在Android源代碼目錄下的build目錄下,有個腳本文件envsetup.sh,執行這個腳本文件後,就可以獲得一些有用的工具:
USER-NAME@MACHINE-NAME:~/Android$ . ./build/envsetup.sh
注意,這是一個source命令,執行之後,就會有一些額外的命令可以使用:
- croot: Changes directory to the top of the tree.
1
2
|
$
file system.img system.img:
data |
android本身提供了源代碼工具在兩者之間轉換,源代碼位於:
1
2
|
system/core/libsparse/simg2img.c
//
將sparse image轉換爲raw image; system/core/libsparse/img2simg.c
//
將raw image轉換爲sparse image; |
如果完整的進行過一次Android的編譯,默認會將simg2img當作主機工具編譯出來,放在out/host/linux-x86/bin/simg2img處。 但默認是不會編譯img2simg的,我們可以手工進行編譯:
1
2
3
|
$
. build/envsetup.sh $
lunch aosp_hammerhead-userdebug $
make img2simg_host |
這樣就會編譯出out/host/linux-x86/bin/img2simg。 如果要將system.raw.img轉換爲system.simg: $ img2simg system.raw.img system.simg
爲了方便沒有源代碼的同學,這裏提供img2simg的下載路徑: http://download.csdn.net/detail/howellzhu/8399215
對於simg2img,到處都可以找到了,還有windows版本的,這裏就不提供了。