基于Ubuntu24.04,下载并编译Android12系统源码 (一)

1. 前言

1.1 编译源码可以干什么

  • 定制Android系统
  • 将最新版本的Android系统刷入到自己的Android设备中
  • 将整个系统源码导入到Android Studio中(可以不用编译源码来实现)。
    • 只要有对应的Android源码版本的android.iml和android.ipr文件,就可以将源码导入到Android Studio中。
  • 动态调试源码(不一定需要导入整个系统源码进行调试)
    • 导入部分源码也可以进行调试的

1.2 Android系统源码编译方式

  • 在Linux中直接进行系统源码编译 (Android官方支持)
  • 在Mac OS中直接进行系统源码编译 (Android官方支持)
  • 使用Docker编译,支持Mac OS和Windows

本文会基于Ubuntu24.04,来下载并编译Android12源码

2. 下载AOSP

2.1 更新源

sudo apt-get update

2.2 安装 Git

sudo apt-get install git

2.3 设置git身份,添加自己的邮箱和姓名

git config --global user.email "xxxx@qq.com"
git config --global user.name "xxxx"

2.4 创建bin,并加入到PATH中

mkdir ~/bin
PATH=~/bin:$PATH

在这里插入图片描述

2.5 安装curl库

sudo apt-get install curl

在这里插入图片描述

2.6 下载repo并设置权限

Android源码包含数百个git库,光是下载这么多的git库就是一项繁重的任务,所以Google开发了repo,它是用于管理Android版本库的一个工具,使用了Python对git进行了一定的封装,简化了对多个Git版本库的管理。

下载AOSP前我们要先下载repo。

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo

在这里插入图片描述注意还要设置为清华源 (google官方的源访问不到的)

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

https://mirrors4.tuna.tsinghua.edu.cn/help/git-repo/

2.7 安装python

由于我们编译的是Android12系统,所以使用python3
如果是Android及之前版本,需要使用python2

sudo apt-get install python-is-python3

2.8 安装 jdk11

sudo apt-get install openjdk-11-jdk

2.9 初始化并指定版本

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-12.0.0_r1

Android 源码版本在这里查看 : https://source.android.google.cn/docs/setup/about/build-numbers?hl=zh-cn

还有一种方式 (需要有Git环境来运行这些命令)
在Android开源项目中,查看所有可用的源码版本通常需要访问Android的源代码仓库,例如Android的官方仓库或者相关的分支。
对于Android 12 (也就是API等级31),你可以在Android的官方源码仓库中找到对应的标签。
在命令行中,你可以使用以下Git命令来查看所有可用的标签:
//git clone https://android.googlesource.com/platform/manifest
git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest
cd manifest
sudo chown -R heiko:heiko /home/heiko/platform_manifest/manifest
git tag
这将会列出所有可用的标签,包括像android-12.0.0_r1这样的版本标签。
如果你想要检出特定的版本,可以使用以下命令:
git checkout android-12.0.0_r1

2.10 同步源码

-j后面的数字一般为cpu核心数的1-2倍,我的cpu为8核,这里我这设置的12

repo sync -j12

看到下面的信息可以说明AOSP下载成功了。
在这里插入图片描述

3. 源码编译

接下来,我们会来编译Android12源码,具体详见我的这篇文章 : 基于Ubuntu24.04,下载并编译Android12系统源码 (二)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 v-html 指令渲染的标签, 标签内绑定的 click 事件不生效

背景 在项目开发中,实现用户友好的输入交互是提升用户体验的关键之一。例如,在客服对话框中,其中有包含多个快捷选项用于快速问答,每个快捷选项都是一个可点击的按钮,并需要绑定点击事件来执行相应操作。然而&#xf…

JavaSE笔记2】面向对象

目录 一、深刻认识面向对象 二、对象在计算机中的执行原理 三、this 四、构造器 五、封装 六、实体Javabean(实体类) 1. 是什么? 2. 实体类用来干什么? 七、成员变量和局部变量的区别 一、深刻认识面向对象 二、对象在计算机中的执行原理 三、this Java中…

LINUX1.3

cp(复制): 将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录 cp 源文件 -------目标地址 在当前文件夹时: cp 源文件 (要改名)------目的地址(可以改名或…

Redis高频面试题

一、Redis有什么好处? 高性能:Redis是一个基于内存的数据存储系统,相比于传统的基于磁盘的数据库系统,它能够提供更高的读写性能。支持丰富的数据类型:Redis支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等,这使得它可以用于多种不同的应用场景。持久化:Re…

4.2-7 运行MR应用:词频统计

文章目录 1. 准备数据文件2. 文件上传到HDFS指定目录2.1 创建HDFS目录2.2 上传文件到HDFS2.3 查看上传的文件 3. 运行词频统计程序的jar包3.1 查看Hadoop自带示例jar包3.2 运行示例jar包里的词频统计 4. 查看词频统计结果5. 在HDFS集群UI界面查看结果文件6. 在YARN集群UI界面查…

基于Python和OpenCV的疲劳检测系统设计与实现

项目运行 需要先安装Python的相关依赖:pymysql,Django3.2.8,pillow 使用pip install 安装 第一步:创建数据库 第二步:执行SQL语句,.sql文件,运行该文件中的SQL语句 第三步:修改源…

【Web开发】什么是Nuxt? 利用Nuxt快速搭建前端项目

Nuxt官网&#xff1a;https://nuxt.com/ 启动一个Nuxt项目 在vscode的项目文件终端运行以下命令&#xff1a; npx nuxilatest init <my-app>npm installnpm run dev然后就启动了一个Nuxt项目 安装Nuxt UI Nuxt UI官网&#xff1a;https://ui.nuxt.com/ npx nuxilates…

【acwing】算法基础课-搜索与图论

目录 1、dfs(深度优先搜索) 1.1 排列数字 1.2 n皇后问题 搜索顺序1 搜索顺序2 2、bfs(广度优先搜索) 2.1 走迷宫 2.2 八数码 3、树与图的存储 4、树与图的遍历 4.1 树的重心 4.2 图中点的层次 5、拓扑排序 6、最短路问题 6.1 朴素Dijkstra算法 6.2 堆优化Dijks…

JAVA基础:集合 (学习笔记)

集合 什么是集合&#xff1f; 一种引用数据类型&#xff0c;可以存储多个数据 为什么要学习集合&#xff1f; 数组的缺点&#xff1a; &#xff08;1&#xff09;空间长度不可以改变。 &#xff08;2&#xff09;没办法获得数组中真实的元素个数。 &#xff08;3&#xff…

江协科技STM32学习- P22 实验-ADC单通道/ADC多通道

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

『 Linux 』网络传输层 - TCP (一)

文章目录 TCP协议TCP数据段格式TCP确认应答机制TCP流量控制 TCP协议 TCP协议(Transmission Control Protocol , 传输控制协议) 是互联网协议套件中的核心协议之一; 主要用于确保数据在网络上的可靠传输,其具有以下特点: 面向连接 在数据传输前,TCP需要在通信双方之间建立一个连…

MySQL的group_concat函数:将分组中的多个值连接成一个字符串的聚合函数

MySQL的group_concat函数&#xff1a;将分组中的多个值连接成一个字符串的聚合函数 主要作用说人话解释举个&#x1f330; 主要作用 可以将同一组内的多个值合并为一个由指定分隔符分隔的字符串&#xff0c;简化数据展示和分析。 说人话解释 group_concat()会计算哪些行属于…

怎么找歌曲的伴奏?找伴奏不再难

在音乐创作、演唱练习或是娱乐活动中&#xff0c;找到一首歌曲的伴奏版本是一个常见的需求。伴奏不仅能够帮助我们更好地理解歌曲的结构和旋律&#xff0c;还能为演唱者提供一个专业的音乐背景。那么&#xff0c;我们该如何有效地找到歌曲的伴奏呢?本文将为你提供几种实用的方…

ubuntu18.04安装xenomai3.1(百分百成功版)

准备工作 1、下载ubuntu18.04.06。 https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso 2、安装虚拟机vmware或virtual machine。 开始安装xenomai 1、在桌面安装一个文件夹,文件夹名字叫xenomai。 2、 在终端输入uname-a 查看自己的内核版本。 3、下…

Linux学习笔记 | sudo命令的基本使用

sudo命令 sudo 命令是 Unix 和 Linux 系统中用于执行需要超级用户权限&#xff08;即 root 权限&#xff09;操作的工具。它允许系统管理员授予某些用户&#xff08;或用户组&#xff09;以 root 或其他指定用户的权限来运行特定命令&#xff0c;而无需知道 root 用户的密码。…

电脑怎么进行全盘加密?

1.使用Windows自带的BitLocker&#xff1a; 打开“控制面板”&#xff0c;选择“系统和安全”&#xff0c;然后点击“BitLocker驱动器加密”。 选择要加密的驱动器&#xff0c;点击“启用BitLocker”。 选择解锁驱动器的方式&#xff0c;通常选择“使用密码解锁驱动器”&…

内盘期货配资牛/文华财经有资管软件吗

文华财经不仅提供行情、交易、资讯于一体的综合性期货交易软件&#xff0c;还针对投资者的资产管理需求&#xff0c;开发了一系列功能强大的资管软件。这些软件的核心功能包括实时行情监控、技术分析工具、交易执行系统以及风险管理模块&#xff0c;全方位满足了期货配资投资者…

Python 函数返回值之None类型

什么是None None是类型‘NoneType’字面量&#xff0c;用于表示&#xff1a;空的、无意义的 函数如何返回None 不使用return语句即返回None 主动return None 使用场景 函数返回值if判断变量定义 练习&#xff1a; 练习一&#xff1a;无return语句的函数返回值 # 无ret…

自动发现-实现运维管理自动化

nVisual-Discovery是一款自动化工具软件&#xff0c;通过多种自动发现技术&#xff0c;协助运维管理人员快速建立可视化的网络文档&#xff0c;提升网络管理的效率与准确性。 01 IP扫描发现 当我们新接手一个网络运维项目&#xff0c;通常缺乏精准的网络文档数据&#xff0c;…

uniapp 引入了uview-ui后,打包错误,主包过大解决方案

原因&#xff1a;由于使用uniapp来设计小程序&#xff0c;使用uview的组件库&#xff0c;导致了主包过大&#xff0c;无法打包 前提条件&#xff1a;已经完成了分包&#xff0c;如果还没有分包的先分包&#xff0c;需要上传代码时用到 1. 通常情况&#xff0c;大多数都是通过点…