Ubuntu20.04编译安卓aosp 15源码编译到模拟器运行

news2024/11/28 3:45:05

背景:

aosp15也开始悄悄在各个手机厂商开始酝酿了,感叹时间很快,今天也准备针对aosp15进行一下源码环境的搭建,整体aosp15的搭建和13/14其实没啥大的差别,只不过在lunch目标这个地方确实很大不同,还有就是模拟器启动后的大小不太合适。下面文章将带大家手把手搭建好aosp15/android 15的源码环境,并成功运行起来模拟器,方便大家体验新版本安卓。
看本篇文章建议可以先看如下两篇参考文章:
aosp13/14源码环境搭建:
https://blog.csdn.net/learnframework/article/details/121345533

aosp15上选择目标与aosp14版本的差异分析:
https://mp.weixin.qq.com/s/9xkNgKKxBWlM_qtpLmRL5g

相关库下载:

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
sudo apt-get install libssl-dev libncurses5

源码repo下载:

获取具体15版本的分支:
可以先使用如下repo命令(注意这里使用清华大学镜像下载)

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest 

在这里插入图片描述ps:如果这里会出现啥错误,问题解决方法请参考https://blog.csdn.net/learnframework/article/details/121345533

末尾没有加-b指定分支,这时候repo下来一般是默认主版本的分支,这分支不是我们想要的,那么接下来要去.repo文件夹,看看所有分支情况

cd .repo/manifests
 git branch  -a

查看所有分支结果如下:
在这里插入图片描述明显分支就1-2个,明显没有aosp15分支,这里对当前目录进行git pull操作:

在这里插入图片描述这时候git branch -a发现如下aosp15的最新分支:
在这里插入图片描述
所以这里选定分支为android-15.0.0_r3

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-15.0.0_r3

编译步骤:

env环境配置:
. build/envsetup.sh
注意这里点后面有空格才是build

选择目标target(注意这里最重要和以前版本最大差异):

lunch sdk_phone64_x86_64-trunk_staging-eng

那么为啥是这个呢?其实是有相关提示的可以
如果只执行命令lunch,输出如下:


You're building on Linux

Warning: Cannot display lunch menu.

Note: You can invoke lunch with an explicit target:

  usage: lunch [target]

Which would you like? [aosp_cf_x86_64_phone-trunk_staging-eng]
Pick from common choices above (e.g. 13) or specify your own (e.g. aosp_barbet-trunk_staging-eng): 

这里就给了我们一个范例aosp_cf_x86_64_phone-trunk_staging-eng这种模式,对我们来说这里可以分为两个部分
第一部分:aosp_cf_x86_64_phone这个是可变的,需要根据我们自己情况选择,具体怎么选稍后说
第二部分:-trunk_staging-eng这里其实可以不需要变化
所以我们就只需要确定第一部分既可以。

那么第一部分的Product是如何确定的,这里怎么就知道是sdk_phone64_x86_64,而不是以前的sdk_phone_x86_64
原因剖析可以原来这个文章:
https://mp.weixin.qq.com/s/9xkNgKKxBWlM_qtpLmRL5g

编译命令:
make

编译成功后运行:
emulator
显示如下:
在这里插入图片描述乍一看相比以前aosp13/14版本来说,感觉这个模拟器的显示大小明显小了很多,看看命令行输出的分辨率和屏幕密度情况:
在这里插入图片描述

明显看到这里分辨率才是480x800难怪显示很小,这里如果要分辨率正常大小可以修改成1080x1920,或者以前13/14版本的1440x2960

修改到合适的显示大小

下面来教大家如何修改分辨率
分辨率这些数据其实都是在对应的config文件中保存的,这里简单起见可以直接去修改out目录下的config.ini文件

out/target/product/emu64x/config.ini

avd.ini.encoding=UTF-8
disk.dataPartition.size=10G
fastboot.forceColdBoot = yes
hw.accelerometer=yes
hw.audioInput=yes
hw.battery=yes
hw.camera.back=emulated
hw.camera.front=emulated
hw.dPad=no
hw.gps=yes
hw.gpu.enabled=yes
hw.keyboard=yes
hw.lcd.density=240
hw.cpu.ncore = 4
hw.mainKeys=no
hw.ramSize = 4096
hw.sensors.orientation=yes
hw.sensors.proximity=yes
image.sysdir.1=x86/
skin.dynamic=no
skin.name=480x800
skin.path=480x800

具体修改点如下:
在这里插入图片描述

在这里插入图片描述
整体上体验了一下,功能上感觉不出有啥差异,动画的体验性相比原来aosp14好像湿滑了不少,其他功能暂时还未深入体验。

更多framework详细代码和资料参考如下链接
投屏专题部分:

https://mp.weixin.qq.com/s/IGm6VHMiAOPejC_H3N_SNg

hal+perfetto+surfaceflinger

https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
其他课程七件套专题:在这里插入图片描述
点击这里
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw

视频试看:
https://www.bilibili.com/video/BV1wc41117L4/
经常在学员的vip技术群里经常有很多学员会提问一些不太常见的窗口和input的相关的问题,虽然不太常见,但确实是工作中会遇到的一些问题,所以马哥有必要进行一下记录这些窗口技术知识点。

https://blog.csdn.net/zhimokf/article/details/137958615

更多framework假威风耗:androidframework007

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2219140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIP-HarmonyOS Application Developer 习题(十四)

(多选)1、HarmonyOs为应用提供丰富的Al(Artificial Intelligence)能力,支持开箱即用。下列哪些是它拥有的AI能力? A、通用文字识别 B、词性标注 C、实体识别 D、语音播报 答案:ABCD 分析: AI能力简介二维码生成根据开…

工业级三防平板在工厂极端环境下保障稳定运行

在现代工业环境中,尤其是在工厂车间,设备和技术的稳定性直接关系到生产效率与产品质量。然而,极端的工作条件常常给电子设备的使用带来了不小的挑战。为此,市场上出现了一种专为工业应用设计大尺寸手持三防平板电脑。这种设备以其…

2024年十大前沿图像分割模型汇总:工作机制、优点和缺点介绍

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

antd vue 输入框高亮设置关键字

<highlight-textareaplaceholder"请输入主诉"type"textarea"v-model"formModel.mainSuit":highlightKey"schema.componentProps.highlightKey"></highlight-textarea> 参考链接原生input&#xff0c;textarea demo地址 …

【前端】如何制作一个自己的网站(11)

接上文。 除了前面的颜色样式外&#xff0c;字体样式和文本样式也是网页设计中的重要组成部分。 合适的字体和文本排版&#xff0c;不仅可以使页面更加美观&#xff0c;也可以提升用户体验。接下来&#xff0c;我们先来看看CSS如何设置字体样式。 字体样式 同时设置了字体样…

经典算法整理(Go语言实现)

经典算法系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 第一章 回溯算法 第二章 贪心算法 第三章 动态规划 第四章 单调栈 第五章 图论 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可…

机器学习课程学习周报十七

机器学习课程学习周报十七 文章目录 机器学习课程学习周报十七摘要Abstract一、机器学习部分1. 变分推断/推理1.1 证据下界1.2 q ( z ) {q(z)} q(z)的选取 2. VAE2.1 Auto-Encoder的简单回顾2.2 为什么提出VAE2.3 VAE的数学原理 3. Diffusion Model的数学原理3.1 Training算法…

React(五) 受控组件和非受控组件; 获取表单元素的值。高阶组件(重点),Portals; Fragment组件;严格模式StrictMode

文章目录 一、受控组件1. 什么是受控组件2. 收集input框内容3. 收集checkBox的值4. 下拉框select总结 二、非受控组件三、高阶组件1. 高阶组件的概念 (回顾高阶函数)2. 高阶组件应用&#xff1a;注入props(1) 高阶组件给---函数式组件注入props(2) 高阶组件给---类组件注入prop…

开源的存储引擎--cantian

cantian 上次稼先社会活动之后&#xff0c;在北京签售的时候见到了三位参天的核心人物。我有感于他们的热情、务实和坦诚&#xff0c;我觉得还应该在深入的做一些事情。至少可以安装体验一下&#xff0c;做做推广。毕竟现在务实的产品不多了&#xff0c;很多都是浮躁的宣传。为…

从一个事故中理解 Redis(几乎)所有知识点

作者&#xff1a;看破 一、简单回顾 事故回溯总结一句话&#xff1a; &#xff08;1&#xff09;因为大 KEY 调用量&#xff0c;随着白天自然流量趋势增长而增长&#xff0c;最终在业务高峰最高点期占满带宽使用 100%。 &#xfeff; &#xfeff; &#xff08;2&#xff…

如何安装MySql

一.卸载MySql 1.1安装版 进入“控制面板”&#xff0c;将有关“mysql”的一切都删除&#xff0c;再到“C:\ProgramData”中&#xff0c;将“mysql”文件夹删除。 1.2压缩版 先在cmd中停止mysql服务 net stop mysql8 再删除解压“mysql”文件夹即可 二.安装MySql 2.2安装版…

RabbitMQ进阶_可靠性

文章目录 一、 发送者的可靠性1.1、 生产者重试机制1.2、 生产者确认机制1.2.1、确认机制理论1.2.2、确认机制实现1.2.2.1、定义ReturnCallback1.2.2.2、定义ConfirmCallback 二、 MQ的可靠性2.1、 数据持久化2.1.1、 交换机持久化2.1.2、 队列持久化2.1.3、 消息持久化 2.2、 …

端点物联网学习资源合集

端点物联网 学习资源合集 导航 1. 物联网实战--入门篇 文章链接 简介&#xff1a;物联网是一个包罗万象的行业和方向&#xff0c;知识碎片严重&#xff0c;本系列文章通过 边学边用 的思想&#xff0c;逐步建立学习者的信心和兴趣&#xff0c;从而进行更深入透彻的学习和探索…

IDEA如何用maven打包(界面和命令两种方式)

前言 我们在使用IDEA开发时&#xff0c;如果是springboot项目的话&#xff0c;一般是用maven来管理我们的依赖的。然后&#xff0c;当我们开发完成之后&#xff0c;就需要打包部署了。 那么&#xff0c;我们应该如何打包呢&#xff1f; 如何打包&#xff08;jar包&#xff09…

scrapy案例——链家租房数据的爬取

案例需求&#xff1a; 1.使用scrapy爬虫技术爬取链家租房网站&#xff08;成都租房信息_成都出租房源|房屋出租价格【成都贝壳租房】 &#xff09;的数据&#xff08;包括标题、价格和链接&#xff09; 2.利用XPath进行数据解析 3.保存为本地json文件 分析&#xff1a; 请…

(AtCoder Beginner Contest 375)B - Traveling Takahashi Problem

&#xff08;AtCoder Beginner Contest 375&#xff09;B - Traveling Takahashi Problem 题目大意 按顺序给定n个点 ( x i , y i ) (x_i,y_i) (xi​,yi​) 求按顺序走过这n个点并回到原点的总距离 任意两点之间的距离是欧几里得距离 思路 按照题意模拟即可&#xff0c;时间…

GPTLink 源码快速搭建 ChatGPT 商用站点

GPTLink 源码快速搭建 ChatGPT 商用站点&#xff0c;基于PHP(Hyperf) Vue开发的&#xff0c;可以通过docker轻松部署&#xff0c;并且有一个支持PC和移动端的完美UI控制台。该项目提供了许多强大的功能&#xff0c;包括自定义付费套餐、一键导出对话、任务拉客和用户管理等等。…

NeRF三维重建—神经辐射场Neural Radiance Field(二)体渲染相关

NeRF三维重建—神经辐射场Neural Radiance Field&#xff08;二&#xff09;体渲染相关 粒子采集部分 粒子采集的部分我们可以理解为&#xff0c;在已知粒子的情况下&#xff0c;对图片进行渲染的一个正向的过程。 空间坐标(x,y,z&#xff09;发射的光线通过相机模型成为图片上…

分布式篇(分布式事务)(持续更新迭代)

一、事务 1. 什么是事务 2. 事务目的 3. 事务的流程 4. 事务四大特性 原子性&#xff08;Atomicity&#xff09; 一致性&#xff08;Consistency&#xff09; 持久性&#xff08;Durability&#xff09; 隔离性&#xff08;Isolation&#xff09; 5. MySQL VS Oracle …

云黑系统全解无后门 +搭建教程

这套系统呢是玖逸之前南逸写的一套云黑系统&#xff0c;功能带有卡密生成和添加黑名单等&#xff0c;源码放在我的网盘里已经两年之久&#xff0c;由于玖逸现在已经跑路了所以现在发出来分享给大家&#xff0c;需要的可以自己拿去而开&#xff0c;反正功能也不是很多具体的自己…