題記:編譯花了将近4小時,是以編譯源碼是很費時的哦,可以在編譯的時候可以學習其他的知識
編譯環境準備
軟體:WorkStation10
系統:ubuntu14.04
記憶體:8G
處理器:4個
磁盤大小:100G
以下是安卓7.1源碼(全志)和核心編譯步驟:
一、核心編譯
1、安裝jdk8(注本人使用的是openjdk8)
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
java -version #檢測jdk安裝
2、安裝必要的一些包(以下的包,都是采坑一個個過來的,是以請務必都安裝)
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
3、不出意外的話,就可以看到如下成功編譯結果
二、安卓源碼編譯
1、進入安卓源碼目錄,執行以下指令
$cd ../android/ #安卓源碼目錄
$source build/envsetup.sh #啟動源碼編譯環境(即添加編譯指令)
$lunch #選擇平台編譯選項
2、啟動lunch指令,選擇平台(一般選22),如下圖所示。
這些系統平台含義如下:
eng: 工程機,
user:最終使用者機
userdebug:調試測試機
tests:測試機
3、執行以下指令,編譯安卓源碼
$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代碼編譯成安卓的位元組碼編譯器
希望這些可以幫助大家!
轉載于:https://www.cnblogs.com/ywjfx/p/9960817.html