锦通 发表于 2024-10-16 22:24:35

编译Android14 AOSP纪录

AOSP编译
编译情况



[*]VirtualBox虚拟机 ubuntu 24.04
[*]磁盘空间500G
[*]内存:16G
[*]swap空间:64G
事前预备

安装下载AOSP的依赖

#安装git
sudo apt-get install git
#配置环境变量
mkdir ~/bin
PATH=~/bin:$PATH

#安装cul
sudo apt-get install curl

#下载repo并设置权限:
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo

#安装python3
sudo apt-get install python3
安装编译AOSP的依赖

#安装jdk
sudo apt-get install openjdk-11-jdk
#安装编译所需的依赖包
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
这里碰到个题目,因为使用的ubuntu24.04,找不到git-core,libncurses5,lib32ncurses5-dev,所以修改如下:


[*]git-core改为git
[*]24.04上libncurses5已经废弃了,使用apt-cache search libncurses命令搜刮代替的库,搜刮到libncurses6
[*]24.04上lib32ncurses5-dev已经废弃了,使用apt-cache search lib32ncurses命令搜刮代替的库,搜刮到lib32ncurses6
所以,最终使用如下命令安装依赖库。
sudo apt-get install git gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses6 lib32ncurses6 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
因为我们安装的是libncurses6,找不到libncurses.so.5,在后续编译的时会出现如下错误
error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
20:47:34 ninja failed with: exit status 1
所以接纳符号链接,使用更高版本来代替。方式如下:

[*]使用命令找到libtinfo.so.6和libncurses.so.6的位置。

find /usr -name "libtinfo.so.6"
find /usr -name "libncurses.so.6"

[*]根据输出的的位置创建符号链接
#libtinfo.so.6 符号链接
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5
#libncurses.so.6 符号链接
sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5

[*]确认符号链接
ls -l /usr/lib/x86_64-linux-gnu/libtinfo.so.5
ls -l /usr/lib/x86_64-linux-gnu/libncurses.so.5
下载AOSP

mkdir android14
cd android14
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r28
repo sync
编译AOSP

选择想要编译的镜像,最开始我选择的是aosp_x86_64-eng,但是后续运行模拟器时会产生题目,建议加入sdk_phone_x86_64-eng,后使用sdk_phone_x86_64-eng举行编译。
source build/envsetup.sh
lunch //根据输出选择要编译的镜像编号
make -j6
编译阶段卡死

接纳ubuntu24.04虚拟机来编译aosp的,使用make直接编译最后阶段不知道为什么会卡死,清理编译缓存后,重新使用make -j6就编译乐成了。
运行模拟器

开启虚拟化

提示 ERROR | x86 emulation currently requires hardware acceleration
必要开启虚拟化,参考链接:https://blog.csdn.net/qq_44982815/article/details/111559823
缺少userdata-qemu.img

最开始编译的是aosp_x86_64-eng,编译乐成后,运行模拟器时提示缺少userdata-qemu.img,输出如下:
Could not open '/root/aosp/out/target/product/generic_x86_64/userdata-qemu.img': No such file or directory


[*]经过查阅资料说aosp版本的镜像不会生成userdata-qemu.img,都建议编译sdk_phone_x86_64镜像,但是执行lunch后所输出的可编译列表并没有sdk_phone_x86_64。
[*]修改build/make/target/product/AndroidProducts.mk 文件,在COMMON_LUNCH_CHOICES 中增长 sdk_phone_x86_64-eng和sdk_phone_arm64-eng 。重新编译就出现sdk_phone_x86_64-eng和sdk_phone_arm64-eng 的选项了。
COMMON_LUNCH_CHOICES := \
    aosp_arm64-eng \
    aosp_arm-eng \
    aosp_x86_64-eng \
    aosp_x86-eng \
    sdk_phone_x86_64-eng \
    sdk_phone_arm64-eng \
参考文章:
https://zhuanlan.zhihu.com/p/705716442
https://zhuanlan.zhihu.com/p/703829482
清理AOSP编译缓存,重新编译 sdk_phone_x86_64-eng

#根目录
source build/envsetup.sh
make clobber
#根目录
make clean
#kernel目录
make mrproper
模拟器运行乐成,但是黑屏

发现使用Android Studio的模拟器可以乐成运行,所以计划使用Android Studio运行编译出的镜像来运行模拟器。

[*]Android13及以上使用make emu_img_zip命令来打包生成镜像文件。完成后会输出镜像压缩包的所在目录,比方: /aosp/out/target/product/emulator_x86_64/sdk-repo-linux-system-images-eng.username.zip
source ./build/envsetup.sh
lunch sdk_phone_x86_64-eng
make -j6 #如果已经编译成功无需再执行该条命令
make emu_img_zip
#完成后会输出镜像包的路径
https://i-blog.csdnimg.cn/direct/a8648f3bf2d64b6383a4bd4e61e0f9b5.pnghttps://i-blog.csdnimg.cn/direct/5733e33ba1c04e4784ad8fe238b5f41e.png

[*]android studio使用生成的镜像启动模拟器
根据输出的镜像文件目录,找到压缩包,把解压出来的x86_64文件夹里的内容复制到Android Studio模拟器所在目录。然后就乐成运行模拟器
https://i-blog.csdnimg.cn/direct/565d825c7cea4263a0c3cbb94c4d8690.png
https://i-blog.csdnimg.cn/direct/c4074eb6f34349a69ae8bc57bac40d21.png
参考文章

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 编译Android14 AOSP纪录