【Android 12 AOSP学习】Android 12源码下载编译

2023-11-06

一、搭建环境

liunx系统:Ubuntu20.04

Android系统:12

1.安装 Repo

下载Repo前先安装 curl

sudo apt-get install curl

下载好 curl 库后,设置清华源下载 Repo ,然后给repo文件添加可执行权限

Ubuntu20.04无法使用apt安装repo,我们可以使用下面这种方法:

1,创建repo存放目录bin,并配置环境变量:

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

2,下载repo启动程序

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

设置 repo 镜像源自动更新

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

安装Python,适用于 Python 3

sudo apt install python3

如果收到“/usr/bin/env 'python' no such file or directory”错误消息,请使用以下解决方案之一:

sudo ln -s /usr/bin/python3 /usr/bin/python

2.配置git

安装git

sudo apt-get install git

配置 Git,没有安装 git 要先安装 git

# 引号里面填自己设置的用户和邮箱
git config --global user.name "XX"
git config --global user.email "XXX"

这里查看一下Git是否配置成功

git config --global --list

3.下载源码

直接下载

Git配置完成后创建工作目录

mkdir ~/Android_12_AOSP
cd ~/Android_12_AOSP

运行 repo init 获取最新版本的 Repo 及其最新的 bug 修复。使用清华源

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

最后同步代码

repo sync

成功后会在终端出现下面内容

repo sync finished successfully.

注:在同步时尽量保证一次成功

二、编译源码

编译源码时处理器可以根据自己电脑CPU核心数尽量设置多一些

1.准备编译环境

安装jdk8

sudo apt-get update
sudo apt-get install openjdk-8-jdk

安装依赖包,Ubuntu18.04系统以上

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


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

2.源码整编

进入到源码根目录

cd Android_12_AOSP/

在根目录下输入以下指令

source build/envsetup.sh
make clobber
# 还有其他两个类似命令
# make clean
# make installclean

lunch选择准备编译的版本,根据自己的需要选择版本,编译过以下内容

lunch 12  #对应我本地 aosp_car_x86-userdebug # 能启动车载模拟器

lunch sdk_phone_x86_64  # 能启动手机模拟器

开始编译

make -j6 2>&1 | tee build.log  # tee build.log 命令表示输出编译日志到build.log文件

编译成功后,在 Android 模拟器中运行 AVD 系统映像:

emulator                   # 正常启动模拟器
emulator -writable-system  # 以可写模式启动模拟器

三、虚拟机安装 VMware Tools

1.在VMware菜单栏中点击 虚拟机 > VMware Tools 安装

2.然后双击出现的桌面的 **VMware Tools CD文件 **将里面的一个压缩包复制到任意目录下

3.解压缩安装程序

tar zxpf VMwareTools-x.x.x-yyyy.tar.gz

4.准备安装程序

cd vmware-tools-distrib
sudo ./vmware-install.pl

之后一路点击 回车键 和 y或yes 就行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Android 12 AOSP学习】Android 12源码下载编译 的相关文章

  • android 网格视图从右到左放置项目

    我正在开发一个 Android 应用程序阿拉伯文版本 在其中一个界面中 我有 gridView 因此 要以正确的顺序显示项目 我必须从右到左显示 GridView 中的项目 当然是从上到下 为此 我尝试在 GridView 中添加这些属性
  • 将 APK 移动到 /system/priv-app/ 时出现 java.lang.UnsatisfiedLinkError

    成功调试我的应用程序后 我想将应用程序移动到系统应用程序 以便我可以使用系统权限 例如 REBOOT 和 SET TIME 但是 当将我的 APK 移动到 system priv app 文件夹或将 APK 添加到 ROM 编译中的第三方系
  • 我应该使用什么事件在 Firebase Analytics 上发送“按钮按下”事件

    我发现最合适的是选择内容 https firebase google com docs reference android com google firebase analytics FirebaseAnalytics Event html
  • 如何使用 ArrayAdapter

    ArrayList
  • 如何将 ThreeJS 与 PhoneGap 一起使用?

    这个探索是非常自我描述的 我已经用一个简单的 3D 立方体进行了测试 它在浏览器中运行良好 但只在模拟器中显示空白页面 有人说 Threejs 不能与 PhoneGap 一起使用 但也有人说他们使用过并且工作正常 在 Android 中 您
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • 检查从 arrayadapter 获取的复选框

    我有标题清单 CheckBox 我想控制默认检查哪一个 所以我试图获得正确的视图并检查它 但由于某种原因它不起作用 知道为什么吗 form checkbox item xml
  • 如何在 Android 应用程序中使用 xmlserializer 创建 xml

    您好 我正在制作一个预订应用程序 我需要在创建 xml 后将 xml 发送到服务器 如何使用创建 xmlxmlserializer创建后将其发送到服务器 http api ean com ean services rs hotel v3 l
  • 来自守护程序的错误响应:加入会话密钥环:创建会话密钥:超出磁盘配额

    我尝试在我的服务器上安装 docker 使用本教程 https docs docker com install linux docker ce ubuntu 我想远程运行 docker 镜像并使用 portainer Web 界面来管理一切
  • 出现软键盘时布局未向上推

    I have designed layout by taking the reference from this https stackoverflow com questions 16411056 how to adjust layout
  • JaCoCo 显示 0% 覆盖率,即使所有测试均已通过

    我在下面写了一些测试用例androidTest目录 我正在使用 androidx testInstrumentationRunner androidx test runner AndroidJUnitRunner 添加的依赖项 androi
  • 如何创建用于测试的对象的 PagedList?

    我一直在使用 Google 的 arch 库 但是让测试变得困难的一件事是使用PagedList 对于此示例 我使用存储库模式并从 API 或网络返回详细信息 因此 在 ViewModel 中 我调用此接口方法 override fun g
  • 使用 VirtualDocumentRoot 的 SSL 虚拟主机

    我在 ubuntu 16 04 VM 上进行开发工作 当我处理多个项目时 为了让我的生活更轻松 我使用 VirtualDocumentRoot 和主机文件使用 dev 域从我的主文件夹中服务器站点 在 000 default conf 我有
  • 如何在Android 11中获取dir文件列表

    我想编写自己的精简版文件浏览器 文件 API 现在不适用于外部存储 该版本还提供了对范围存储的改进 这使得开发人员可以更轻松地迁移到使用此存储模型 我不明白如何使用范围存储来访问 sdcard 如果您正在寻找文件选择器体验 存储访问框架 h
  • 安卓浮动键盘

    是否可以通过编程方式更改键盘的位置 我正在开发一个图腾应用程序 如果键盘停靠在底部 则很难使用 我尝试创建一个扩展 InputMethodService 的自定义键盘 并且我能够更改按键的布局 但我无法更改键盘的视图位置 快捷键 https
  • Android 10 通知彩色操作按钮

    I m trying to color the buttons Action in Notification like this So far this is what i m achieved so far 下面是我正在使用的代码 通知服
  • android 填充包含片段的布局

    问题是什么 我如何膨胀包含片段的布局 我不知道错误消息的含义 请帮我 谢谢 错误信息 09 01 18 44 58 698 E AndroidRuntime 20617 Caused by java lang IllegalArgument
  • 如何在ListView中标记视图?

    我有一个带有列表视图的应用程序 列表视图工作正常 当我希望列表以标记的某些行开始时 问题就开始了 如果我按下它 我可以标记一行 但是 似乎没有找到一种方法来在初始化时标记任何行 这是我的代码 listViewOfBluetooth getL
  • Android Webview:无法调用确定的可见性() - 从未见过 pid 的连接

    我有一个 Android Webview 当我单击链接下载文件 pdf 图像等 时 我收到一条错误消息 Error message Cannot call determinedVisibility never saw a connectio
  • Volley 在第一次调用方法时返回 null

    我正在尝试使用 volley 从服务器检索数据 但是当我第一次调用此方法时 我收到服务器的响应 但该方法返回 null 如果我第二次调用它 我会得到最后的响应 public String retrieveDataFromServer Str

随机推荐

  • Qt unicode字串转中文

    有时候 直接在html里面获取的字符串就是带有 u 的 然后直接显示的时候 u 也会显示出来 这里就是教你如何去掉 u QString filename u6211 u662f u4e2d u6587 do int idx filename
  • 将vscode字体字号调大

    1 进入vscode 2 找到页面左下角齿轮标符点击 然后在弹出选项那里点击设置 setting 3 点击文本编辑器 4 点击字体 5 找到font size点击设置数字 个人建议18 22 即可
  • ‘close’ was not declared in this scope

    close was not declared in this scope 没有包含头文件 unistd h 造成的 加上 include
  • Spring Cloud 学习笔记二:搭建微服务工程之Eureka 注册中心开启安全认证

    目录 Eureka 注册中心开启密码认证 Eureka 注册中心开启密码认证 Eureka 自带了一个 Web 的管理页面 方便我们查询注册到上面的实例信息 但是有一个问题 如果在实际使用中 注册中心地址有公网 IP 的话 必然能直接访问到
  • 如何在30天内,通过TikTok变现一万美金。按照我的方法,你也可以

    大家好 我是项柚 最近创作者基金愈发火热 Tiktok又热了起来 但还是很多朋友停留在川普封停TT的时间节点上 一直没有时间 今天特意写一篇文章来详细分析 其实圈子很重要 方向很重要 所以很多Tiktok运营者做不好的原因是没有交流的圈子
  • [HFCTF2020]EasyLogin

    知识点 jwt伪造 jwt 全称 Json Web Token 是一种令牌格式 可以用来区分各个用户 形式是下面这样 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 eyJzZWNyZXRpZCI6MSwidXNl
  • GitHub C 和 C++ 开源库的清单(含示例代码)

    内容包括 标准库 Web应用框架 人工智能 数据库 图片处理 机器学习 日志 代码分析等 标准库 C 标准库 包括了STL容器 算法和函数等 C Standard Library 是一系列类和函数的集合 使用核心语言编写 也是C ISO自身
  • PintOS lab2 User Programs 实验记录

    Background 大体流程如下图所示 显然这时候start process无法被调度到 然后start process 里面load out文件 o文件就是对象文件 是可重定向文件的一种 通常以ELF格式保存 里面包含了对各个函数的入口
  • 教你手机如何查看真实的IP地址

    有朋友不会查询自己手机的IP地址 很多时候我们需要使用vpn切换手机当前的IP 如何判断我们切换IP成功了呢 今天站长就教你手机如何查看目前真实的IP地址 1 打开手机浏览器 2 在搜索框里输入 ip 然后点击搜索 在搜索结果页面就会显示你
  • ESP32 上快捷部署 Tensorflow lite 机器学习(TinyML)

    在这篇文章中 我将向您展示使用 Arduino IDE 将 TensorFlow Lite 模型部署到 ESP32 的最简单方法 无需任何编译内容 Arduino 库 这个 Arduino 库是为了简化使用 Arduino IDE 将用于微
  • 4.8xml于json

    HTTP 协议 HyperText Transfer Protocol 超文本传输协议 是 TCP IP 协议集中的协议 是一个简单的请求 响应协议 指 定了客户端发送给服务器的消息以及服务器的响应 所有的 WWW 文件都必须遵守这个标准
  • matplotlib绘制饼状图

    源自http blog csdn net skyli114 article details 77508430 ticket ST 41707 PzNbUDGt6R5KYl3TkWDg passport csdn net pyplot使用pl
  • 接口测试基础

    目录 一 接口及接口测试概念 1 接口 接口的类型 2 接口测试 二 HTTP协议 1 HTTP协议的特点 2 URL格式 3 HTTP请求 4 HTTP响应 三 接口规范 1 传统风格接口 2 RESTful风格接口 四 接口测试流程 1
  • Python 11. OpenCV 透视变换

    import cv2 import numpy as np from matplotlib import pyplot as plt img cv2 imread pic4 PNG rows cols img shape 2 cv2 ims
  • 支持图文转换!PSD文档处理工具Aspose全新升级

    Aspose PSD是高级PSD和入门级AI文件格式操作API 允许创建和编辑Photoshop文件 并提供更新图层属性 添加水印 执行图形操作或将一种文件格式转换为另一种文件的功能 没有任何Adobe Photoshop或Adobe Il
  • [系统

    系统环境说明 系统 Deepin V20 平台 amd64 参考文献 asdf maven asdf document asdf plugins asdf vm安装 见多版本管理命令行工具asdf vm安装及使用 asdf vm安装Mave
  • 「C++学习笔记」面向.Net Core的(C++)CLR类库非专业入门(+使用Opencv)

    关键词 C CLR Net Core Net Famework Opencv C 目录 什么是CLR类库 本文说明 创建Demo程序 调用dll 通过项目引用 通过dll文件引用 其他还没完全清楚的坑 有关C CLI这块的资料真的很少而且都
  • 如何看待ChatGPT

    如何看待ChatGPT 如何看待ChatGPT 语言学家乔姆斯基说 这是一个抄袭的机器 欺骗性机器 ChatGPT使用大量文本数据进行训练 然后以一种令人信服的修饰语句展现 这使得它和人的互动能力更加契合 但是仍然不是一个充满创造力的智能机
  • 微信小程序之拨打电话

    微信小程序拨打电话功能的实现是采用wx makePhoneCall 具体方法如下 wxml lt view gt 电话 15888888888 lt view data ph 15888888888 bindtap callPhone gt
  • 【Android 12 AOSP学习】Android 12源码下载编译

    一 搭建环境 liunx系统 Ubuntu20 04 Android系统 12 1 安装 Repo 下载Repo前先安装 curl 库 sudo apt get install curl 下载好 curl 库后 设置清华源下载 Repo 然