CyanogenMod rom編譯嘗試(簡記)

編譯環境:

Vmware workstation 7  + ubuntu 10.04 32位

 

 

1、安裝android sdk

 

2、32和64位均需要安裝的軟件包:

git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool

 

3、64位需要安裝的軟件包:

g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib

 

4、在當前用戶home目錄下創建目錄

mkdir -p ~/bin

mkdir -p ~/android/system

 

5、安裝repo,並初始化

curl http://android.git.kernel.org/repo > ~/bin/repo

chmod a+x ~/bin/repo

 

cd ~/android/system/

repo init -u git://github.com/CyanogenMod/android.git -b gingerbread

repo sync -j16

 

6、復制手機對應的文件

cd ~/android/system/device/htc/bravo/

./extract-files.sh

 

7、下載RomManager

~/android/system/vendor/cyanogen/get-rommanager

 

8、檢查更新

cd ~/android/system/

repo sync

 

9、開始編譯

. build/envsetup.sh && brunch bravo

命令簡單解釋:. build/envsetup.sh 是將該文件中定義的一些函數添加到當前的shell環境中,這些函數是在編譯過程中會使用到的函數,比如獲取相對路徑、絕對路徑等。

而上述命令行後面的 brunch 就是其中的一個函數,是用來編譯一個分支設備的rom,在這裡為bravo(HTC Desire)。

上述命令行中間的 && 符號意思為當前面的命令執行成功之後,才會執行後面的brunch bravo命令。

 

因此,我們也可以先執行 . build/envsetup.sh 將函數添加到shell變量中,然後再執行brunch bravo來編譯Desire ROM。

 

 

最終文件:   ~/android/system/out/target/product/bravo/update.cm-XXXXX-signed.zip

 

記錄瞭下編譯時間:如果之前編譯過ROM,那麼再同步源代碼之後,再次編譯的時間會短很多,編譯不會超過10分鐘。

當然如果是第一次編譯,那麼時間會很長,根據自己的機器配置,一般都需要半個小時以上。

 

我的機器配置:I3 M380 2.53GHZ
內存:4G

第一次編譯:37分鐘
第二次編譯:6 分鐘

 

補充:
1、修改默認語言為中文

 

修改build\target\product\full_base.mk內容:

PRODUCT_LOCALES := zh_CN

 

2、修改需要編譯的語言

修改build\target\product\languages_full.mk內容:

PRODUCT_LOCALES := en_US \

 zh_CN

即隻編譯英文和簡體中文。

 

 

3、repo撤銷本地修改

repo forall -c git reset –hard HEAD

有的時候修改本地代碼瞭,再次同步的時候會報錯,需要清理代碼的時候,可以執行這個命令。

4、編譯相關配置文件:
verdor\cyanogen\products\cyanogen_bravo.mk
該文件定義瞭編譯的內核以及編譯最終生成的文件名

補充
5、可以刪除多餘項目,減少同步時間和數據,具體操作為找到android/system/.repo目錄下的project.list和manifest.xml文件,可以刪除device/htc 等類似這樣的條目(device下面主要是針對不同手機而需要的文件,如果我們隻需要編譯某一個手機rom,那麼就可以把其它的都刪掉,為瞭避免出錯,可以一個一個地刪除),在刪除之後,重新到android/system目錄下執行repo sync進行同步,如果不報錯,那這樣就修改成功,以後同步時,就不會同步那些已經刪除的項目。

6、關於初始化git庫報錯:android.git.kernel.org[0: 149.20.4.77]: errno=Connection refused到解決辦法:
找到repo文件,修改REPO_URL='https://github.com/android/tools_repo.git'即可。

 

摘自 aswang之專註

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。