Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android編譯環鏡的搭建和編譯

Android編譯環鏡的搭建和編譯

編輯:關於Android編程

第一部分:Android開發環鏡的硬件和軟件平台

一、開發服務器配置

我用的是自己家裡的電腦搭建的編譯環鏡,主機配置為 i5-3230,4g DDR3 和 500g 硬盤。

二、軟件硬件平台選取

選取全志 A20 的硬件方案,作為最基本的硬件平台。使用全志提供的Android 4.4 SDK開發包。

第二部分:構建Android編譯環鏡

一、開始構建Linux編譯環鏡

1. 我安裝的是Ubuntu Kylin 14.04 AMD64版本(官網上是說要用64位的系統編譯)。

2. 編譯Gingerbread(2.3.x)以上android版本(包含主流版本),應使用64位系統環境。

3. 在虛擬機上是可以編譯android的,但是至少要保證16G的RAM或SWAP和不少於30G的磁盤空間。

4. 安裝以下工具:Python 2.6-2.7,GNU Make 3.81-3.82,JDK 6(sun-java6-jdk),Git 1.7 or newer。

備注:1)Python的下載路徑:http://www.python.org/download/ ,官網上是推薦安裝 2.x 的版本,說 3.x 的版本與repo不兼容,如下官網的截圖所示:

\

但是在Ubuntu Kylin 14.04 的系統中已經自帶有 Python 3.4的版本,我就沒有安裝了,但在後面的使用和編譯過程中並沒有發現不兼容的情況,所以如果有朋友若遇到不兼容的情況的話可以把它換成 2.x 版本的。如果沒有問題就不用換了。Python的安裝方法可以使用 sudo apt-get install python 安裝,或者在上面的下載網頁上下載 .tgz 的包,下載 .tgz 包後的安裝方法如下:

例如安裝在opt下:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+dGFyIC16eHZmIFB5dGhvbi0yLjcuNi50Z3o8YnI+CmNkIFB5dGhvbi0yLjcuNjxicj4KLi9jb25maWd1cmUgLS1wcmVmaXg9L29wdC9weXRob24yLjcuNjxicj4KbWFrZSAmYW1wOyZhbXA7IHN1ZG8gbWFrZSBpbnN0YWxsPC9wPgo8cD7TydPaVWJ1bnR1xKzIz77NsLLXsMHLUFlUSE9Oo6zQ6NKqyejWw1BBVEijrMq5tcO41bCy17C1xFBZVEhPTs/IsbvL0cv3tb2juii/ydLUseC8rbW9fi8uYmFzaHJjKTxicj4KZXhwb3J0IFBBVEg9L29wdC9weXRob24yLjcuNi9iaW46JFBBVEg8L3A+CjxwPjKjqW1ha2W1xM/C1NjCt762o7podHRwOi8vZnRwLmdudS5vcmcvZ251L21ha2Uvo6zSsr/J0tTWsb3TyrnTwyBzdWRvIGFwdC1nZXQgaW5zdGFsbCBtYWtlIL340NCwstewoaM8L3A+CjxwPrb+oaKwstewSkRLPC9wPgo8cD7O0srHsLS52c34yc+1xLK91uiwstewtcSjrLrzwLS3os/WQW5kcm9pZCA0LjS1xLHg0uvQ6NKq1NpKREs2tcS7+bShyc+jrMv50tS688C009a7u7PJSkRLNsHLo7o8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">$ sudo apt-get update $ sudo apt-get install openjdk-7-jdk

由於Ubuntu默認就安裝了openjdk,所以通過下面的指令來修改默認的JDK:

$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
備注:官方的推薦JDK版本:

Java 6: for Gingerbread through KitKat
Java 5: for Cupcake through Froyo

三、安裝依賴包

在Ubuntu Kylin 14.04 上我安裝好官方上所提到的12.04的依賴包後,在編譯lichee時報下面的錯誤:

"mkimage" command not found - U-Boot images will not be built

然後我使用 sudo apt-get install uboot-mkimage去安裝uboot-mkimage包,但發現在該系統上沒有這個包,安裝失敗,然後提示安裝u-boot-tools:i386 和 u-boot-tools這兩個包,我把這兩個包都安裝好之後,lichee編譯就可以通過了。所以在14.04的系統比12.04需要多安裝這兩個包,如下所示:

$ 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 u-boot-tools:i386 u-boot-tools
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

根據官方文檔 Ubuntu 12.04需要的安裝包為:

$ 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
Ubuntu 10.04 -- 11.10 需要安裝的依賴包為:

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
  x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc
On Ubuntu 10.10:

$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
On Ubuntu 11.10

$ sudo apt-get install libx11-dev:i386
四、配置USB設置:

The recommended approach is to create a file /etc/udev/rules.d/51-android.rules (as the root user) and to copy the following lines in it. must be replaced by the actual username of the user who is authorized to access the phones over USB.

# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER=""
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER=""
# adb protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER=""
# fastboot protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER=""
# adb protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER=""
# fastboot protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER=""
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER=""
# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER=""
# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER=""
# adb protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d002", MODE="0600", OWNER=""
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER=""
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER=""
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER=""
# adb protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER=""
# fastboot protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER=""
# adb protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER=""
# fastboot protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER=""

五、配置ccache

在你的.bashrc文件中增加下面的語句:

export USE_CCACHE=1

這時默認的緩存路徑是在~/.ccache,當然你也可以保存你自己定義的路徑中,自己可以設置你想要存放的路徑,在你的.bashrc文件中加入你需要存放的路徑:

export CCACHE_DIR=

我是就存放在我的根目錄下的,即:CCACHE_DIR=~/.ccache

建議的ccache大小是50~100G,在你把源代碼下下來之後在編譯之前需要在android的目錄下執行下面的這句代碼,這樣才能做緩存:

prebuilts/misc/linux-x86/ccache/ccache -M 50G
如果編譯的是Ice Cream Sandwich (4.0.x) 或者更舊的版本的話,那麼執行下面的這句:

prebuilt/linux-x86/ccache/ccache -M 50G
這個緩存的部分的話你可以設也可以不設,設了的話就可以起到緩存的作用,如果你在執行make clean後再重新編譯的話就會為你節省大量的時間,我有做過實驗,我在沒有設緩存的時候編譯和打包花了58分鐘的時候,但設了這個緩存後,發現只需要28分鐘,確實大大節省了時間。我是在我們的服務器上做的實驗。

六、配置輸出路徑:

可以在你的 .bashrc文件中配置編譯的輸出路徑:

export OUT_DIR_COMMON_BASE=
如果沒有配置輸出路徑的話,那麼默認的輸出文件是在android/out/target/ 對應的產品下面,貼上這部分官方的文檔:

The output directory for each separate source tree will be named after the directory holding the source tree.

For instance, if you have source trees as /source/master1 and /source/master2 and OUT_DIR_COMMON_BASE is set to /output, the output directories will be /output/master1 and /output/master2.

It's important in that case to not have multiple source trees stored in directories that have the same name, as those would end up sharing an output directory, with unpredictable results.

This is only supported on Jelly Bean (4.1) and newer, including the master branch.

第三部分:安裝repo,下載源代碼

一、安裝repo

在你的根目錄下創建bin文件夾:

$ mkdir ~/bin
$ PATH=~/bin:$PATH
下載repo,並增加可執行權限:

$ curl http://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
二、下載源代碼,全志的源代碼分成兩部分,分別為lichee和android部分:



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved