文章出處:http://mantocom.blog.sohu.com/161174089.html
6 . 下載 Android 源代碼
6 .1 安裝 repo 腳本
首先安裝 repo 。在當前用戶: ~ 目 錄下新建一個 bin 目錄。在終端中執行:
cd ~
mkdir bin
然後,向 PATH 中添加 bin 路 徑:
export PATH=$PATH:~/bin
然後執行下面兩行指令,下載 repo 腳本並修改可執行屬性:
curl https://android.git.kernel.org/repo >~/bin/repo
chmod a+x ~/bin/repo
6 .2 初始化 repo
首先建立一個目錄用來存放 Android 源代碼:
mkdir mydroid
cd mydroid
然後用最新的列表執行初始化。這裏偶下載
android 2.2.1(froyo)
,因此加了參數
–b froyo
:
(android 2.2.2(froyo)
源碼下載
:2G
多
repo init -u git://android.git.kernel.org/platform/manifest.git
-b froyo
)
(
下載
2.1_r2
源碼
repo init -u git://android.git.kernel.org/platform/manifest.git –b android-2.1_r2
下載全部源碼: repo init -u git://android.git.kernel.org/platform/manifest.git )
(下載2.0源碼:
repo init -u git://android.git.kernel.org/platform/manifest.git –b eclair )
(上面下載2.0時有個莫名其妙的問題
:
ynb@ynb-pc:~/bin$ repo init -u git://android.git.kernel.org/platform/manifest.git –b eclair
Usage: repo init -u url [options]
出現上面問題,刪除mydroid目錄:rmdir mydroid ; mkdir mydroid2.0 ; cd mydroid2.0;
再:repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair 就可以了)
(
如果能通過瀏覽器瀏覽到
android
源碼的主頁,但運行
repo init
或
repo sync
的時候,卻沒法下載源碼,形如:
只需要把
git
開頭的地址改爲
http
即可:
[1]
repo init -u http://
android.git.kernel.org/platform/manifest.git
-b froyo
[2]
修改
manifest.git
裏的地址,也是把
git://
改爲
http://
vim
.repo/manifest.git
如:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="korg"
fetch="http://
android.git.kernel.org/"
review="review.source.android.com" />
<default revision="froyo"
remote="korg" /> )
這中間會問到你的名字和 Email 。如果你打算上傳代碼, Email 須是一個 Google 賬戶。
repo 初始化成功後會看到類似於下面的提 示:
repo initialized in /home/( 當前用戶名 )/mydroid
最後執行 $repo sync 開始同步代碼。過程比較漫長,下載速度取決於你的網速(偶的 3-4 小時 左右 ),中間有可能遇到斷線,重新執行 repo sync 即可斷點續傳。
7 . 編譯 Android 源代碼
7 .1 編譯生成鏡像
切換到 android 源碼根目錄下,執行 $sudo make 即可。首次編譯非常耗時,取決於機器配置,大約需要 2-3 小時 。有可能會出現:“ Permission denied (權限拒絕的提示)” 請命令賦予權限: $cd 無權限文件的當前目錄 回車 ; $sudo chmod -R +rwx * 回車 ; 完成後鏡像生成在 /root/mydroid/out/target/product/generic 下: android 源碼編譯後得到 system.img ,ramdisk.img ,userdata.img 映像文件。其中, ramdisk.img 是 emulator 的文件系統, system.img 包括了主要的包、庫等文件, userdata.img 包括了一些用戶數據, emulator 加載這 3 個映像文件後,會把 system 和 userdata 分別加載到 ramdisk 文件系統中的 system 和 userdata 目錄下。
7.2 編譯、配置 Android SDK
make 編譯完成後,執行 $sudo make sdk 命令,生成對應於該版本源代碼的 sdk, 此過程用的時間偶的是 10 多分鐘 。注意這個 sdk 不能用於生產環境。
用於生產環境的最好用如下命令: $sudo make PRODUCT-sdk-sdk 命令,生成對應於該版本源代碼的用於生產環境的 sdk, 此過程用的時間偶的是 1 個多小時 。
Android 官方的 SDK 和偶自己編譯 Android 源碼時使用 make sdk 編譯出的 SDK 有區別,模擬器版本不同,加載的默認鏡像也不同(一個是官方的, 一個是自己編譯的)。下面將展示如何能夠自由切換 SDK 版本。
首先是自己編譯的
SDK
版本,實際位置是(注意權限
: $cd ~/mydroid/out/host/linux-x86/sdk
回車,
$ sudo chmod -R a+wrx *
回車
)
~/mydroid/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86
。
8 . 在模擬器中運行編譯的鏡像
打開終端,執行 android 腳本:
$android
出現下圖所示窗口:
選擇左邊第一項 Virtual Devices ,然後在右邊選擇 New ,新建一個 AVD 。
Name : AVD 的名稱,隨便取,但只能包含字母和數字以及點、下劃線和連字符, 這裏取名 test 。
Traget :目標 SDK 版本,這裏選自己編譯的 2.1-r1 版 Android SDK 。
SD Card : SD 卡。暫且不填,待需要時再設置。
Skin :皮膚(模擬器屏幕分辨率)。
Hardware :使用默認即可
然後點 Create AVD ,就創建好了一個 AVD 。點擊 Start 即 可啓動模擬器,其運行的是自己編譯的鏡像。
若以後要再次啓動此 AVD ,請在終端中運行:
emulator –avd test 或 者 emulator @test