源代碼下載:http://source.android.com/
SDK下載:http://code.google.com/android/
只說(shuō)在linux下的環(huán)境配置。
* Git 1.5.4 或更新的版本。如何安裝和配置Git的說(shuō)明在下面。
* Python 2.4,你可以從python.org下載。
* JDK 5.0,update 12 或更高,你可以從java.sun.org下載.
* 需要的包:flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential??梢赃\(yùn)行一下命令獲得包:$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
* 你也許會(huì)需要Valgrind。這個(gè)工具可以幫你找到內(nèi)存泄漏,堆棧溢出,數(shù)組越界之類(lèi)的問(wèn)題??梢赃\(yùn)行一下命令安裝:$ sudo apt-get install valgrind
l 安裝Repo
a) 下載Repo腳本
$ sudo curl http://android.git.kernel.org/repo >~/bin/repo
$ sudo chmod a+x ~/bin/repo
b) 創(chuàng)建一個(gè)空文件夾來(lái)儲(chǔ)存源代碼:
$ mkdir mydroid
$ cd mydroid
c) 運(yùn)行repo init下載最新版本的Repo,包含了最近的bug修復(fù)。
$ repo init -u git://android.git.kernel.org/platform/manifest.git
d) 按提示,輸入你的名字和email地址來(lái)配置Repo。如果你打算提供代碼,建議你使用捆
綁google帳戶(hù)的的email。
如果成功初始化將會(huì)有如下信息提示:
repo initialized in /mydroid
l 安裝Git
運(yùn)行:sudo apt-get install git-core gnupg
l 下載文件
從默認(rèn)地址下載源代碼到你工作目錄:
$ repo sync
關(guān)于repo更多的用法查看Using Repo。
andriod源代碼以它們各自項(xiàng)目名稱(chēng)存于你工作目錄
<這里說(shuō)明下,要是有現(xiàn)成的源代碼沒(méi)有必要安裝Git,直接編譯即可>
l 編譯code
在工作目錄下運(yùn)行make:
$ cd ~/mydroid
$ make
如果你編譯失敗,并提示missing了“run-java-tool”。嘗試在making前設(shè)置環(huán)境變量ANDROID_JAVA_HOME到$JAVA_HOME
例如:
$ export ANDROID_JAVA_HOME=$JAVA_HOME
在工作目錄下運(yùn)行make sdk即可
注意事項(xiàng):
l 安裝Java開(kāi)發(fā)包的時(shí)候,不要安裝sun-java6-jdk,要安裝sun-java5-jdk避免出現(xiàn)make doc
的錯(cuò)誤
l 解決直接使用源碼中應(yīng)用作為基于SDK之上的工程出現(xiàn)的有些符號(hào)找不到的問(wèn)題
這里是利用的Browser的源碼,直接在google之上的SDK進(jìn)行編譯,出現(xiàn)了很多符號(hào)找不到的問(wèn)題,以下列出解決方法:
a) 拿android.net.WebAddress類(lèi)為例,在很多Google自帶的應(yīng)用中使用過(guò),但是要是直接在編譯后的SDK上拿來(lái)用,就發(fā)現(xiàn)此對(duì)象在SDK中找不到,解決辦法就是,在其包的源碼上的前幾行的注釋有{@hide}這個(gè)標(biāo)識(shí),刪掉改行后進(jìn)行編譯所生成的SDK中就包含了android.net.WebAddress的對(duì)象。所以如果下面什么類(lèi)找不到,就到類(lèi)所在的源文件中重復(fù)以上修改即可。 即便按照以上操作,可能也會(huì)出現(xiàn)有的包找不到的情況,這種情況就例如包com.google.android.googleapps.IGoogleLoginService和com.google.android.googlelogin.GoogleLoginServiceConstants,解決方法就是在調(diào)用改類(lèi)的工程程序中,包含以下外部的jar包:framework/opt/com.google.android/frame.jar和framework/opt/com.google.android.googlelogin/client.jar
編譯成功會(huì)出現(xiàn)以下信息:
Generated: (out/target/product/generic/android-info.txt)
Target system fs image:
out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
在工作目錄下設(shè)置環(huán)境變量
. build/envsetup.sh
partner_setup
emulator
或者
在~/bin/mydroid/out/target/product/generic/ 目錄下運(yùn)行命令:
emulator -image system.img -data userdata.img -ramdisk ramdisk.img
再有錯(cuò)誤就做如下操作
export ANDROID_PRODUCT_OUT=/home/fgxue/bin/mydroid/out/target/product/generic
~/bin/mydroid/out/host/linux-x86/bin/emulator -image system.img -data userdata.img
-ramdisk ramdisk.img
聯(lián)系客服