ubuntu 18 編譯 android 7 系統(tǒng)鏡像

博客原文

編譯機器

  • 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 的選擇一樣

然后即可啟動成功

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容