標籤:
如何下載Android4.0原始碼。請參閱我的部落格文章中有(同樣是圖文教程):
http://blog.csdn.net/flydream0/article/details/7036156
怎樣編譯Android4.0原始碼請看:
http://blog.csdn.net/flydream0/article/details/7046612
以下進入正題:
第一步:下載goldfish原始碼
在Android原始碼根資料夾下建立kernel檔案夾
$mkdir kernel$cd kernel
下載原始碼:
$git clone http://android.googlesource.com/kernel/goldfish.git
完成下載例如以:
此時在kernel檔案夾下會產生一個goldfish檔案夾。進入此檔案夾:
$cd goldfish
此檔案夾下有一個隱藏的檔案夾.git,通過
$ls -al
可看到此檔案夾:
查看全部分支:
git branch -a
例如以:
check out:
$git checkout remotes/origin/android-goldfish-2.6.29
此時你會看到goldfish檔案夾下會出現非常多檔案:
$ls
這個時候goldfish原始碼就已經下下來了,接下來的事情就是編譯了.
第二步:編譯goldfish
匯出交叉編譯工具檔案夾到$PATH環境變數中去.
export PATH=$PATH:~/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
我們將使用上述這個檔案夾下的交叉編譯器
arm-eabi-gcc
然後在glodfish檔案夾下用gedit開啟Makefile檔案,找到這兩行文字:
# ARCH ?= (SUBARCH)
# CROSS_COMPILE
?=
改動為:
ARCH ?
= arm
CROSS_COMPILE ?= arm-eabi-
$gedit Makefile
注意:ARTH ?=arm,的arm後邊不要有空格,不然就會出現例如以下類似錯誤:
Make:...../kernel/goldfish/arch/arm: Is a directory. Stop.
害我白白浪費了幾個小時.
上述操作的目的是為了指定目標裝置的體系架構和交叉編譯器。事實上也能夠通過下面指令來完畢:
$ export ARCH=arm$ export SUBARCH=arm$ export CROSS_COMPILE=arm-eabi-
為了確保環境參數正確,接下來運行以下兩條指令,否則有可能不能正常啟動模擬器.(注:以下兩條指令是在Android原始碼根資料夾下運行)
$ source build/envsetup.sh //缺少這條指令,可能會導致無法編譯通過$ lunch full-eng //缺少這條指令,可能會導致無法啟動模組器,系統報無法找到AVD。並要求你建立AVD。
關閉gedit,接下來就開始make了,運行例如以下指令:
$ make goldfish_armv7_defconfig$ make
註:用$make goldfish_defconfig這樣配置也能夠編譯通過,模擬器也能夠啟動。可是Android的開機畫機就顯示不了,$adb shell也死活連不上,原因就是這個goldfish_defconfig這個設定檔問題.
提示:
$make goldfish_armv7_defconfig指令的意思是將檔案夾WORKING_DIRECTORY/kernel/goldfish/arch/arm/configs/下的goldfish_armv7_defconfig檔案內的Kconfig配置內容拷貝到WORKING_DIRECTORY/kernel/goldfish/檔案夾下的.config檔案裡,.config檔案是一個隱藏檔案夾,儲存著各個檔案夾下Kconfig檔案的配置.
終於結果例如以所看到的:
這樣就表示編譯成功了.
$ ls arch/arm/boot/
能夠看到zImage檔案.
第三步:在模擬器中啟動編譯好的核心
按下來再執行其下指令:
$ export PATH=$PATH:~/WORKING_DIRECTORY/out/host/linux-x86/bin$ export ANDROID_PRODUCT_OUT=~/WORKING_DIRECTORY/out/target/product/generic$ emulator -kernel ~/WORKING_DIRECTORY/kernel/goldfish/arch/arm/boot/zImage &
模擬器啟動介面:
進入模擬器從設定裡看版本號碼資訊:
從能夠看出當前Android版本號碼是4.0.1,核心版本號碼是2.6.29,說明成功了.
相同也能夠通過adb shell來查看核心版本號碼資訊,例如以:
$adb shell#cd proc#cat version
完!
如何下載和編譯Android4.0核心原始碼goldfish(映像)