題記:編譯花了將近4小時,因此編譯源碼是很費時的哦,能夠在編譯的時候能夠學習其餘的知識java
編譯環境準備linux
軟件:WorkStation10android
系統:ubuntu14.04 ubuntu
內存:8G工具
處理器:4個學習
磁盤大小:100G測試
如下是安卓7.1源碼(全志)和內核編譯步驟:ui
1、內核編譯spa
一、安裝jdk8(注本人使用的是openjdk8)debug
sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk
java -version #檢測jdk安裝
二、安裝必要的一些包(如下的包,都是採坑一個個過來的,因此請務必都安裝)
sudo apt-get install gawk #解決:awk: line 2: function strtonum never defined
apt-get install fakeroot #解決:../scripts/build_rootfs.sh: line 19: fakeroot: command not found
sudo apt-get install g++-multilib gcc-multilib #解決:lichee/tools/pack/pctools/linux/android/mkbootimg: No such file or directory
三、不出意外的話,就能夠看到以下成功編譯結果
2、安卓源碼編譯
一、進入安卓源碼目錄,執行如下命令
$cd ../android/ #安卓源碼目錄 $source build/envsetup.sh #啓動源碼編譯環境(即添加編譯命令) $lunch #選擇平臺編譯選項
二、啓動lunch命令,選擇平臺(通常選22),以下圖所示。
這些系統平臺含義以下:
eng: 工程機,
user:最終用戶機
userdebug:調試測試機
tests:測試機
三、執行如下命令,編譯安卓源碼
$extract-bsp $make -j4 #編譯(make -j4表示處理器4個,根據電腦配置選擇) $pack #將編譯成功的系統打包成img鏡像。
你覺得步驟3這麼容易? No 。我大概花了4個晚上才成功,天天有不一樣的問題出現,主要是編譯環境的問題,下面貼出我編譯過程當中出現的問題以及解決方法。
FAQ
問題一:出現*****prebuilts/misc/linux-x86/bison/bison.......
解決方法:sudo apt-get install bison
問題二:出現ninja: build stopped: subcommand failed Android 或者GC overhead limit exceeded.
解決方法:修改prebuilts/sdk/tools/jack-admin 文件內容
將JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME" 改成
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"
注:-Xmx4096m或者-Xmx4g ,表示使用主機內存的一半,前面我說本人使用的內存是8G哦,固然若是你的內存大,可使勁的用
問題三:出現Failed to contact Jack server: Problem reading .jack-server/client.pem. Try 'jack-diagnose'
解決方法:
jack-admin kill-server #殺死jack進行
jack-admin uninstall-server #卸載jack服務
make # 編譯
注:Jack編譯器工具是一套新的Android編譯工具用來將Java代碼轉換爲Android dex字節代碼,因此你jack就是用來將java代碼編譯成安卓的字節碼編譯器
但願這些能夠幫助你們!