天天看點

Android源碼編譯及啟動模拟器源碼下載下傳源碼編譯啟動模拟器

Android源碼編譯及啟動模拟器

  • 源碼下載下傳
    • (1)更改下載下傳源
    • (2)安裝源碼下載下傳工具
    • (3)下載下傳源碼
    • (4)安裝環境依賴
  • 源碼編譯
  • 啟動模拟器

源碼下載下傳

Ubuntu18.0

(1)更改下載下傳源

源碼下載下傳過程比較慢,可以更改apt源為國内源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vi /etc/apt/sources.list
           

修改内容如下:

#添加阿裡源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
           

(2)安裝源碼下載下傳工具

sudo apt install curl python git
 
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
 
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
sudo mv ./repo /usr/local/bin
echo "export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'" >> ~/.bashrc
           

(3)下載下傳源碼

mkdir aosp10
cd aosp10
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r1
repo sync -j4
           

下載下傳過程很順利,沒出現問題。

(4)安裝環境依賴

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
           

源碼編譯

本來想編譯arm64版本的,奈何電腦是x86架構的,也能跑起來,但是效果很差,是以選擇了x86_64-eng版本的

cd aosp10
source build/envsetup.sh
lunch
aosp_x86_64-eng
make -j16
           
Android源碼編譯及啟動模拟器源碼下載下傳源碼編譯啟動模拟器
Android源碼編譯及啟動模拟器源碼下載下傳源碼編譯啟動模拟器

可以根據電腦組態選擇-j之後的參數

Android源碼編譯及啟動模拟器源碼下載下傳源碼編譯啟動模拟器

第一次編譯出現兩個問題

(1)SWAP空間配置設定過少

Android源碼編譯及啟動模拟器源碼下載下傳源碼編譯啟動模拟器

可以參考這個連結 https://blog.csdn.net/weixin_42171170/article/details/105784057 解決辦法

(2)API問題

按照報錯提示,執行指令即可

Android源碼編譯及啟動模拟器源碼下載下傳源碼編譯啟動模拟器
make test-api-stubs-docs-update-current-api
           

最終成功編譯

Android源碼編譯及啟動模拟器源碼下載下傳源碼編譯啟動模拟器

啟動模拟器

如果是剛剛編譯好的,直接輸入emulator指令即可,否則,執行這一系列操作
           
cd aosp10
source build/envsetup.sh
lunch
aosp_x86_64-eng
emulator
           
第一次沒能成功跑起來,出了幾個小問題,不過都很好解決。
           

(1)emulator: ERROR: x86_64 emulation currently requires hardware acceleration!

Please ensure KVM is properly installed and usable.

CPU acceleration status: This user doesn’t have permissions to use KVM (/dev/kvm)

解決:sudo chown 使用者名 -R /dev/kvm

(2)statvfs(‘/aosp10/out/target/product/generic_x86_64/snapshots/default_boot/ram.img’) failed: No such file or directory

解決:sudo chgrp 使用者名ram.img chmod 766 ram.img

(3)qemu_ram_alloc_user_backed: call 段錯誤 (核心已轉儲)

解決:更改顯示卡驅動為圖檔中的那個,位置在軟體更新裡

Android源碼編譯及啟動模拟器源碼下載下傳源碼編譯啟動模拟器

更新完重新開機時,我還遇到了一個小問題,進不去Ubuntu桌面,卡在了指令行界面,且出現了報錯資訊,滑鼠鍵盤都卡死了,強制重新開機了,進入了Ubuntu進階選項進行了恢複,成功解決。