CyanogenMod源碼下載和編譯 CM7


http://www.cnblogs.com/qianxudetianxia/archive/2011/09/27/2193590.html

 ///////=============

這里着重說下Android 2.3以上需要借助JAVA6,安裝Java6,我推薦如下安裝:

1
2
3
4
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
$ sudo apt- get update
$ sudo apt- get install sun-java6-jdk

如果這一步不成功將會導致后面出錯,如果失敗按下面方法即可:

 

運行sudo apt-get install sun-java6-jdk
解決方法:
1. sudo gedit
2. 打開 /ect/apt/sources.list
3. 添加一行
deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse
4. 保存關閉gedit
5. 運行 sudo apt-get update
6.再運行sudo apt-get install sun-java6-jdk

 

 

 //////=============

2.安裝repo
因為android.git官方已經不能訪問,所以我這里提供一個repo文件的下載地址,免的大家到處搜索:http://115.com/file/cl15goo2#repo 
把repo拷貝到ubuntu根目錄下得bin下
操作方法:

1
2
3
4
5
6
$mkdir ~/bin
//下載的repo腳本拷貝本地bin文件夾下

 

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

 

//設置本地repo的可執行權限
$chmod a+x ~/bin/repo
$alias repo= "~/bin/repo"
//這里我用特意用別名,大家也可以按常規方法把repo的路徑添加到PATH中
 

 

////////=================

3.ubuntu中環境的配置
JDK前面已經說了,其他的軟件列表如下:

1
$sudo apt- get install 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 
 

 

 ///////=================

 

4.下載CyanogenMod源碼

1
2
3
4
5
6
7
//從用戶根目錄下開始
//創建CyanogenMod文件夾來放置后面所有的代碼
$mkdir CyanogenMod
//獲取gingerbread的分支源代碼
$repo init -u git: //github.com/CyanogenMod/android.git -b gingerbread 
//同步服務器代碼到本地,-j16據網友反應是多開網絡連接,從而能提高下載速度
$repo sync -j16
 

 

 ////////////====================

 

5.編譯源碼
在CyanogenMod/device目錄下有很多款手機的對應版本:
第一步:讀取手機上的一些私有配置文件
1
2
$cd CyanogenMod/device/htc/liberty
$./extract-files.sh

 

 

第二步:生成編譯腳本文件

?
1
2
3
4
5
$cd ~/CyanogenMod/vendor/cyanogen 
$./ get -rommanager
$./extract-google-files
//復制編譯腳本文件到CyanogenMod目錄下,后面編譯整個系統用的就是這個文件
$cp ~/CyanogenMod/vendor/cyanogen/products/cyanogen_lieberty.mk  ~/CyanogenMod/buildspec.mk

 

第三步:編譯腳本
回到CyanogenMod目錄下,執行腳本。

1
2
3
4
5
6
7
//初始化腳本,這個是后面的重要基礎步驟
$source build/envsetup.sh
//選擇編譯的產品
//這個命令需要一小會兒時間,但是又沒提示,耐性等待一下
$lunch cyanogen_liberty-eng
//開始編譯
$make -j4 CYANOGEN_WITH_GOOGLE= true otapackage

 

第四步:生產刷機zip包。

1
./vendor/cyanogen/tools/squisher

 

/////==============

6.定制ROM
有了以上的環境后,我們就可以大展手腳,深度定制ROM, 做自己的操作系統,自己的CyanogenMod,自己的MIUI,自己的Android系統。
舉個最簡單的例子:
我 們換一下默認menu菜單的選中背景圖,我們進入CyanogenMod/frameworks/base/core/res/res/mdpi目錄下 (因為htc liberty的分辨率是480x320),找到圖片highlight_pressed.png,替換為綠色的背景:
 
那么修改資源文件后,我們需要重新編譯framework-res.apk:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
//回到根目錄
$cd
//切換到管理員權限
$sudo -s
//進入CyanogenMod目錄,並初始化腳本文件
$cd CyanogenMod
$source build/envsetup.h
//選擇產品
$lunch cyanogen_liberty-eng
//進入資源編譯目錄(或者它的子目錄也可以)
$cd frameworks/ base /core/res
//開始編譯framework-res.apk
$mm
編譯完成,

 

在CyanogenMod/out/target/product/liberty/system/framework目錄下生成了一個framework-res.apk文件,就是我們修改Menu選中項圖片后新打的資源包。
現在我們需要把這個資源包更新到手機中。
USB連上手機后,一切正常的話(adb當然也是事前要裝好的哦),打開終端:

?
1
2
3
4
5
6
//使其可寫
$adb remount
//替換手機中資源包
$adb push ~/CyanogenMod/ out /target/product/liberty/system/framework/framework-res.apk /system/framework/
//重啟手機后生效
$adb reboot

重啟后,進入桌面,我們點擊Menu,選擇一項:

 

 

修改資源包,可以修改樣式,顯示圖片,調整布局等等。
你也可以直接修改framework代碼,在framework/base/core /java目錄下,修改對應的類,比如邏輯處理,樣式重繪等等,然后同上面類似編譯,把生成的framework.jar替換掉手機的/system /framework下的framework.jar,重啟手機即可看到效果。
你也可以添加系統應用,刪除系統應用等等,這里特別提到一點,系統應用可以通過如下命令刪除(具有root權限):

1
2
3
4
5
$adb remount
$adb shell
#cd system/app
//用rm刪除系統FM應用
#rm FM.apk

有了這些基礎知識,我相信我們后面的深度定制ROM一定非常精彩!

7.小結
本文以CyanogenMod源碼編譯總結了Android改造系統的一個基本環境,是我們之后ROM系統定制,優化的基礎,是android深入學習的必會技能,特此分享,共勉!

 

===================================================================================================

 

本來想下載Android官方源代碼,沒想到android.git.kernel.org維護,不能訪問,非常遺憾,並因此還郁悶了幾天。 
后來轉投MIUI,沒找到它的源碼,不知道它的"超過40萬人社區開發團隊"是什么意思,求解具體開發人員幾何,都是誰?
后來一想,竟然忘記了CyanogenMod這茬,這可是的的確確的開源啊,我的手機一直也在用CyanogenMod系統的,感覺確實不錯。

1.准備
我得環境如下,
VirtualBox 4.1.2.r73507
Ubuntu11.10 Beta2(32位)
下載CyanogenMod的gingerbread分支
Ubuntu的環境配置大家可以參考我前面寫的《Android拓展系列(3)--Android源碼下載》,也可以參考http://source.android.com/
這里着重說下Android 2.3以上需要借助JAVA6,安裝Java6,我推薦如下安裝:

?
1
2
3
4
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
$ sudo apt- get update
$ sudo apt- get install sun-java6-jdk

其中第二句可能會出錯,不過沒關系,跳過即可。 

2.安裝repo
因為android.git官方已經不能訪問,所以我這里提供一個repo文件的下載地址,免的大家到處搜索:http://115.com/file/cl15goo2#repo 
把repo拷貝到ubuntu根目錄下得bin下
操作方法:

?
1
2
3
4
5
6
$mkdir bin
//下載的repo腳本拷貝本地bin文件夾下
//設置本地repo的可執行權限
$chmod a+x ~/bin/repo
$alias repo= "~/bin/repo"
//這里我用特意用別名,大家也可以按常規方法把repo的路徑添加到PATH中

3.ubuntu中環境的配置
JDK前面已經說了,其他的軟件列表如下:

?
1
$sudo apt- get install 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 

這些軟件都安裝好之后我們開始下載CyanogenMod源碼。

4.下載CyanogenMod源碼

?
1
2
3
4
5
6
7
//從用戶根目錄下開始
//創建CyanogenMod文件夾來放置后面所有的代碼
$mkdir CyanogenMod
//獲取gingerbread的分支源代碼
$repo init -u git: //github.com/CyanogenMod/android.git -b gingerbread 
//同步服務器代碼到本地,-j16據網友反應是多開網絡連接,從而能提高下載速度
$repo sync -j16

這個過程非常的漫長,大家慢慢的等吧,本人是晚上睡覺的時候下載,第二天早上醒來就Done了。

5.編譯源碼
在CyanogenMod/device目錄下有很多款手機的對應版本:


里面有個htc,本人是htc G9,也就是Liberty,我們點擊看看:


我的liberty靜靜的優雅的舒服的躺在那里。
所以本人決定編譯一個我手頭上的liberty對應的系統版本,編譯完成后我們直接刷機。
第一步:讀取手機上的一些私有配置文件

?
1
2
$cd CyanogenMod/device/htc/liberty
$./extract-files.sh

圖示如下:

第二步:生成編譯腳本文件

?
1
2
3
4
5
$cd ~/CyanogenMod/vendor/cyanogen 
$./ get -rommanager
$./extract-google-files
//復制編譯腳本文件到CyanogenMod目錄下,后面編譯整個系統用的就是這個文件
$cp ~/CyanogenMod/vendor/cyanogen/products/cyanogen_lieberty.mk  ~/CyanogenMod/buildspec.mk

貼上進行時圖片:

第三步:編譯腳本
回到CyanogenMod目錄下,執行腳本。

?
1
2
3
4
5
6
7
//初始化腳本,這個是后面的重要基礎步驟
$source build/envsetup.sh
//選擇編譯的產品
//這個命令需要一小會兒時間,但是又沒提示,耐性等待一下
$lunch cyanogen_liberty-eng
//開始編譯
$make -j4 CYANOGEN_WITH_GOOGLE= true otapackage

這個過程也是相當的漫長,還好一般情況下我們只是第一次需要項目整個編譯,后面只需要編譯某個模塊。
可惜完成的時候我忘記截圖了,可惜不能上圖了。
在 編譯的過程中,我們有一點要特別注意,虛擬機的內存不要太小,本人剛開始分配虛擬機512M內存,一會兒就出錯,重新編譯又一會兒出錯,如此重復,而且還 導致某個文件被破壞掉了(values-cs/strings.xml中某行少一個右尖括號,這個我百思不得其解),后來我把虛擬機內存調到1024M就 一直編譯通過了。

第四步:生產刷機zip包。

?
1
./vendor/cyanogen/tools/squisher

有圖為賞:


用這個zip包,我刷到我手機上,一切正常。

6.定制ROM
有了以上的環境后,我們就可以大展手腳,深度定制ROM, 做自己的操作系統,自己的CyanogenMod,自己的MIUI,自己的Android系統。
舉個最簡單的例子:
我 們換一下默認menu菜單的選中背景圖,我們進入CyanogenMod/frameworks/base/core/res/res/mdpi目錄下 (因為htc liberty的分辨率是480x320),找到圖片highlight_pressed.png,替換為綠色的背景:


那么修改資源文件后,我們需要重新編譯framework-res.apk:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
//回到根目錄
$cd
//切換到管理員權限
$sudo -s
//進入CyanogenMod目錄,並初始化腳本文件
$cd CyanogenMod
$source build/envsetup.h
//選擇產品
$lunch cyanogen_liberty-eng
//進入資源編譯目錄(或者它的子目錄也可以)
$cd frameworks/ base /core/res
//開始編譯framework-res.apk
$mm

編譯完成,示意圖如下:

在CyanogenMod/out/target/product/liberty/system/framework目錄下生成了一個framework-res.apk文件,就是我們修改Menu選中項圖片后新打的資源包。
現在我們需要把這個資源包更新到手機中。
USB連上手機后,一切正常的話(adb當然也是事前要裝好的哦),打開終端:

?
1
2
3
4
5
6
//使其可寫
$adb remount
//替換手機中資源包
$adb push ~/CyanogenMod/ out /target/product/liberty/system/framework/framework-res.apk /system/framework/
//重啟手機后生效
$adb reboot

重啟后,進入桌面,我們點擊Menu,選擇一項:

修改資源包,可以修改樣式,顯示圖片,調整布局等等。
你也可以直接修改framework代碼,在framework/base/core /java目錄下,修改對應的類,比如邏輯處理,樣式重繪等等,然后同上面類似編譯,把生成的framework.jar替換掉手機的/system /framework下的framework.jar,重啟手機即可看到效果。
你也可以添加系統應用,刪除系統應用等等,這里特別提到一點,系統應用可以通過如下命令刪除(具有root權限):

?
1
2
3
4
5
$adb remount
$adb shell
#cd system/app
//用rm刪除系統FM應用
#rm FM.apk

有了這些基礎知識,我相信我們后面的深度定制ROM一定非常精彩!

7.小結
本文以CyanogenMod源碼編譯總結了Android改造系統的一個基本環境,是我們之后ROM系統定制,優化的基礎,是android深入學習的必會技能,特此分享,共勉!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM