Ubuntu14.04 編譯 Android 5.1.1源碼(采用國內鏡像)


歡迎轉載,轉載請注明出處: http://www.cnblogs.com/lanrenxinxin/p/5424554.html

之前就有編譯android源碼的想法,但是由於有GFW的存在,又沒有梯子,連開發工具都是經過androiddevtools從百度雲弄下來的,前兩天發現了清華大學AOSP的鏡像站點,就想着從上面git android 源碼,然后編譯。在這里做個簡單的記錄,和大家分享一下,畢竟小水管不容易,下載源碼加編譯花了接近兩天。

1.安裝openjdk-7-jdk

$  sudo apt-get install openjdk-7-jdk

安裝好之后修改 /etc/profile 中的環境變量,將openjdk加入到JAVA_HOME中

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/

我因為之前就有裝過Oracle jdk,就直接把Open Jdk 附在了后面

然后使修改的配置文件立即生效:

$  .  /etc/profile

查看java 這時使用的jdk 就是Open Jdk

接下來安裝必備的工具軟件

$ 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-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev

注意,上面使官方的需要安裝的包,但是在實際中,我安裝的時候報錯了,

ERROR:
unity-control-center : 依賴: libcheese-gtk23 (>= 3.4.0) 但是它將不會被安裝
                       依賴: libcheese7 (>= 3.0.1) 但是它將不會被安裝

這里的報錯是因為是由 libgl1-mesa-glx:i386 報引起的,需要替換掉,更改為:

 

$ sudo apt-get install libgl1-mesa-glx-lts-quantal:i386

 

 

接下來配置Cache,使用下面兩條命令

$ sudo apt-get install ccache  
$ source  ~/.bashrc  

 

然后就是下載repo :

首先創建repo 目錄

$ mkdir ~/bin  
$ PATH=~/bin:$PATH  

 

然后就是下載repo,google官方被牆了,這里用的是清華大學鏡像的:

$ git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/ 


然后將git-repo 目錄中的repo 文件拷貝到 bin目錄

$ cp  git-repo/repo  ~/bin/  


接下來打開bin目錄下的repo 文件,修改其中的  REPO_URL 參數,修改為:

REPO_URL = 'git://aosp.tuna.tsinghua.edu.cn/android/git-repo' 

 

接下來就需要初始化repo:

先創建目錄aosp,就是等會要存放android源碼的目錄

 

$ mkdir ~/aosp  

進入到aosp目錄中

$ cd ~/aosp

初始化repo,最新的android 都可以進行下載,以下三條命令任意執行一條就可以了,會下載不同版本的android源碼,我采用的是android-5.1.1

$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.1.1_r4

$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-6.0.1_r22

$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-n-preview-1

在初始化的時候會要求輸入名字和郵箱,正常輸入就可以了。

 

最耗時間的步驟來了,下載android源碼

$ repo sync  


我在同步的過程中有好幾次出現Error,不用管,加上參數 -f 繼續同步

$ repo sync -f

這個過程是很漫長的,我的小水管用了一天多才同步完成。

 

下載完成之后就是編譯了,我的計算機是雙核4線程,編譯的還比較快,用了差不多5個小時編譯完成:

1) 設置cache

$ cd aosp  
$ prebuilts/misc/linux-x86/ccache/ccache -M 50G  


2) 初始化編譯環境

$ . build/envsetup.sh

3)選擇編譯目標包

      有很多中,可以用lunch命令查看,我選擇的是最常用的arm

$ lunch aosp_arm-eng   

4)編譯

可以在 make 后設置參數,加快編譯速度,我用的是

$ make -j4

表示4個線程進行編譯,因為我的計算機是雙核4線程,如果機器配置更好,可以開更多的線程,減少編譯時間

make 失敗或停止后,可以使用make -k 繼續編譯,不過我是一次就編譯成功了。

 

編譯成功之后

會在aosp目錄下編譯產生out目錄

 

然后就可以運行編譯產生的模擬器了:

$ emulator &

 

運行的結果就是這樣:

 

下次如果執行emulator 命令提示command not found,則需要進入aosp目錄執行. build/envsetup.sh 和 lunch 命令,lunch命令會將 prebuilts/android-emulator/linux-x86_64/ 加入到PATH環境變量中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM