最近對(duì)Android源代碼進(jìn)行了編譯,做下記錄.
源碼代碼的編譯主要分為三大塊:
- 電腦環(huán)境選擇和設(shè)置
- 源代碼下載
- 編譯
下面以本機(jī)為例說(shuō)明
一,電腦環(huán)境選擇和設(shè)置
1,Android源代碼編譯目前只支持在Linux和Mac環(huán)境.
這次說(shuō)明選用的是Mac環(huán)境---macOS Sierra(版本10.12.2)
如果是Ubuntu環(huán)境,那么2.3.x以及之后需要64位, 之前需要32位; Ubuntu的不同版本需要安裝的軟件包和JDK版本都有對(duì)應(yīng)的要求.
詳細(xì)參照https://source.android.com/source/initializing.html
2,jdk選擇
本次選擇的是 java version "1.8.0_121"
具體的jdk要求如下:
The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5
3,xcode命令行工具的安裝
這是在編譯C/C++代碼需要
xcode-select --install
4,MacPort安裝
MacPort類似HomeBrew是一個(gè)安裝包管理器
1)先去MacPort官網(wǎng)選擇對(duì)應(yīng)版本的pkg安裝
并且在~/.bash_profile尾部添加export PATH=/opt/local/bin:$PATH
如果~/.bash_profile不存在,則創(chuàng)建一個(gè)再添加即可
2)安裝gmake libsdl git gnupg
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
5,設(shè)置文件打開(kāi)數(shù)目的限制
將ulimit -S -n 1024添加到 ~/.bash_profile
5,安裝CCACHE
安裝CCACHE是為了提高編譯速度,如果找不到CCACHE則可以使用上面已經(jīng)安裝好的包管理器MacPort進(jìn)行下載.然后
export USE_CCACHE=1
export CCACHE_DIR=/<path_of_your_choice>/.ccache
添加到~/.bash_profile文件
二,源代碼下載
1,源代碼下載使用Repo工具,首先安裝Repo
1)設(shè)置目錄
mkdir ~/bin(如果家目錄下不存在bin)
PATH=~/bin:$PATH
2)下載并安裝Repo且確??梢詧?zhí)行
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo(如果curl找不到,那么需要安裝curl工具)
$ chmod a+x ~/bin/repo
3)選擇一個(gè)源代碼存放的目錄(空間要足夠大)
如果Mac沒(méi)有足夠的空間,那么可以使用移動(dòng)硬盤存放,這需要使用Mac自帶的磁盤工具對(duì)移動(dòng)硬盤或者移動(dòng)硬盤的某個(gè)足夠大的分區(qū)格式化為大小寫(xiě)敏感的日志格式
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
4)安裝git
5)初始化Repo下載
repo init -u https://android.googlesource.com/platform/manifest
repo init -u https://android.googlesource.com/platform/manifest -b android-7.0.0_r6
-b后面的android-7.0.0_r6是下載對(duì)應(yīng)的android版本
每個(gè)版本對(duì)應(yīng)的名稱https://source.android.com/source/build-numbers.html#source-code-tags-and-builds
6)代碼下載
repo sync
不同配置機(jī)器和網(wǎng)速經(jīng)過(guò)X分鐘之后,代碼下載完畢
三,編譯環(huán)境準(zhǔn)備
1,檢查編譯環(huán)境設(shè)置是否正確
在存放源代碼根目錄下輸入 make clobber
如果環(huán)境ok,則會(huì)有下面提示

在檢查編譯環(huán)境的時(shí)候,可能會(huì)報(bào)如下錯(cuò)誤
make clobber
build/core/combo/mac_version.mk:26: none of the installed SDKs (ac_sdk_versions_installed) match supported versions (10.8 10.9 10.10 10.11), trying 10.8
build/core/combo/mac_version.mk:36: no SDK 10.8 at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk, trying legacy dir
build/core/combo/mac_version.mk:40: *****************************************************
build/core/combo/mac_version.mk:41: * Can not find SDK 10.8 at /Developer/SDKs/MacOSX10.8.sdk
build/core/combo/mac_version.mk:42: *****************************************************
build/core/combo/mac_version.mk:43: *** Stop.. Stop.
make clobber
build/core/config.mk:600: *** Error: could not find jdk tools.jar at /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/../lib/tools.jar, please check if your JDK was installed correctly. Stop.
這個(gè)是問(wèn)題原因是尋找ANDROID_JAVA_HOME找不到,
可以將JAVA_HOME直接賦值給他即可
- syscall error

2,設(shè)置編譯環(huán)境
source build/envsetup.sh
成功有如下提示:

3,選定編譯模式
lunch aosp_arm-eng
成功后會(huì)有如下提示

4,開(kāi)始編譯
make -j4
經(jīng)過(guò)X分鐘的編譯, 編譯成功后會(huì)有如下提示

以上就是這次編譯的過(guò)程,最主要步驟參考
https://source.android.com/source/initializing.html