設定 AOSP 開發環境 (2.3 到 8.0)

本頁說明如何設定 Android 8.0 以下版本的開發環境。如要瞭解如何建構 Android 9.0 以上版本,請參閱「設定 AOSP 開發環境」。

設定 AOSP 開發環境 (5.0 - 8.0)

如果是 Android 5.0 到 8.0,建議使用內含的 Dockerfile,方便安裝所有必要套件。

作業系統

Android 通常是以 GNU Linux 建構。您也可以在 Mac OS X 等不支援的系統上,透過虛擬機器建構 Android。

Google 建議在 GNU Linux 上建構。Android 建構系統通常會在建構機器上執行 ART,預先編譯系統 DEX 檔案。ART 只能在 Linux 上執行,因此建構系統會在非 Linux 作業系統上略過這個預先編譯步驟,導致 Android 建構作業效能降低。

GNU Linux

  • Android 6.0 - Android 8.0:Ubuntu 14.04 (Trusty)
  • Android 5.x:Ubuntu 12.0

Mac OS X (Intel/x86)

  • Android 6.0 - AOSP 8.0:Mac OS X v10.10 (優勢美地) 以上版本,並安裝 Xcode 4.5.2 和指令列工具
  • Android 5.x:Mac OS X v10.8 (Mountain Lion),並安裝 Xcode 4.5.2 和指令列工具

JDK

設定 AOSP 開發環境 (2.3 - 4.4)

本節提供一些指南,說明如何設定 Android 2.3 到 Android 4.4。

作業系統

Android 通常是以 GNU Linux 建構。您也可以在 Windows 等不支援的系統上,透過虛擬機器建構 Android。

Google 建議在 GNU Linux 上建構。Android 建構系統通常會在建構機器上執行 ART,預先編譯系統 DEX 檔案。ART 只能在 Linux 上執行,因此建構系統會在非 Linux 作業系統上略過這個預先編譯步驟,導致 Android 建構作業效能降低。

GNU Linux

  • Android 2.3.x - Android 4.4:Ubuntu 12.04 (Precise)

Mac OS X (Intel/x86)

  • Android 4.1.x - Android 4.4.x:Mac OS X v10.6 (雪豹) 或 Mac OS X v10.7 (獅) 和 Xcode 4.2 (Apple 開發人員工具)
  • Android 2.3 - Android 4.0.x:Mac OS X v10.5 (Leopard) 或 Mac OS X v10.6 (Snow Leopard) 和 Mac OS X v10.5 SDK

GNU make

如果是 Android 4.1.x 到 4.4,請使用 GNU make (gmake) 3.82。 如果是 Android 2.3 至 4.0.x,請從 gmake 3.82 還原,以免發生建構錯誤。

Xcode 和其他套件

如果使用 Mac OS X v10.8 以下版本,請從 Apple 開發人員網站安裝 Xcode。如果尚未註冊為 Apple 開發人員,請建立 Apple ID 以下載。

如果使用 Mac OS X v10.4,請一併安裝 Bison:

POSIXLY_CORRECT=1 sudo port install bison

如果是 MacPorts,請發出以下指令:

POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

Homebrew 問題:

brew install gmake libsdl git gnupg2

從 gmake 3.82 還原

在 Android 4.0.x 以下版本中,gmake 3.82 有一項錯誤,會導致 Android 無法建構。你可以使用 MacPorts 安裝 3.81 版,步驟如下:

  1. 編輯 /opt/local/etc/macports/sources.conf,並在 rsync 行上方新增 file:///Users/Shared/dports

  2. 建立 dports 目錄:

    mkdir /Users/Shared/dports
    
  3. 在新的 dports 目錄中執行:

    svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/
    
  4. 為新的本機存放區建立通訊埠索引:

    portindex /Users/Shared/dports
    
  5. 安裝較舊版本的 gmake:

    sudo port install gmake @3.81
    

JDK

Linux 適用的 JDK

Android 開放原始碼計畫 (AOSP) 內含 OpenJDK 的預先建構版本 (位於 prebuilts/jdk/ 中),因此不需要額外安裝。

如果是舊版 Android,則需要另外安裝 JDK。在 Ubuntu 上,請使用 OpenJDK

適用於 Ubuntu 15.04 以上版本

執行以下指令:

sudo apt-get update
sudo apt-get install openjdk-8-jdk

Ubuntu LTS 14.04

Ubuntu 14.04 沒有可用的支援 OpenJDK 8 套件。Ubuntu 15.04 OpenJDK 8 封裝已成功搭配 Ubuntu 14.04 使用。如果按照下列操作說明,較新的套件版本 (例如 15.10、16.04 適用的版本) 無法在 14.04 上運作。

  1. old-releases.ubuntu.com 下載 64 位元架構的 .deb 套件

    • openjdk-8-jre-headless_8u45-b14-1_amd64.deb 使用 SHA256 0f5aba8db39088283b51e00054813063173a4d8809f70033976f83e214ab56c0
    • openjdk-8-jre_8u45-b14-1_amd64.deb 使用 SHA256 9ef76c4562d39432b69baf6c18f199707c5c56a5b4566847df908b7d74e15849
    • openjdk-8-jdk_8u45-b14-1_amd64.deb 使用 SHA256 6e47215cf6205aa829e6a0a64985075bd29d1f428a4006a80c9db371c2fc3c4c
  2. (選用) 針對步驟 1 中每個套件列出的 SHA256 字串,確認下載檔案的總和檢查碼。舉例來說,透過 sha256sum 工具:

    sha256sum {downloaded.deb file}
    
  3. 安裝套件:

    sudo apt-get update
    
  4. 針對下載的每個 .deb 檔案執行 dpkg。可能會因缺少依附元件而產生錯誤:

    sudo dpkg -i {downloaded.deb file}
    
  5. 如要修正缺少依附元件的問題,請按照下列步驟操作:

    sudo apt-get -f install
    

(選用) 更新預設 Java 版本

(選用) 如要更新上述 Ubuntu 版本的預設 Java 版本,請執行:

sudo update-alternatives --config java
sudo update-alternatives --config javac

安裝 Ubuntu 14.04 的必要套件

執行下列指令,為 Ubuntu 14.04 安裝必要套件:

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip$

安裝 Ubuntu 12.04 的必要套件

執行下列指令,為 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 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