Ubuntu 整编 AOSP

server/2024/9/24 6:11:19/

文章目录

  • 前言
  • 1 准备一台Ubuntu系统电脑
  • 2 安装依赖工具
  • 3 安装 repo
  • 4 下载 AOSP 源码
  • 5 整编AOSP
  • 6 运行

前言

作为Android应用层开发多年, 一直不了解 Framework和Android系统的运行原理真的说不过去。希望本篇博客可以带你构建自己的Android系统,打开通向 Framework的大门。

1 准备一台Ubuntu系统电脑

笔记本大部分都是Windows系统, 可以参考以下视频再装一个Ubuntu系统(建议选Ubuntu 20.04 LTS)

Windows 和 Ubuntu 双系统的安装

这里要着重强调以下几点

  • 物理内存最低8G (不然运行真的太慢了)
  • 分配磁盘空间 /home300G以上 (不然编译失败会提示没有空间)
  • 电脑设置常亮不休眠,保证可以夜以继日工作

2 安装依赖工具

打开终端输入如下命令

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

3 安装 repo

mkdir ~/bin
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod +x ~/bin/repo
# 以下这条命令可以添加到 `~/.bashrc` 文件中
export PATH=~/bin:$PATH

AOSP__29">4 下载 AOSP 源码

选择指定的Android版本 (这里选择了 android-12.1.0_r27,不建议编14,语法太新,遇到问题没有解决方案)
源代码标记和 build
在这里插入图片描述

mkdir aosp 
cd asop
# 初始化repo,指定源码分支为 `android-12.1.0_r27`
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.1.0_r27
# 同步远程代码,大概2h左右时间,耐心等待。。。
repo sync

在这里插入图片描述

AOSP_45">5 整编AOSP

# 初始化环境
source ./build/envsetup.sh
# 选择编译目标
lunch sdk_phone_x86_64
# 最大线程数编译,这一步十分耗时, 大概8h左右,建议晚上睡前make,第二天起来才能编好
m

不出意外的话, 执行 m 命令后会报错,按照错误提示简单Google一下就能找到答案

编译是一个极其漫长的过程, 如下图所示的一次编译就要了8h14min (我睡醒了还没编好。。。。)
在这里插入图片描述

6 运行

emulator

在这里插入图片描述
恭喜💐 属于你的Android系统就这样被启动,接下来你可以好好把玩你的Android系统了!


http://www.ppmy.cn/server/43050.html

相关文章

M功能-支付平台(三)

target:离开柬埔寨倒计时-221day 前言 今天周六,但是在柬埔寨还是工作日,想着国内的朋友开始休周末就羡慕呀,记不清在这边过了多少个周六了,多到我已经习惯了。而且今天技术部还停电了,真的是热的受不了呀…

Shell编程之免交互

目录 1、Here Document免交互 (1)Here Document 概述 (2)免交互执行命令 1)免交互read赋值 2)免交互修改密码 3)免交互统计行数 4)免交互创建文件并编辑文件内容 5&#xff0…

Gitee在已有项目基础上创建仓库中遇到的问题和解决

问题一:fatal: remote origin already exists 解释:当前仓库添加了一个名为"origin"的远程仓库配置,此时输入 git remote add origin https://xxx就会提示上面的内容。 解决方案1:移除旧的origin git remote remove origin 解决方案…

windows使用gzip和bzip2对文件进行压缩

git软件 git bash:下载地址https://git-scm.com/downloads,安装时一路next。 这个软件是给程序员提交代码用的工具,内置linux系统的命令行,可以使用linux系统特有的压缩软件gzip和bzip2. gzip使用 gzip一般用于压缩tar包&#…

原型模式(Prototype Pattern)

文章目录 1.原型模式定义2.UML图3.实现方式4.具体实现4.1 接口方式4.2 类继承方式 1.原型模式定义 复制已有对象, 而又无需使代码依赖它们所属的类。 2.UML图 3.实现方式 创建原型接口, 并在其中声明 克隆方法。 如果你已有类层次结构, 则…

一些python代码基础

1、将输入转化为list sublist list(map(int, input().split())) 注:map(int, input().split()) 的结果是一个 map 对象,它是一个迭代器。在这个例子中,map 函数将 input().split() 返回的列表中的每个元素都转换为整数类型,但这…

【NumPy】NumPy实战入门:线性代数(dot、linalg)与随机数(numpy.random)详解

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

[C][指针]详细讲解

目录 0.铺垫1.指针是什么?2.指针变量3.指针和指针类型4.指针类型的意义5.野指针1.野指针成因2.如何规避野指针6.指针运算 6.指针和数组7.二级指针(n级指针)8.指针数组9.数组指针10.&数组名VS数组名11.函数指针 12.函数指针数组13.回调函数 0.铺垫 在…