編譯機器
- ubuntu18 虛擬機
- 內(nèi)存:8G
- swap:2G
如果使用的系統(tǒng),或者編譯的源碼文件不同,可能會遇到不一樣的問題
準備工作
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo apt-get install make
加載編譯環(huán)境:
source build/envsetup.sh
# 注意,這里需要自行更換
lunch aosp_arm64-eng
make -j2
錯誤解決
recipe for target 'ninja_wrapper' failed
url: 網(wǎng)上解決方案
- export LC_ALL=C
fatal internal error, exec of /usr/bin/m4 failed
- sudo apt-get install bison
注意:即便安裝 bison 后,也可能會依舊出現(xiàn) bison 無法找到的錯誤,繼續(xù)執(zhí)行安裝:
sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
上面是網(wǎng)上找的,在 ubuntu18 執(zhí)行發(fā)現(xiàn)沒有 lib32readline-gplv2-dev 這個包,應(yīng)該是執(zhí)行:
- sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32z1-dev
Try increasing heap size with java option '-Xmx'. Out of memory error
內(nèi)存不足錯誤(第一步是 export 設(shè)置內(nèi)存,第二部是 kill 服務(wù),再啟動,此時是不需要 make clean 清理工作區(qū),可以直接繼續(xù)編譯)
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
xmllint: command not found
- sudo apt-get install libxml2-utils
運行
注意:由于啟動android虛擬機要使用到硬件虛擬化,所以必須運行在 root 用戶下,如果使用普通用戶,則無法啟用
首先切換到 root用戶:
# 在虛擬機中必須切換到 su 用戶,否則無法使用虛擬化
# 特別注意!?。?否則無法在虛擬機中再運行 android 虛擬機
sudo su
然后重新加載環(huán)境并運行:
source build/envsetup.sh
# (選擇剛才你設(shè)置的目標版本)
lunch
emulator
如果運行出錯:KVM is not installed on this machine (/dev/kvm is missing)
需要先關(guān)機后,到 VMware 虛擬機選項卡 -> 設(shè)置 -> cpu 設(shè)置 -> 勾選右側(cè)三個虛擬化選項,然后再從新執(zhí)行 上面的命令
以下是 Stack Overflow上的解決方案,但實際上我僅僅到 VMware 開啟虛擬化即可,如果開啟三個虛擬化選項后還是不行,可以嘗試一下:
原文
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
整理
上面編譯生成比較細碎,若要直接編譯成功,參考以下步驟:
使用 VMware 安裝 ubuntu 18 鏡像,然后到 虛擬機選項卡 -> 設(shè)置 -> cpu 設(shè)置 -> 勾選右側(cè)三個虛擬化選項 (必須關(guān)機狀態(tài)才可以修改選項)
下載 android 7.1.2 的系統(tǒng)源碼,并將壓縮包復(fù)制到虛擬機中
鏈接:https://pan.baidu.com/s/19PgQRT-rFFP9IBDPzZlhmA
提取碼:0iu5
ubuntu18 虛擬機安裝依賴:
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo apt-get install make
sudo apt-get install bison
sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32z1-dev
sudo apt-get install libxml2-utils
設(shè)置環(huán)境變量:
export LC_ALL=C
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
將下載的 源碼文件 解壓縮, 然后 cd 進入解壓縮后的目錄
在該目錄下執(zhí)行:
source build/envsetup.sh
lunch
在執(zhí)行 lunch 后,會出現(xiàn)一個列表,這里根據(jù)需求選擇要編譯的鏡像類型,我選的是 6
開始編譯:
make -j2
等待編譯成功后,開啟虛擬機:
sudo su
source build/envsetup.sh
lunch
emulator
這里執(zhí)行 lunch 后選擇的選項必須和編譯時 lunch 的選擇一樣
然后即可啟動成功