文章出處:http://mantocom.blog.sohu.com/161174208.html
1. 前言
本文敘述瞭如何從零開始搭建基於 Google 官方 Android 2.2.1 ( froyo ) 源碼的開發環境,包括如何下載源代碼、編譯源代碼,以及在模擬器中運行編譯生成的鏡像。文中開發機是基於 Ubuntu 10.04 的,同樣適用於其他版本的 Ubuntu 。 現在需要弄清楚一下幾點,防止後面出現誤操作: 下載源代碼是用參數: repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo (下載的是 2.2.1 版本,編譯環境操作系統必須是 32 位的, jdk1.5 版本 的 ---jdk1.5 沒有 64 位版本)。如果是沒有帶參數的下載源代碼,將會下載所有的源代碼,編譯環境要求:操作系統 64 位, jdk1.6 ,(偶是 2010 年 10 月 15 日 做)但很有可能會出現交叉編譯工具錯誤:“ /bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc: 沒有那個文件或目錄 ”(實際上是有 arm-eabi-gcc 這個文件的,偶懷疑是版本問題 --32 位的,而環境要求是 64 位的 —-- 下載全部代碼 )
2. 下載 JDK 1.5 (不建議此下載方式,防止配置環境參數出錯。建議用 apt-get install 方式,請跳轉到:第 4 步 )
編譯 Android 源碼需要 JDK1.5 版(主要是需要其中的 javadoc ), 1.6 版是 不兼容的。 JDK1.5 已經停止支持,其最 終的版本是 JDK 5.0 Update 22 。
可從 Sun 官網上下載:
http://java.sun.com/javase/downloads/5u22/jdk
選擇平臺
Linux
,勾選同意許可協議:
單擊
Continue
,在彈出的頁面中一共有兩個下載,選第一個
jdk-1_5_0_22-linux-i586.bin
下載:
3. 部署 JDK 1.5
3.1 解壓縮 JDK
以下命令均在 root 賬戶上執行,非 root 賬戶執行某些命令可能需要加 sudo 。
將 jdk-1_5_0_22-linux-i586.bin 放在 root 目 錄下。進入該目錄:
cd ~
然後賦予該 bin 文件可執行屬性:
chmod +x jdk-1_5_0_22-linux-i586.bin
再執行安裝 ( 注意前面有 ./) :
./jdk-1_5_0_22-linux-i586.bin
跳過協議閱讀。
最後一行:
Do you agree to the above license terms? [yes or no]
鍵入 yes ,然後回車,開始解壓。默認會解壓到當前目錄下的 jdk1.5.0_22 目錄下(此處是 ~/ jdk1.5.0_22 )。
3.2 JDK 版本切換
如果同時需要使用 JDK1.6 版做應用開發,則系統中將同時存在 JDK1.5 和 JDK1.6 。 因此需要實現能夠在不同版本間切換。如果不使用 JDK1.6 ,請做完 1.5 版 的設置後跳至 3.3 節。
這裏使用 update-alternatives 命令實現。
首先爲 JDK1.5 版生成可選配置選項:
update-alternatives
--install /usr/bin/jdk jdk /root/jdk1.5.22 255
(sudo
update-alternatives --install /usr/bin/jdk jdk /home/ynb/jdk1.5.0_22 255)
/usr/bin/jdk 是符號鏈接,它指 向 /etc/alternatives/jdk (由第 2 個參數 給出的), /root/jdk1.5.22(/home/ynb/jdk1.5.0_22) 是 實際目的鏈接, 255 是優先級(任意整數, 在 automatic mode 自動模式 時,數字大的優先級較高,被選爲默認配置選項)。
然後再爲 JDK1.6 版生成(如果有 JDK1.6 的話。不使用 JDK1.6 的請跳至 3.3 節 ):
update-alternatives --install /usr/bin/jdk jdk /root/jdk1.6.20 0
這樣,默認 jdk 版本即爲 1.5 版。 需要切換到 1.6 版時,請使用 update-alternatives –config jdk
3.3 配置 JDK 環境變量
下面開始配置環境變量。
在終端中執行: sudo gedit ~/.bashrc
修改 .bashrc 文件,添加下面語句:
#set java environment
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
該段代碼最好設置在文件的尾部。
保存文件。在終端中執行 source ~/.bashrc
重啓系統請使用 java –version 檢查 JDK 是否 配置正確。
4. 用 apt-get install 方式安裝 JDK1.5 :
Android 要求的 jdk 1.5, 而 Ubuntu10.4 的源裏只有 JDK1.6. 如果安裝了 jdk1.6 請先卸載 :
$sudo apt-get remove remove openjdk-6-jdk
$sudo apt-get remove remove openjdk-6-jre
$sudo apt-get remove remove openjdk-6-jre-headless
安裝
jdk1.5目前網上解決方法有兩種:
解決方法一
(
建議
)
:
安裝
JDK1.5
1)
根據官方文檔裏所說
,源代碼的編譯必須使用
JDK5才能編譯的了,所以這裏偶使用
jdk5
2)
需要先更新源
,在終端裏執行
sudo
vim /etc/apt/sources.list
3)
在
source.list裏把以下
2行拷貝到文檔最後面:
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
保存退出。
4)
執行
sudo
apt-get update 更新源
.
5)
配置編譯環境並下載
JDK5:
sudo apt-get
install sun-java5-jdk
解決方法二:
安裝
JDK 1.6
, 修改
Android源文件。
1)
安裝
jdk 1.6,修改
<src_top/build/core/make.mk>(如果
2.0版本源碼請修改
<src_top/build/core/main.mk>)
在文件中搜索並分別把:
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[
"]1.5[. "$$]')
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[
"]1.5[. "$$]')
兩行改成:
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[
"]1.6[. "$$]')
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[
"]1.6[. "$$]')
即可。
推薦使用第一種解決方法。
5 . 安裝其他必備組件
在終端上,使用下面的命令安裝: ( 前面的 1 、 2 、 3 步驟都可以省略啦 )
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
因爲 JDK1.5 在前面已經單獨安裝過了,因此此處 apt-get install 命令行中沒有加入 sun-java5-jdk 。