Android源码下载编译(TI)
0 前言
? ? 通過《Android源碼下載 & 編譯(高通)》的方法下載的源碼是包含有kernel目錄的(也就是包含Linux內核),然而,通過其它方法下載的源碼可能并不包含kernel目錄(也就是不包含Linux內核)。參考資料[9]在最后明確指出:Android4.0源碼默認下載是不包括內核源碼的。本文針對這種情況,分析如何下載Android & Linux源碼,并進行編譯。
? ? 本文默認讀者已經安裝好git,repo等工具,具體可參考《Android源碼下載 & 編譯(高通)》第1節。
1 下載源碼
1.1 Android
? ? 由于無法直接從Google官網下載,改在TI OMAPZOOM下載[11][7]:
(1)登陸http://git.omapzoom.org,然后打開platform/manifest.git:
圖1.1(2)瀏覽tags,查看可用的Android源碼版本(本文以4.4.4版本為例):
圖1.2? ? 更多tags如下所示:
圖1.3(3)通過repo下載源碼
mkdir android-4.4.4 cd android-4.4.4 repo init -u git://git.omapzoom.org/platform/manifest -b android-4.4.4_r2.0.1 repo sync注:如果網絡不穩定,可能會出現中斷現象,根據參考資料[10]的說明,此時可以使用下面的腳本來實現自動下載:
#!/bin/bash echo "======start repo sync======" repo sync while [ $? == 1 ]; doecho "======sync failed, re-sync again======"sleep 3repo sync done echo "======sync sucessed !======"? ? 將上述內容保存到repo_sync.sh文件中(保存于android-4.4.4目錄中),然后:
chmod +x repo_sync.sh? ? 此時可以通過執行上述腳本來啟動下載:
./repo_sync.sh1.2 內核
? ? 通過上述方法僅僅是下載了Android源碼部分,其中并沒有包含Linux內核源碼,下面進一步說明下載Linux內核源碼的步驟:
(1)登陸http://git.omapzoom.org:
圖1.4(2)在上圖搜索框中輸入關鍵字“kernel”,然后點擊“Search”按鈕,結果如下:
圖1.5? ? 由上圖可見,具有common,exynos,goldfish,msm,omap,samsung以及tegra六個平臺的內核,本文以goldfish為例。
(3)雙擊上圖“kernel/goldfish.git”進入如下頁面:
圖1.6? ? 上圖紅色框內列出了goldfish.git的URL,可以通過該URL下載goldfish版本的Linux內核。
(4)克隆內核
mkdir kernel cd kernel git clone git://git.omapzoom.org/kernel/goldfish.git(5)查詢遠程分支
cd goldfish git branch -a? ? 結果如下圖所示:
圖2.4(6)checkout分支
git checkout remotes/origin/android-goldfish-3.4? ? 注意:不能下載android-3.18,android-goldfish-3.10和android-goldfish-4.4dev這三個版本,因為其中缺乏goldfish_defconfig或goldfish_armv7_defconfig配置文件;android-goldfish-2.6.29,android-goldfish-3.18-dev這兩個版本雖然含有goldfish_defconfig和goldfish_armv7_defconfig,但是編譯后無法正常啟動,前者是黑屏,后者則是崩潰!
2 編譯
2.1 Android
(1)配置 & 編譯
cd android-4.4.4 source build/envsetup.sh lunch 1 make -j4注:與《Android源碼下載 & 編譯(高通)》不同的是,上述編譯過程并沒有編譯Linux內核,Linux內核需要另外編譯,詳見下文。
(2)編譯結果
? ? 編譯完成后,將會在Android源碼目錄中創建一個out子目錄,并且在其中保存編譯結果:
圖2.1? ? 其中target/product/generic子目錄保存了目標板鏡像文件,而host/linux-x86子目錄保存了在PC端運行的工具,例如adb,fastboot和emulator:
圖2.2? ? 這里我們通過emulator工具來模擬啟動剛才所編譯的Android鏡像。
(3)步驟(1)的配置過程早已將上述路徑添加到PATH環境變量中,因此可以在Android源碼樹中的任意路徑執行下面命令來啟動模擬器:
emulator? ? 效果如下:
圖2.32.2 內核
(1)進入第1.2小節所下載內核源碼的目錄
cd goldfish(2)配置
make ARCH=arm goldfish_armv7_defconfig .config# or make ARCH=arm goldfish_armv7_defconfig# or cp arch/arm/configs/goldfish_armv7_defconfig .config make ARCH=arm menuconfig? ? 如果選擇最下面的方法,退出配置菜單,選擇保存即可。
注:除了goldfish_armv7_defconfig(適用于Androd4.0以后版本),還有一個配置文件goldfish_defconfig(適用于Android2.3之前版本),這里不能選錯,否則無法正常啟動。
(3)編譯
make -j3 ARCH=arm CROSS_COMPILE=${CROSS_COMPILE_DIR}/arm-eabi-? ? 參數說明:
? ? -j3, 表示開啟3個線程進行編譯以加快速度;
? ? CROSS_COMPILE,指定交叉編譯工具前綴;
? ? CROSS_COMPILER_DIR,它是一個環境變量,其值應該設置為交叉編譯工具所在的路徑(通常在上述下載所下載的Android源碼的prebuilts目錄中,例如prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin)。
(4)結果
圖2.43 開啟/關閉編譯內核
? ? 在編譯Android系統的時候,可以同時編譯Linux內核,也可以不編譯!可以通過設置Android源碼device目錄中相應平臺的BoardConfig.mk中的TARGET_NO_KERNEL變量的人值來達到目的[1]:
圖3.1? ? 當TARGET_NO_KERNEL的值為false時,表示 在編譯Android源碼的同時編譯Linux內核;TARGET_NO_KERNEL的值為true時,表示 在僅僅編譯Android源碼,不編譯Linux內核(內核需要另外獨立編譯)。
參考資料
[1]Android下載目錄結構中無kernel目錄
[2]誰知道Android內核源碼中goldfish部分代碼到哪里去了?
[3]最近下載android4.3的源代碼,可是找不到kernel那部分代碼在什么目錄下?
[4]ubuntu12.04(64bit)編譯android4.4源碼、sdk及kernel
[5]Android編譯自己的kernel
[6]Android --- windows下搭建Linux環境下載編譯Android源代碼
[7]國內被墻后如何獲取android源代碼
[8]如何下載并編譯Android4.0內核源碼goldfish(圖文)
[9]如何在Ubuntu11.10(32位)下編譯Android4.0源碼(圖文)
[10]repo sync 時的自動續接腳本[轉]
[11]OmapZoom_WIKIPEDIA
總結
以上是生活随笔為你收集整理的Android源码下载编译(TI)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RTX2.02 tiny中文手册
- 下一篇: 国内android源码下载网站