- Ubuntu環(huán)境下 Android平臺(tái)源碼的下載及編譯
- 2012-02-02 17:08:56 我來(lái)說(shuō)兩句
- 收藏
我要投稿
- 本文介紹Ubuntu環(huán)境下Android源碼下載及編譯方法,Android源碼是什么?Android源碼就是指Android平臺(tái)和軟件源碼,不單指Linux內(nèi)核Kernel,我們常說(shuō)的Linux Kernel在這個(gè)Open source project里,只是其中的一個(gè)組成部分。那么我們什么時(shí)候需用到Andriod源碼呢?添加修改驅(qū)動(dòng)、固化APK應(yīng)用、定制OS、權(quán)限及服務(wù)修改或固化等等,大都需要修改到Android源碼,當(dāng)然了做單純的上層APK開(kāi)發(fā)也可以使用,Android源碼比較大,大概有3G+(不包含Linux內(nèi)核),所以大家在下載前已經(jīng)把磁盤(pán)空間配置好,免得浪費(fèi)一個(gè)晚上時(shí)間。
以下是自測(cè)環(huán)境情況: Ubuntu 10.10 x86 Android 2.3 主要參考網(wǎng)址: Android源代碼官方網(wǎng)站:http://source. 編譯參考1:http://source./source/initializing.html 編譯參考2:http://source./source/downloading.html 編譯參考3:http://source./source/building.html 編譯參考4:http://source./source/building-devices.html 下面就把a(bǔ)ndroid源碼在ubuntu 10.10上下載、編譯過(guò)程匯總一下,官方文檔比較詳細(xì)的,本文以摘要匯總補(bǔ)充為主,如仍有問(wèn)題盡量參考官方網(wǎng)頁(yè)或留言。 一、初始環(huán)境搭建 1、安裝JDK 下面是安裝Java 6的命令格式,按照順序在終端中執(zhí)行: Java 6(for android 2.1+): $ sudo add-apt-repository "deb http://archive./ lucid partner" $ sudo add-apt-repository "deb-src http://archive./ubuntu lucid partner" $ sudo apt-get update $ sudo apt-get install sun-java6-jdk 假如你想切換JAVA版本(安裝多個(gè)JAVA版本時(shí)),輸入如下指令: sudo update-alternatives --config java sudo update-alternatives --config javac 使用如下指令查看當(dāng)前的Java版本號(hào): java -version 補(bǔ)充:如何在兩個(gè)版本的java jdk中切換 由于開(kāi)發(fā)需要,我得安裝java5和java6在ubuntu上,如何從一個(gè)版本的java切換到另外一個(gè)版本?update-java-alternatives 可以幫你實(shí)現(xiàn)這個(gè)功能。 你可以使用update-java-alternatives -l 來(lái)查看已經(jīng)安裝的jdk版本。 dallas@dallas-desktop:~/work$ update-java-alternatives -l java-1.5.0-sun 53 /usr/lib/jvm/java-1.5.0-sun java-6-sun 63 /usr/lib/jvm/java-6-sun 然后可以使用update-java-alternatives -s xxx來(lái)選擇需要使用的jdk版本 update-java-alternatives -s java-6-sun 2、安裝編譯工具 以下命令,一次執(zhí)行全部需要的編譯工具安裝 $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline5-dev libz-dev libgl1-mesa-dev 天緣在測(cè)試時(shí)使用上面的配置,似乎沒(méi)發(fā)現(xiàn)缺少什么,如果缺少某個(gè)軟件包,可使用命令再單獨(dú)補(bǔ)充安裝,比如安裝libc6-dev-i386,命令如下: sudo apt-get install libc6-dev-i386 二、下載Android源碼 3、創(chuàng)建工作目錄 進(jìn)入工作目錄(比如works),創(chuàng)建bin目錄: mkdir ~/works mkdir ~/works/android_dev cd ~/works/android_dev mkdir bin 4、安裝repo版本管理工具(基于git基礎(chǔ)開(kāi)發(fā),便于git資源管理) curl http://android.git./repo > ~/works/android_dev/bin/repo cd bin chmod a+x repo 關(guān)于repo更多參考:http://source./source/version-control.html 5、準(zhǔn)備下載Android源碼 cd ~/works/android_dev ./bin/repo init -u git://android.git./platform/manifest.git 這里默認(rèn)下載最新的的版本(2.3),如果下載其它版本,請(qǐng)使用類(lèi)似下面命令(后面為版本簡(jiǎn)稱): repo init -u git://android.git./platform/manifest.git -b cuccake 6、配置repo賬戶 git config --global user.email "[email=abc@gmail.com]abc@gmail.com[/email]" git config --global user.name "ABc" 7、開(kāi)始下載android platform的源代碼 ./bin/repo sync 由于android 的源碼很大,現(xiàn)在新版本的完整源碼已經(jīng)高達(dá)3G 以上,都是從GG官方下載,速度很慢(時(shí)間大約要一個(gè)晚上),執(zhí)行后可以回家睡覺(jué)或出去通宵均可,有一點(diǎn)需注意在下載之前一定要確保你的磁盤(pán)可用空間足夠。 如要下載kernel(即Linux內(nèi)核源碼): $repo sync kernel 8、添加公鑰 $ gpg --import 該命令是交互式導(dǎo)入公鑰,參照Google官方說(shuō)明,這個(gè)公鑰是用來(lái)簽名TAGS以表明該版本為RELEASE版本(這里翻譯似乎有點(diǎn)問(wèn)題,原話是The key is used to sign annotated tags that represent releases)這一步不執(zhí)行仍時(shí)可以正常編譯的,但如編譯Release版本時(shí),建議加上,gpg(GNU Privacy Guard)是個(gè)開(kāi)源加解密軟件,交互導(dǎo)入密鑰參考上文的官方downloading.html這個(gè)頁(yè)面,還可參考文末地址。 9、選擇版本 $ git tag -v tagname 只需選擇版本就可以了,是普通版還是精簡(jiǎn)版或是其它,直接敲數(shù)字和回車(chē)就可以了。 三、編譯Android源碼 10、更新環(huán)境變量(選擇編譯目標(biāo)) source build/envsetup.sh 11、選擇編譯目標(biāo)對(duì)象 命令格式:BUILD-BUILDTYPE,其中BUILD和BUILDTYPE可參考官方網(wǎng)頁(yè)【編譯參考3和編譯參考4】。命令如果不支持或打錯(cuò)會(huì)有提示信息。比如: lunch full-eng 其它命令如, lunch full_crespo-userdebug 匯總格式如下: lunch (generic,full,full_crespo,crespo4g,passion)-(user,userdebug,eng) 上面是默認(rèn)的設(shè)置,如果需要針對(duì)開(kāi)發(fā)用機(jī),可以選擇使用source build/envsetup.sh命令查看,Android 2.3代碼支持htc,sumsung等三款目標(biāo)機(jī)型。更多請(qǐng)參考上文提及的官方網(wǎng)頁(yè),官方提到Nexus S和Nexus s 4G是Android開(kāi)源項(xiàng)目的推薦用機(jī),而Nexus One只是試驗(yàn)用機(jī)且不被支持(何意?原生代碼編譯后無(wú)法燒到Nexus One??)。 12、編譯Android源碼 make -j4 注意:該指令是帶杠的jn(起初天緣總是不能運(yùn)行,就直接用make了,三天后才發(fā)現(xiàn)原來(lái)丟了個(gè)杠杠*_*),按照官方介紹,后面這個(gè)-jn是你機(jī)子CPU數(shù)*核心數(shù)*單CPU線程數(shù)*(1或2),編譯時(shí)間大概40分鐘-2個(gè)小時(shí),看機(jī)子性能了,最終編譯結(jié)果在: ~/works/android_dev/out 另外,編譯之前建議把/works/android_dev整個(gè)目錄備份一下,下次如果重裝系統(tǒng),可以直接拷貝過(guò)來(lái)使用,再編譯時(shí)可能需要設(shè)置一下權(quán)限(chmod -R 777 android_dev),否則可能錯(cuò)誤多多。 四、運(yùn)行Android虛擬機(jī) 13、先設(shè)置環(huán)境變量 指令如下: export ANDROID_PRODUCT_OUT=/works/android_dev/out/target/product/generic 設(shè)置完成后,先logout退出,再login登錄進(jìn)來(lái)即可更新環(huán)境變量。 注意,這里的環(huán)境變量設(shè)置也可以起初放到系統(tǒng)的配置文件里,.bashrc,天緣實(shí)測(cè)好像就這么一句就OK了,網(wǎng)上有說(shuō)要設(shè)置如下幾個(gè)(如果運(yùn)行有問(wèn)題時(shí)可以嘗試使用,指令中部分路徑可能需替換成你自己的設(shè)置): export ANDROID_DIR=~/works/android_dev export ANDROID_PRODUCT_OUT=${ANDROID_DIR}/out/target/product/generic export ANDROID_PRODUCT_OUT_BIN=${ANDROID_DIR}/out/host/linux-x86/bin export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT}; 14、運(yùn)行編譯結(jié)果 進(jìn)入android_dev/out/host/bin/目錄下,然后運(yùn)行: emulator --debug-init -skin QVGA-L 或: ./emulator 即可顯示機(jī)器人界面。 補(bǔ)充: 映像編譯成功后會(huì)在目錄~/works/android/out/target/product/generic 下產(chǎn)生一些image文件ramdisk.img system.img userdata.img android-info.txt,關(guān)于這些映像使用,后面文章會(huì)介紹。
|