最近根據(jù)看到的資料編譯了一遍Android操作系統(tǒng)的源碼,結(jié)果是成功的,,但過程是曲折,,首先要說的是前提條件,這個很重要,我開始就是因為沒有滿足前提條件而多走了許多彎路,。 1,、從http://source.獲取最新的Android源碼編譯資料,這個不是下面編譯必須用到的,, 但確是所有有關(guān)Android操作系統(tǒng)源碼的編譯資料中較為準(zhǔn)確的,。
2、使用ubuntu linux 12.04 LTS,,如果你要按照我寫的嘗試一下就選這個,,這樣可以節(jié)省你的時間;
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
在我寫這篇文章時,,上述安裝都是成功的,但到您看到時是否成功就不敢保證了,,因為有可能有些軟件源 已經(jīng)發(fā)生變化了,,如果出現(xiàn)這種情況可以根據(jù)安裝中出現(xiàn)的提示中的關(guān)鍵詞上網(wǎng)上查查最新的解決方案,一般都 是更新軟件源,,下面是更新軟件源的一般方法: 【備份軟件源】 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (如果想恢復(fù)原來的軟件源執(zhí)行: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)如果系統(tǒng)已經(jīng)安裝了jdk和jre最好先卸載掉;(apt-get remove jdk軟件名) (2)更新jdk軟件源 sudo add-apt-repository " deb http://us.archive./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,、設(shè)置環(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
執(zhí)行:sudo source ~/.bashrc 建議:干到這里最好重啟一下ubuntu,。
6、安裝編譯工具 【先解決一個android官網(wǎng)下載不了的問題】 sudo gedit /etc/hosts 在文件尾部追加一句:74.125.237.1 dl-ssl.google.com
cd ~ mkdir bin 以下命令用http://source./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./platform/manifest -b android-cts-2.2_r8
- repo sync
這是一個漫長的過程,,最好在個假期中進行,。、
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./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./download)
- #$(info ************************************************************)
- #$(error stop)
- #endif
11,、編譯前的最后一次準(zhǔn)備
- cd ~/work/android-cts-2.2_r8
- source ./build/envsetup.sh
- lunch full-eng
12、編譯源代碼 好了經(jīng)過漫長的準(zhǔn)備終于可以編譯了,。
- cd ~/work/android-cts-2.2_r8
- make
這個也是個漫長的過程,,在假期中耐心等待吧,。
13,、運行編譯察看結(jié)果 如果上面sudo gedit /etc/profile 編譯成功的話我們就可以進行這一步用虛擬機看看結(jié)果了。 (1)到Android官網(wǎng)下載SDK,,http://developer./sdk/index.html (2)將下載的SDK解壓縮到主文件夾,,并改名為android-sdk-linux。 (3)sudo gedit /etc/profile 將 export PATH="$PATH:~/android-sdk-linux/tools" 寫入文件最后 (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
寫入文件結(jié)尾。 (5)用android 命令打開Android SDK Manager界面,,下載安裝android2.2的SDK Platform,。 (6)終于可以看結(jié)果了
- cd ~/work/android-cts-2.2_r8/out/target/product/generic
- emulator -image system.img -data userdata.img -ramdisk ramdisk.img
|