本節介紹如何設置本地工作環境來構建 Android 源文件。你必須使用 Linux;不支持在 MacOS 或 Windows 下構建。請記住對/usr/bin/python
二進製文件的重要更改。
有關整個代碼審查和代碼更新過程的概述,請參閱補丁生命週期。
選擇一個分支
構建環境的一些要求取決於您計劃編譯的源代碼的版本。有關可用分支的完整列表,請參閱內部版本號。您還可以選擇下載並構建最新的源代碼(稱為master
),在這種情況下,您只需在初始化存儲庫時省略分支規範。
選擇分支後,按照下面的相應說明設置您的構建環境。
設置 Linux 構建環境
這些說明適用於所有分支,包括master
。
Android 版本通常在 Ubuntu LTS (14.04) 和 Debian 測試中進行內部測試。大多數其他發行版應該有所需的構建工具可用。
對於 Gingerbread (2.3.x) 及更高版本,包括master
分支,需要 64 位環境。舊版本可以在 32 位系統上編譯。
安裝所需的軟件包(Ubuntu 18.04)
您需要 64 位版本的 Ubuntu。
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
安裝所需的軟件包(Ubuntu 14.04)
您需要 64 位版本的 Ubuntu(推薦 14.04)。
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib 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 來構建舊版本的 Android。 master
版本或最新版本不支持版本 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)
不再支持在 Ubuntu 10.04-11.10 上構建,但可能有助於構建舊版本的 AOSP。
sudo apt-get install git 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
在 Ubuntu 10.10 上:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
在 Ubuntu 11.10 上:
sudo apt-get install libx11-dev:i386
配置 USB 訪問
按照設置開發設備的說明,為所有 Android 設備安裝社區維護的默認udev
規則集。
使用單獨的輸出目錄
默認情況下,每個構建的輸出都存儲在匹配源樹的out/
子目錄中。您可以通過導出OUT_DIR
環境變量來覆蓋它。例如:
export OUT_DIR=out_mytarget
這將導致構建的輸出存儲在源樹的out_mytarget/
子目錄中。當使用相同的源樹為多個目標構建時,建議為每個目標使用單獨的OUT_DIR
。
在某些具有多個存儲設備的機器上,將源文件和輸出存儲在單獨的捲上時構建速度更快。為了獲得額外的性能,可以將輸出存儲在針對速度而不是崩潰魯棒性而優化的文件系統上,因為如果文件系統損壞,所有文件都可以重新生成。
要進行此設置,請導出OUT_DIR_COMMON_BASE
變量以指向將存儲輸出目錄的位置。
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
每個單獨的源代碼樹的輸出目錄以包含源代碼樹的目錄命名。例如,如果您有源代碼樹/source/master1
和/source/master2
並且OUT_DIR_COMMON_BASE
設置為/output
,則輸出目錄是/output/master1
和/output/master2
。
避免將多個源樹存儲在具有相同名稱的目錄中,因為源樹最終會共享一個輸出目錄,從而產生不可預測的結果。這僅在 Jelly Bean (4.1) 及更高版本上受支持,包括master
分支。
下一篇:下載源碼
您的構建環境很好!繼續下載源代碼。