1. 程式人生 > >Ubunut 12.10 64位編譯 android 4.2.1_r1 原始碼

Ubunut 12.10 64位編譯 android 4.2.1_r1 原始碼

google推薦的編譯環境是在Ubuntu LTS(10.04),但是最新版本12.10已經出來,沒必要在舊版本上做文章了
對於2.3.X和更新的版本,需要64位的系統,之前的老版本2.2以下(包括2.2)可以在32位版本上編譯
對於虛擬機器,官網上寫的虛擬機器配置引數:16G RAM/swap & 30G+ 硬碟空間
PS: 全部編譯完畢後,才發現真的很耗空間 原始碼下載/編譯完成後,磁碟空間一共是33G $ du -h --max-depth=1 ./4.2/
4.2M    ./4.2/bootable
120K    ./4.2/libnativehelper
282M    ./4.2/packages
88M    ./4.2/development
1.6G    ./4.2/external
19G    ./4.2/out
53M    ./4.2/hardware
18M    ./4.2/bionic
9.1M    ./4.2/system
138M    ./4.2/cts
336K    ./4.2/pdk
116K    ./4.2/abi
5.1M    ./4.2/gdk
40M    ./4.2/libcore
1.2G    ./4.2/frameworks
4.9M    ./4.2/build
34M    ./4.2/tools
2.4G    ./4.2/prebuilts
43M    ./4.2/device
7.5G    ./4.2/.repo
55M    ./4.2/sdk
5.9M    ./4.2/docs
41M    ./4.2/dalvik
31M    ./4.2/ndk
33G    ./4.2/
言歸正題,按照官網的文件,安裝所需要的工具
Python 2.5 -- 2.7, 下載地址 python.org GNU Make 3.81 -- 3.82, 下載地址 gnu.org JDK 6 :2.3以上的版本; JDK 5 2.2和2.2以下的版本. 下載地址http://www.oracle.com/technetwork/java/javase/downloads/index.html Git 1.7 以上. 下載地址 git-scm.com.
前兩條Ubuntu 12.10系統自帶(新系統的好處),git後面會通過安裝必須包來安裝,所以只需要我們手動安裝JDK
安裝必要的編譯工具包

$ sudo apt-get install git-core 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 openjdk-6-jdk 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
PS: 後來發現這裡可以選擇不安裝openjdk。android生成主要用到的是 jdk1.6
安裝JDK 1.6.0

1.下載 2013-1-22,當前最新版本是 1.6.0_38
http://www.oracle.com/technetwork/java/javase/downloads/jdk6u38-downloads-1877406.html 這裡請選擇64位的linux版本,對應的下載檔名:jdk-6u38-linux-x64.bin.
2.安裝 修改檔案許可權,複製到/usr/lib/jvm,安裝 chmod a+x jdk-6u38-linux-x64.bin
sudo mv jdk-6u38-linux-x64.bin /usr/lib/jvm
cd /usr/lib/jvm
sudo ./jdk-6u38-linux-x64.bin 安裝後,在/usr/lib/jvm上會多出一個目錄(jdk1.6.0_38),其實執行.bin檔案感覺就是一個解壓檔案
3.環境配置

修改/etc/profile檔案 export JAVA_HOME="/usr/lib/jvm/jdk1.6.0_38"
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=".:$JAVA_HOME/bin" 建議重啟或登出一下系統,讓配置生效~~~
此時輸入: java --version檢視一下版本
java version "1.6.0_38"
Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.13-b02, mixed mode) 如果系統中有時候會安裝openjdk,我們還需要修改一下java的預設程式,讓他使用jdk1.6.0進行android編譯
安裝java/javac/jar,執行如下命令: sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_38/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_38/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_38/bin/jar 300
執行後這三個命令,網上的資源說可以自動切換到jdk1.6.0_38,但是我配置的時候不行,可能再通過下面這三個命令,手動指定了 sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config jar
程式碼下載:

下載repo,初始化下載環境,repo配置,同步 $ mkdir ~/bin  
$ PATH=~/bin:$PATH 
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo$ chmod a+x ~/bin/repo 
$ mkdir ~/android/sources
$ cd ~/android/sources
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.1_r1$ repo sync
下載是個漫長的過程,我的機子一個週末開著下載~~~good lucky~~~
編譯程式碼:
初始化指令碼, make編譯 $ source build/envsetup.sh
$ lunch full-eng
$ make -jN
這裡的三個命令參考官方的文件,官網上說明很詳細。特別是第二條命令的引數,你想生成什麼樣的配置,就設定什麼樣的引數 http://source.android.com/source/building.html
執行emulator

編譯成功後,執行模擬器
$ emulator 模擬器就執行起來了。。。