论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
移动端开发
›
编译Android14 AOSP纪录
编译Android14 AOSP纪录
锦通
金牌会员
|
2024-10-16 22:24:35
|
显示全部楼层
|
阅读模式
楼主
主题
877
|
帖子
877
|
积分
2631
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
#完成后会输出镜像包的路径
复制代码
android studio使用生成的镜像启动模拟器
根据输出的镜像文件目录,找到压缩包,把解压出来的x86_64文件夹里的内容复制到Android Studio模拟器所在目录。然后就乐成运行模拟器
参考文章
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
锦通
金牌会员
这个人很懒什么都没写!
楼主热帖
漏洞利用
vue3 - 最新详细实现 “拖曳式课程表“ ...
如何成为一位人心所向的管理者?我的经 ...
医院HIS体系厂家统计
如何在文章中设置灰色文本框(正文底色 ...
快速入手node.js
理解MVCC
Vue实现复制粘贴功能
八、MySQL之事务控制语言
奇怪,为什么ArrayList初始化容量大小 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表