1. 程式人生 > >編譯Android ROM環境搭建

編譯Android ROM環境搭建

1.7 prot 重裝 root make offic ssh ubunt -i

環境搭建

1 安裝ubuntu 推薦12.04或13.10
2 安裝jdk7和一些所需要的包
安裝jdk7
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk
或者手動下載jdk-7 安裝 http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html
chmod u+x ...
增加執行權限並執行安裝,
安裝在你選擇目錄並修改環境變量

sudo vim ~/.bashrc (如果沒有安裝vim先執行:sudo apt-get install vim)

export JAVA_HOME=/java/jdk1.7.0_51 ---這是我的安裝目錄,替換成你相應的安裝目錄即可export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH


安裝依賴包:
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \

libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
3 安裝eclipse
下載http://www.eclipse.org/downloads/
解壓到你選定的目錄即可
//eclipse在ubuntu13.10下可能出現無法下拉工具欄現象,具體解決辦法可參考http://my.oschina.net/kinsomc/blog/178997

4 設置ccache (可選)
在~/.bashrc中添加
export USE_CCACHE=1
prebuilt/linux-x86/ccache/ccache -M 50G

5 安裝repo
$ mkdir ~/bin
添加環境變量
$ PATH=~/bin:$PATH(需要在~/.bashrc 中添加 export PATH=~/bin:$PATH)
下載repo
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo //有可能出現網絡不可到達的現象,多試幾次就行.也可以使用該網址(curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ~/bin/repo),如果沒安裝curl可以先安裝,sudo apt-get install curl
$ chmod a+x ~/bin/repo
6 配置git
$ git config --global user.name "username"
$ git config --global user.email "[email protected]"
7 ssh-key
在小米提交和review代碼需要ssh-key做機器的身份驗證。
1. 生成ssh-key
$ ssh-keygen
這將在home下建立.ssh目錄。請備份好該目錄,以後重裝系統可以拷貝回來。
2. 用自己帳號登錄http://git.xiaomi.com:8088
3. 進入ssh設置http://git.xiaomi.com:8088/#/settings/ssh-keys
4. 點擊Add key按鈕,將~/.ssh/id_rsa.pub的內容粘貼到文本框中。確定即可。

8 具體MIUI版本下載
具體的MIUI版本管理的流程,請參考版本管理概況。
我們的代碼庫的地址是git.xiaomi.com:libra2/platform/manifest.git,所以一般說來,一個repo init命令應該是:
$ repo init -u [email protected]:libra2/platform/manifest.git -b jellybean -m aries.xml [email protected]:aosp/tools/repo.git
其中-b表示branch,MIUI基本上都在jellybean上進行開發,ICS和Gingerbread基本不再維護。 其中-m表示manifest文件,上述的aries.xml表示小米手機2的開發版,類似的還有:aries-jb-alpha.xml表示小米手機2的體驗版,pisces-jb.xml表示小米手機3的開發版,等等。 還有很多,如果需要,請找相關人員咨詢。
初始化repo完成之後,需要用sync下載代碼,這個過程需要的時間較長,可能長達半小時甚至一小時。
$ repo sync -j8
//過程中如果出現提示輸入密碼的情況,在確定ssh-key已經設定正確的情況下就多執行幾次上面的命令就可以了

9 編譯代碼
編譯代碼首先要進入你的代碼目錄。
首先要初始化環境變量:
$ . build/envsetup.sh
然後,選擇你的編譯模式和目標版本:
$ lunch
基本上,你可以選擇你的機型相關的版本即可,其中eng表示工程師版(可調試),user表示用戶版,debug當然表示調試版。aries表示小米手機2的開發版
最終的編譯命令應該是:
$ make otapackage -j4 (-j4 代表起4個線程)

10 編譯系統/apps

僅編譯系統

當你做了某些修改,需要編譯整個系統(不包括boot等)時,需要用下面的命令:
$ make systemimage -j4

apps

如果你只需要編譯某一個app,則需要進入到app相應的目錄,使用mm命令。
$ mm
或者,你也可以在主目錄下使用make + app目錄下Android.mk中的LOCAL_PACKAGE_NAME,不過這樣稍慢。
$ make Phone -j4
編譯framework裏面的東西也跟app類似。

11 USB連接設備,只需要打開開發者選項即可順利連接

12 刷機

刷整個系統

首先你必須找打你編譯出來的image文件,一般說來,他們位於你的代碼目錄下out/target/product/<手機代號> /中,其中後綴通常是img。比如小米手機3的代號是pisces,那麽目錄就應該是out/target/product/pisces/。
進入刷機模式(fastboot模式):
$ adb reboot bootloader(使手機進入刷機狀態)
刷system,userdata, boot:
$ fastboot flash system out/target/product/pisces/system.img
$ fastboot flash userdata out/target/product/pisces/userdata.img
$ fastboot flash boot out/target/product/pisces/boot.img
重啟手機
$ fastboot reboot

只刷修改的App

編譯、刷整個系統都需要很長的時間,所以我們一般調試時都只刷我們修改過的app。
編譯好app後,先root手機:
$ adb root
然後remount讓system分區可寫:
$ adb remount
然後就可以把你的app push到手機上相應的目錄,如:
$ adb push out/target/product/pisces/system/app/Phone.apk /system/app
如果你修改的不是system/app下apk,而是在system/framework下的jar,你可能還需要重啟手機才能生效:
$ adb reboot
13 適用Eclipse查看編輯調試源代碼
進入你下載的源碼目錄,把eclipse工程配置文件復制到android源碼根目錄下cp development/ide/eclipse/.classpath ./
chmod u+w .classpath # Make the copy writable //使可寫便於修改
修改eclipse程序的配置,增大eclipse內存設置 把eclipse.ini(在eclipse軟件的安裝目錄下)的3個值改為下面的值:-Xms128m-Xmx512m-XX:MaxPermSize=256
把android源碼作為一個工程導入eclipse 導入前先檢查.classpath裏的文件在android源碼中是否有相應的文件(文件夾),否則也會破壞android源碼(一般是多添加文件/文件夾),.classpath裏多余的路徑可刪除,沒有的需要添加。新建Java Project(不是android project,否則會破壞android源碼),選擇從已存在的工程導入,工程名任意,完成。也可以直接import(可能會出現一些重復的項目)

編譯Android ROM環境搭建