環(huán)境:Ubuntu10.10 Android2.2.2_r1 android-gldfish-2.6.29
0 說明
Android2.2的platform和kernel是分別的項目,要分別下載編譯。本文是Ubuntu10.10 環(huán)境下Android2.2.2_r1平臺(包含SDK)的編譯。
讀者:希望深入Android底層開發(fā)者,如果只是ANDROID應(yīng)用開發(fā)者,不用如此麻煩,直接下載現(xiàn)成的SDK以及其他相應(yīng)工具即可。
一、環(huán)境準備
1.1. 安裝Utunbu10.10
在寫此文時,ubuntu已經(jīng)有更新的安裝包發(fā)布,筆者沒有更新。
1.2. 工具下載安裝
haili@haili-desktop:~$sudo apt-get install git-core curl
haili@haili-desktop:~$sudo apt-get install gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev build-essential zip libncurses5-dev zlib1g-dev
1.3. SUN jdk 5.0下載安裝
android2.2要求用SUN JDK5,而ubuntu10.10里安裝的是JDK6,需要重新安裝5.0的jdk。用apt-get方法(1.3.1)簡單易操作,可是筆者試著更新了很多源,但是都連接不上,所以用了直接下載安裝的方法(1.3.2)。這里只是把apt-get的方法放在這里,并沒有驗證。
1.3.1 apt-get install安裝JDK5
1) 添加JDK5的更新源,打開source.list
haili@haili-desktop:~$sudo gedit /etc/apt/sources.list
2) 在source.list里把下面內(nèi)容追加到文檔最后面:
deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
保存退出。
3)更新源。
執(zhí)行
haili@haili-desktop:~$sudo apt-get update
4) 配置編譯環(huán)境并下載JDK5:
haili@haili-desktop:~$sudo apt-get install sun-java5-jdk
1.3.2 官方網(wǎng)站下載JDK5安裝
1) 官網(wǎng)http://java.sun.com/javase/downloads/5u22/jdk去下載jdk-1_5_0_22-linux-i586.bin,
2) 然后執(zhí)行安裝,
haili@haili-desktop:~$cd ~
haili@haili-desktop:~$chmod +x jdk-1_5_0_22-linux-i586.bin
haili@haili-desktop:~$./jdk-1_5_0_22-linux-i586.bin
執(zhí)行之后,生成 ~/jdk1.5.0_22
3)JDK版本切換
安裝了多個JDK的話,可以用update-alternatives設(shè)置版本,并進行切換選擇使用哪個。
首先為JDK1.5版生成可選配置選項:
haili@haili-desktop:~$sudo update-alternatives –install /usr/bin/jdk jdk ~/jdk1.5.0_22 255
說明:/usr/bin/jdk是符號鏈接,它指 向/etc/alternatives/jdk(由第2個參數(shù)給出),~/jdk1.5.0_22(/home/haili/jdk1.5.0_22)是實際目的鏈接,255是優(yōu)先級(任意整數(shù),在自動模式時,數(shù)字大的優(yōu)先級較高,被選為默認配置選項)。
4) 配置JAVA環(huán)境
執(zhí)行:
haili@haili-desktop:~$sudo gedit ~/.bashrc
在文件的尾部追加:
export JAVA_HOME=/usr/bin/jdk
export JRE_HOME=JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
使更改生效。保存文件,執(zhí)行
haili@haili-desktop:~$source ~/.bashrc
二、下載Android2.2 platform
下載Android Platform用git,Android用repo封裝了git,用curl獲取repo。工具git-core和curl在1.2中已經(jīng)下載安裝了。
2.1. 獲取repo
haili@haili-desktop:~$cd ~
haili@haili-desktop:~$mkdir bin
haili@haili-desktop:~$curl http://android.git.kernel.org/repo >~/bin/repo
haili@haili-desktop:~$chmod a+x ~/bin/repo
2.2. 把~/bin路徑加入到PATH
執(zhí)行:
haili@haili-desktop:~$sudo gedit ~/.bashrc
在文件的尾部追加:
export PATH=$PATH:~/bin
執(zhí)行
haili@haili-desktop:~$source ~/.bashrc
2.3 獲取android-2.2.2.r1
可以到http://android.git.kernel.org,點擊platform/manifest.git看當前的版本,筆者選擇了當前2.2的最新版本android-2.2.2_r1。
下載android2.2.2_r1,執(zhí)行
haili@haili-desktop:~$cd ~
haili@haili-desktop:~$mkdir android-2.2.2_r1
haili@haili-desktop:~$cd android-2.2.2_r1
haili@haili-desktop:~/android-2.2.2_r1$repo init -u git://android.git.kernel.org/platform/manifest.git –b android-2.2.2_r1
haili@haili-desktop:~/android-2.2.2_r1$repo sync -j4
三、編譯Android鏡像
環(huán)境設(shè)置
haili@haili-desktop:~/android-2.2.2_r1$ source build/envsetup.sh
haili@haili-desktop:~/android-2.2.2_r1$ lunch
會提示選擇
1. generic-eng
2. simulator
3. full_dream-userdebug
4. full_passion-userdebug
5. full_sapphire-userdebug
選擇1,會顯示當前的設(shè)置
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.2.2
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=FRG83G
編譯,執(zhí)行
haili@haili-desktop:~/android-2.2.2_r1$make –j2
如果編譯沒什么問題,編譯完成之后會生成鏡像在目錄~/android-2.2.2_r1/out/target/product/generic下:system.img,ramdisk.img,userdata.img。
四、編譯Android SDK
剛才并沒有編譯SDK。要編譯SDK,執(zhí)行
haili@haili-desktop:~/android-2.2.2_r1$make sdk
生成
~/ android-2.2.2_r1/out/host/linux-x86/sdk/android-sdk_eng.haili_linux-x86.zip
~/ android-2.2.2_r1/out/host/linux-x86/sdk/android-sdk_eng.haili_linux-x86
加入路徑,追加下面兩行到~/.bashrc
export ANDROID_SDK_ROOT=~/ android-2.2.2_r1/out/host/linux-x86/sdk/android-sdk_eng.haili_linux-x86
export PATH=$ANDROID_SDK_ROOT/tools:$PATH
執(zhí)行
haili@haili-desktop:~/android-2.2.2_r1$source ~/.bashrc
五、驗證
創(chuàng)建AVD,執(zhí)行
haili@haili-desktop:~/android-2.2.2_r1$android
在啟動的Android SDK and AVD Manager中,創(chuàng)建AVD,取值如下,
Name: AVD_HVGA;
Target: Android 2.2.2 – API Level 8;
SD Card: 1024M
Skin: HVGA
點擊按鈕Create AVD,創(chuàng)建出AVD_HVGA。
執(zhí)行
haili@haili-desktop:~/android-2.2.2_r1$emulator –avd AVD_HVGA