博主是在Ubuntu16.04下編譯Android 6.0.1的源碼。
首先需要獲取到Android源碼,有很多種方式,大家可以自行google。博主是在網上分享的一個百度雲鏈接中下載的,方便省事,需要鏈接的可以私信我或者給我留言。
Android 6.0.1源碼目錄如下圖
編譯Android需要安裝OpenJDK 7。博主之前系統中有安裝Java官網的JDK,最後發現並不能編譯。下載OpenJDK的方法:
需要先指定ppa,不然默認下載的是openjdk-8-jdk
sudo add-apt-repository ppa:openjdk-r/ppa
下載
sudo apt-get update
sudo apt-get install openjdk-7-jdk
然後,需要安裝依賴
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
此外,還需要修改源碼的一行代碼。(如果不修改會報錯,大家如果想嘗試看看是什麼錯,也可以不修改哈哈)
修改/art/build/Android.common_build.mk文件第75行,將原來的代碼
ifneq ($(WITHOUT_HOST_CLANG),true)
修改爲
ifeq ($(WITHOUT_HOST_CLANG),false)
接下來,正式開始編譯。
首先初始化編譯環境
source build/envsetup.sh
然後通過lunch命令選擇編譯目標
博主選擇目標爲aosp_arm64-eng
lunch aosp_arm64-eng
開始編譯
make -j8
編譯成功
可以運行Android模擬器了!