廢話少說,立刻上資料。
第一步:安裝vim工具
第二步:安裝samba工具,建立與windows共用資料夾
第三步:安裝android系統編譯的涉及的開發包:git-core gnupg valgrind flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
第四步:安裝java1.5,編譯android核心時需要用到java1.5版本
需要更新/etc/apt/sources.list,添加如下:
1.運行命令 sudo gedit /etc/apt/sources.list
2.開啟 sources.list 後在最後添加 deb http://mirrors.163.com/ubuntu/ hardy main multiverse 儲存關閉
3.運行命令 sudo apt-get update
4.運行命令 sudo apt-get install sun-java5-jdk 就可以下載安裝 java5
需要注意的是,官方文檔說如果用sun-java6-jdk可出問題,得要用sun-java5- jdk。經測試發現,如果僅僅make(make不包括make sdk),用sun-java6-jdk是沒有問題的。而make sdk,就會有問題,嚴格來說是在make doc出問題,它需要的javadoc版本為1.5。
因此,我們安裝完sun-java6-jdk後最好再安裝sun-java5-jdk,或者只安裝sun-java5-jdk。這裡sun-java6-jdk和sun-java5-jdk都安裝,並只修改javadoc.1.gz和javadoc。因為只有這兩個是make sdk用到的。這樣的話,除了javadoc工具是用1.5版本,其它均用1.6版本:
$ sudo apt-get install sun-java6-jdk
修改javadoc的link
$ cd /etc/alternatives
$ sudo rm javadoc.1.gz
$ sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz
$ sudo rm javadoc
$ sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc
第五:編譯android核心和linux核心
編譯Android核心方法:
注意:由於android的核心有3G多,因此最好安裝ubuntu11的系統時分配的儲存空間大於等於20G(Android系統比較大),記憶體配置大於等於1G(否則有肯能會編譯Android系統時出錯了)
之前已經把Android核心檔案和Linux核心檔案分別拷貝到對應的Android檔案和Linux檔案下。
正如你所看到的,Android 系統十分龐大,很多初學者都不能順利的成功編譯它,而且編譯一次所需的時間很長(1.5-4 小時,甚至更長),為了方便大家使用,我們特意準備好了現成的原始碼包,並且製作了 3 個指令碼分別用來編譯和建立 Andoid 系統:build-android、genrootfs.sh和 genrootfs-s.sh
在命令列執行:
#cd /Android-2.3
#./build-android
就開始編譯 Android-2.3 系統,你需要等待很長的時間,建議開發 Android 系統不要使用虛擬機器編譯,使用多核的 CPU加真實的Linux 系統會快一些。 然後,再執行指令碼:
#./genrootfs.sh
就可以從編譯完的 Android 系統提取出我們需要的目標檔案系統了,最後會產生rootfs_dir目錄,,它和上面提到的 rootfs_android 內容是完全相同的。 提示:使用genrootfs-s.sh 指令碼,可以編譯出適用於串口觸控螢幕控制器的 LCD套餐。
編譯Linux核心方法:
Android 所用的 Linux 核心和標準的 Linux 核心有所不同,但使用的方法和步驟是相似的;如果你對配置 Linux 核心不熟悉,建議你使用我們提供的預設核心配置。
要編譯適用於 N43 型號 LCD的核心,請這樣使用預設核心配置:
#cd /linux-2.6.36-android
#cp config_android_n43 .config ;注意 config前面有個”.”
#make
最後會在 arch/arm/boot 目錄下產生 zImage,我們把它重新命名為 azImage_n43 放入光碟片中,以便區分
要編譯適用於 A70 型號 LCD的核心,請這樣使用預設核心配置:
#cd /linux-2.6.36-android
#cp config_android_a70 .config ;注意 config前面有個”.”
#make
最後會在 arch/arm/boot 目錄下產生 zImage,我們把它重新命名為 azImage_n70 放入光碟片中,以便區分。
編譯Android系統時出現的問題和解決方案:
1、
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1
make: ***
解決方案:
gedit frameworks/base/libs/utils/Android.mk
把
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
修改為:
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive
2、
make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex] Killed
解決方案:
把虛擬機器ubuntu系統分配記憶體1G,有條件最好對於1G
3、
<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
解決方案:
修改build/core/combo/HOST_linux-x86.mk 61行,將
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
修改成
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0