编译Android14 AOSP纪录

锦通  金牌会员 | 2024-10-16 22:24:35 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 877|帖子 877|积分 2631

AOSP编译
编译情况



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

安装下载AOSP的依赖

  1. #安装git
  2. sudo apt-get install git
  3. #配置环境变量
  4. mkdir ~/bin
  5. PATH=~/bin:$PATH
  6. #安装cul
  7. sudo apt-get install curl
  8. #下载repo并设置权限:
  9. curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
  10. chmod a+x ~/bin/repo
  11. #安装python3
  12. sudo apt-get install python3
复制代码
安装编译AOSP的依赖

  1. #安装jdk
  2. sudo apt-get install openjdk-11-jdk
  3. #安装编译所需的依赖包
  4. 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
所以,最终使用如下命令安装依赖库。
  1. 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,在后续编译的时会出现如下错误
  1. error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
  2. 20:47:34 ninja failed with: exit status 1
复制代码
所以接纳符号链接,使用更高版本来代替。方式如下:

  • 使用命令找到libtinfo.so.6和libncurses.so.6的位置。
  1. find /usr -name "libtinfo.so.6"
  2. find /usr -name "libncurses.so.6"
复制代码

  • 根据输出的的位置创建符号链接
  1. #libtinfo.so.6 符号链接
  2. sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5
  3. #libncurses.so.6 符号链接
  4. sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5
复制代码

  • 确认符号链接
  1. ls -l /usr/lib/x86_64-linux-gnu/libtinfo.so.5
  2. ls -l /usr/lib/x86_64-linux-gnu/libncurses.so.5
复制代码
下载AOSP

  1. mkdir android14
  2. cd android14
  3. repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r28
  4. repo sync
复制代码
编译AOSP

选择想要编译的镜像,最开始我选择的是aosp_x86_64-eng,但是后续运行模拟器时会产生题目,建议加入sdk_phone_x86_64-eng,后使用sdk_phone_x86_64-eng举行编译。
  1. source build/envsetup.sh
  2. lunch //根据输出选择要编译的镜像编号
  3. 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,输出如下:
  1. 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 的选项了。
  1. COMMON_LUNCH_CHOICES := \
  2.     aosp_arm64-eng \
  3.     aosp_arm-eng \
  4.     aosp_x86_64-eng \
  5.     aosp_x86-eng \
  6.     sdk_phone_x86_64-eng \
  7.     sdk_phone_arm64-eng \
复制代码
参考文章:
https://zhuanlan.zhihu.com/p/705716442
https://zhuanlan.zhihu.com/p/703829482
清理AOSP编译缓存,重新编译 sdk_phone_x86_64-eng

  1. #根目录
  2. source build/envsetup.sh
  3. make clobber
  4. #根目录
  5. make clean
  6. #kernel目录
  7. 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
  1. source ./build/envsetup.sh
  2. lunch sdk_phone_x86_64-eng
  3. make -j6 #如果已经编译成功无需再执行该条命令
  4. make emu_img_zip
  5. #完成后会输出镜像包的路径
复制代码


  • android studio使用生成的镜像启动模拟器
    根据输出的镜像文件目录,找到压缩包,把解压出来的x86_64文件夹里的内容复制到Android Studio模拟器所在目录。然后就乐成运行模拟器


参考文章

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表