一、安裝依賴庫java
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib git flex bison gperf build-essential libncurses5-dev:i386 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev libsdl1.2-dev libesd0-dev git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4
二、安裝openjdk 7python
ubuntu 14.04直接:linux
sudo apt-get install openjdk-7-jdk
Ubuntu 16.04沒有OpenJDK7的源,所以在16.04上安裝OpenJDK7須要執行下面的命令:git
sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-7-jdk
配置OpenJDK.打開/etc/profile文件:ubuntu
sudo gedit /etc/profile
在末尾追加下面代碼:緩存
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
修改了/etc/profile文件須要重啓才能生效,但使用下面命令能夠在不重啓的狀況下在當前bash環境生效:bash
source /etc/profile
檢查OpenJDK配置是否正確:markdown
java -version
三、修改源碼curl
修改 mydroid/art/build/Android.common_build.mk
文件,定位到75行,將下面的代碼:jvm
ifneq ($(WITHOUT_HOST_CLANG),true)
改成:
ifeq ($(WITHOUT_HOST_CLANG),false)
若是不修改這裏,會遇到一個比較棘手的編譯錯誤,修改的目的是把CLANG這個編譯選項關掉,詳見後面的編譯記錄,百度搜狗都無解,這個錯誤只會在Ubuntu16.04上遇到,Ubuntu14.04則不存在這個問題,解決這個編譯錯誤花費一天時間,還好咱英語好,在歪果人的論壇上看了幾篇帖子,終於搞定了。這裏順便說一下小技巧:
遇到編譯錯誤,請把error後面的錯誤信息所有複製,而後用搜狗搜英文網頁,不要用百度那個渣渣
一、在 .bashrc文件末尾添加:export USE_CCACHE = 1
echo export USE_CCACHE=1 >> ~/.bashrc
二、爲了提升編譯效率,設置編譯器高速緩存:
prebuilts/misc/linux-x86/ccache/ccache -M 50G
三、接着導入編譯Android源碼所需的環境變量和其它參數:
source build/envsetup.sh
四、 運行lunch命令選擇編譯目標
五、開始編譯,執行make -j8, 8爲同時編譯的線程數,通常google推薦這個數字爲2倍的cpu個數再加上2,好比4核,就是10。博主使用的是8:
make -j8
#或者
brunch cm_codename-userdebug
關於cpu個數,能夠用下面命令查看:
cat /proc/cpuinfo
好了,開始編譯了,接下來就是不斷error,不斷修復,繼續編譯的過程,下面記錄常見錯誤
一、編譯大坑,依賴庫問題
仔細看錯誤:
clang: error: linker command failed with exit code
其實這個是系統使用clang編輯器報的錯,百度了一下,解決方法通常是將art/build/Android.common_build.mk
文件ifneq ($(WITHOUT_HOST_CLANG),true)
改成ifeq ($(WITHOUT_HOST_CLANG),false)
然而紙上得來終覺淺,絕知此事要躬行,由於,這並無什麼卵用,至少如今沒有卵用。
抱着反正無聊試一試的想法,把上面這篇帖子中的依賴一通複製:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4
而後make clean
,從新再來。呵呵,這個錯誤是終於編過去了。
二、CLANG錯誤,編譯報錯recipe for target 'out/host/linux-x86/obj/lib/libart.so' failed
解決這個錯誤,又花費一番力氣,哈哈,這個時候找到解決方法了,再修改art/build/Android.common_build.mk
文件,將
ifneq ($(WITHOUT_HOST_CLANG),true)
改成:
ifeq ($(WITHOUT_HOST_CLANG),false)
從新編譯,解決問題。
三、中文路徑,坑。
解決辦法:將中文路徑改成英文便可。
四、編譯報錯 ERROR:Cannot launch Jack Server 解決方法
若是遇到jack編譯錯誤,能夠把$HOME/.jack中的配置文件中的SERVER=true設成false,不用jack,jack如今還不穩定。