最近根據看到的資料編譯了一遍Android操作系統的源碼,結果是成功的,但過(guò)程是曲折,首先要說(shuō)的是前提條件,這個(gè)很重要,我開(kāi)始就是因為沒(méi)有滿(mǎn)足前提條件而多走了許多彎路。
1、從http://source.android.com獲取最新的Android源碼編譯資料,這個(gè)不是下面編譯必須用到的,
但確是所有有關(guān)Android操作系統源碼的編譯資料中較為準確的。
2、使用ubuntu linux 12.04 LTS,如果你要按照我寫(xiě)的嘗試一下就選這個(gè),這樣可以節省你的時(shí)間;
3、安裝相關(guān)軟件包
- sudo apt-get install git-core
- sudo apt-get install gnupg
- sudo apt-get install flex
- sudo apt-get install bison
- sudo apt-get install gperf
- sudo apt-get install libsdl-dev
- sudo apt-get install libesd0-dev
- sudo apt-get install build-essential
- sudo apt-get install zip
- sudo apt-get install curl
- sudo apt-get install libncurses5-dev
- sudo apt-get install zlib1g-dev
在我寫(xiě)這篇文章時(shí),上述安裝都是成功的,但到您看到時(shí)是否成功就不敢保證了,因為有可能有些軟件源
已經(jīng)發(fā)生變化了,如果出現這種情況可以根據安裝中出現的提示中的關(guān)鍵詞上網(wǎng)上查查最新的解決方案,一般都
是更新軟件源,下面是更新軟件源的一般方法:
【備份軟件源】
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
(如果想恢復原來(lái)的軟件源執行:sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list)
【編輯軟件源】
sudo gedit /etc/apt/sources.list
將更新的軟件源在文件尾部添加并保存退出
【更新軟件源】
sudo apt-get update
4、安裝java jdk
(1)如果系統已經(jīng)安裝了jdk和jre最好先卸載掉;(apt-get remove jdk軟件名)
(2)更新jdk軟件源
sudo add-apt-repository " deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse"
sudo apt-get update
(3)安裝java jdk6
sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts sun-java6-jdk
(4)安裝java jdk5
sudo apt-get install sun-java5-jdk
(5)修改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
5、設置環(huán)境變量
sudo gedit ~/.bashrc
在文件尾部添加
- JAVA_HOME=/usr/lib/jvm/java-6-sun
- JRE_HOME=${JAVA_HOME}/jre
- export ANDROID_JAVA_HOME=$JAVA_HOME
- export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
- export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
- export JRE_PATH=$JAVA_PATH
- export JAVA_HOME;
- export JRE_HOME;
- export CLASSPATH;
- HOME_LIB=~/bin/
- export PATH=${PATH}:${JAVA_PATH}:${JRE_PATH}:${HOME_BIN};
- #echo $PATH
執行:sudo source ~/.bashrc
建議:干到這里最好重啟一下ubuntu。
6、安裝編譯工具
【先解決一個(gè)android官網(wǎng)下載不了的問(wèn)題】
sudo gedit /etc/hosts
在文件尾部追加一句:74.125.237.1 dl-ssl.google.com
cd ~
mkdir bin
以下命令用http://source.android.com/source/downloading.html上的
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
7、安裝gcc4.4
- sudo apt-get install gcc-4.4
- sudo apt-get install g++-4.4
- sudo apt-get install g++-4.4-multilib
- sudo rm -rf /usr/bin/gcc /usr/bin/g++
- sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
- sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
8、安裝python
sudo apt-get install python
9、下載Android源代碼
- mkdir ~/work/android-cts-2.2_r8
- cd ~/work/android-cts-2.2_r8
- repo init -u https://android.googlesource.com/platform/manifest -b android-cts-2.2_r8
- repo sync
這是一個(gè)漫長(cháng)的過(guò)程,最好在個(gè)假期中進(jìn)行。、
10、將源代碼中有關(guān)java版本校驗的信息注釋掉
cd ~/work/android-cts-2.2_r8
gedit ./build/core/main.mk
- # Check for the correct version of java
- #java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1\.5[\. "$$]')
- #ifeq ($(strip $(java_version)),)
- #$(info ************************************************************)
- #$(info You are attempting to build with the incorrect version)
- #$(info of java.)
- #$(info $(space))
- #$(info Your version is: $(shell java -version 2>&1 | head -n 1).)
- #$(info The correct version is: 1.5.)
- #$(info $(space))
- #$(info Please follow the machine setup instructions at)
- #$(info $(space)$(space)$(space)$(space)http://source.android.com/download)
- #$(info ************************************************************)
- #$(error stop)
- #endif
- # Check for the correct version of javac
- #javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1\.5[\. "$$]')
- #ifeq ($(strip $(javac_version)),)
- #$(info ************************************************************)
- #$(info You are attempting to build with the incorrect version)
- #$(info of javac.)
- #$(info $(space))
- #$(info Your version is: $(shell javac -version 2>&1 | head -n 1).)
- #$(info The correct version is: 1.5.)
- #$(info $(space))
- #$(info Please follow the machine setup instructions at)
- #$(info $(space)$(space)$(space)$(space)http://source.android.com/download)
- #$(info ************************************************************)
- #$(error stop)
- #endif
11、編譯前的最后一次準備
- cd ~/work/android-cts-2.2_r8
- source ./build/envsetup.sh
- lunch full-eng
12、編譯源代碼
好了經(jīng)過(guò)漫長(cháng)的準備終于可以編譯了。
- cd ~/work/android-cts-2.2_r8
- make
這個(gè)也是個(gè)漫長(cháng)的過(guò)程,在假期中耐心等待吧。
13、運行編譯察看結果
如果上面sudo gedit /etc/profile
編譯成功的話(huà)我們就可以進(jìn)行這一步用虛擬機看看結果了。
(1)到Android官網(wǎng)下載SDK,http://developer.android.com/sdk/index.html
(2)將下載的SDK解壓縮到主文件夾,并改名為android-sdk-linux。
(3)sudo gedit /etc/profile
將
export PATH="$PATH:~/android-sdk-linux/tools"
寫(xiě)入文件最后
(4)sudo gedit ~/.profile
將
- export PATH="$PATH:$HOME/work/android-cts-2.2_r8/out/host/linux-x86/bin"
- ANDROID_PRODUCT_OUT=$HOME/work/android-cts-2.2_r8/out/target/product/generic
- export ANDROID_PRODUCT_OUT
寫(xiě)入文件結尾。
(5)用android 命令打開(kāi)Android SDK Manager界面,下載安裝android2.2的SDK Platform。
(6)終于可以看結果了
- cd ~/work/android-cts-2.2_r8/out/target/product/generic
- emulator -image system.img -data userdata.img -ramdisk ramdisk.img