当前位置: 首页 > news >正文

# Windows 环境下载 Android 12源码

前言

Android 官网(该方式不适合 Windows 平台):https://source.android.com/source/downloading.html

(备注自 2021 年 6 月 22 日起,安卓操作系统不再支持在 Windows 或 MacOS 上进行构建,如果要编译源码推荐先安装Ubuntu系统)

可是我就想在 Windows 系统下 看看源代码,当然可以!

准备环境

  1. 安装 git
  2. 安装 Python
  3. 自备梯子
  4. 硬盘剩余容量最好大于 150G

1. 安装 git

官网:https://git-scm.com/downloads/

图形化工具:https://tortoisegit.org/

什么?不会安装 git,那还看什么源码!自行百度!

2. 安装 Python

官网:https://www.python.org/downloads/

安装参考:http://jingyan.baidu.com/article/c910274be14d64cd361d2dd8.html

只需要安装好运行环境即可

3. 自备梯子

没有梯子?那就使用清华源:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

下载源码

1. 打开 Git Bash,用 git 克隆源代码仓库

git clone https://android.googlesource.com/platform/manifest.git
//没有梯子使用清华源
git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git

image.png

这时 E:/androidSourceCode/ 目录下会出现一个 manifest 目录,进入此目录,里面除了 git 的配置目录外,clone 下来了一个 default.xml 文件。

2. 切换到想要的源码版本分支

去这里 https://source.android.com/source/build-numbers.html#source-code-tags-and-builds

找到想要的版本分支,并复制。
image.png

cd manifest
//没有梯子,使用 git branch -a 查看所有分支,找到想要的分支
git branch -a
git checkout android-12.0.0_r34 //这里以 12.0 最后一个版本下载

图2

image.png

3. 使用 Python 执行脚本进行源代码下载

将下面的代码复制,创建文件 python_download.py,并保存。

import xml.dom.minidom
import os
from subprocess import call# 1. 修改为源码要保存的路径
rootdir = "E:/androidSourceCode/Android12"# 2. 设置 git 安装的路径
git = "C:/Develop/Git/bin/git.exe"# 3. 修改为第一步中 manifest 中 default.xml 保存的路径
dom = xml.dom.minidom.parse("D:/androidSourceCode/manifest/default.xml")
root = dom.documentElement#prefix = git + " clone https://android.googlesource.com/"
# 4. 没有梯子使用清华源下载
prefix = git + " clone https://aosp.tuna.tsinghua.edu.cn/"
suffix = ".git"  if not os.path.exists(rootdir):  os.mkdir(rootdir)  for node in root.getElementsByTagName("project"):  os.chdir(rootdir)  d = node.getAttribute("path")  last = d.rfind("/")  if last != -1:  d = rootdir + "/" + d[:last]  if not os.path.exists(d):  os.makedirs(d)  os.chdir(d)  cmd = prefix + node.getAttribute("name") + suffix  call(cmd)

4. 执行 Python 脚本开始下载

打开 Python 客户端

图5

打开上一步保存的 python_download.py 脚本文件

图6

点击 Run->Run Module 来运行脚本,或直接按F5运行。

图7

静静地等待下载完成吧。(我大概下载了一天一夜 ,12源码大概170G)

相关文章:

# Windows 环境下载 Android 12源码

前言 Android 官网(该方式不适合 Windows 平台):https://source.android.com/source/downloading.html (备注自 2021 年 6 月 22 日起,安卓操作系统不再支持在 Windows 或 MacOS 上进行构建,如果要编译源码推荐先安装…...

【运维面试】Docker技术面试题总结

【运维面试】Docker技术面试题总结 一、Docker的基础概念1.1 什么是Docker?它可以为我们提供哪些便利?1.2 Docker的优点是什么?1.3 Docker的镜像是什么?1.4 Docker的数据卷是什么?1.5 Docker Compose是什么?1.6 Docker Swarm是什么?1.7 Docker Hub是什么?有哪些用途?1…...

CNN成长路:从AlexNet到EfficientNet(01)

一、说明 在 10年的深度学习中,进步是多么迅速!早在 2012 年,Alexnet 在 ImageNet 上的准确率就达到了 63.3% 的 Top-1。现在,我们超过90%的EfficientNet架构和师生训练(teacher-student)。 如果我们在 Ima…...

使用IDEA操作Mysql数据库

idea中自带了关于数据库的连接 首先要确保你的MySQL正在运行中 打开idea找到database( view —> Tool Windows —> database),大家也可以定个快捷键,方便以后日常操作 就是这个样子,然后点加号 然后就可以编写执…...

ChatGPT下架官方检测工具,承认无法鉴别AI内容

去年底,OpenAI 推出的 ChatGPT ,带来了生成式人工智能涌现的热潮。它不仅能够协助完成撰写邮件、视频脚本、文案、翻译、代码等任务,还能通过学习和理解人类的语言来进行对话,并根据聊天的上下文进行互动。 但随之而来的争议也让人…...

Java通过实例调用getClass()方法、类名.class操作、通过运行时类获取其它信息

说明 Java Object类的getClass()函数,是通过对象调用的,是一个实例方法,该方法返回当前对象的运行时类。 通过类名.class可以获得和通过实例调用getClass()函数一样的信息。 获得运行时类以后,可以进一步获取其它信息。 代码示例…...

UE5+Paperzd问题

TopDown的2D游戏,遇到两个问题,第一问题是游戏一开始就会从tilemap上掉下去。第二个问题是没法和图层2上的物体做碰撞。 一、碰撞问题 1、创建的TileSet后,左侧选中一个tile后,一定要点击上边的Add Box,否则创建出来的…...

K8S系列文章之 自动化运维利器 Ansible

Ansible-安装 第一步:安装我们的epel扩展源 yum -y install epel-release 我这里会报/var/run/yum.pid 已被锁定,如果没有直接进行下一步 [rootmaster home]# yum -y install epel-release 已加载插件:fastestmirror, langpacks /var/run/…...

Julia 字典和集合

数组是一种集合,此外 Julia 也有其他类型的集合,比如字典和 set(无序集合列表)。 字典 字典是一种可变容器模型,且可存储任意类型对象。 字典的每个键值 key>value 对用 > 分割,每个键值对之间用逗…...

devops-发布vue前端项目

回到目录 将使用jenkinsk8s发布前端项目 1 环境准备 node环境 在部署jenkins的服务器上搭建node环境 node版本 # 1.拉取 https://nodejs.org/download/release/v20.4.0/node-v20.4.0-linux-x64.tar.gz# 2.解压到/usr/local目录下 sudo tar xf v20.4.0.tar.gz -C /usr/loc…...

使用正则表达式设置强密码

文章目录 例子和解析测试工具Java中的应用 例子和解析 强密码需要同时含有大写字母、小写字母、数字、特殊符号。 这边先展示我自己写的。 ^(?.*[a-z])(?.*[A-Z])(?.*[0-9])(?.*[!#$%?])[a-zA-Z0-9!#$%?_]{8,}$以上代8位以上的强密码。 下面是具体解析: ^代…...

epoll、poll、select的原理和区别

select,poll,epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select&a…...

【学习笔记】Java安全之反序列化

文章目录 反序列化方法的对比PHP的反序列化Java的反序列化Python反序列化 URLDNS链利用链分析触发DNS请求 CommonCollections1利用链利用TransformedMap构造POC利用LazyMap构造POCCommonsCollections6 利用链 最近在学习Phith0n师傅的知识星球的Java安全漫谈系列,随…...

算法练习--leetcode 数组

文章目录 爬楼梯问题裴波那契数列两数之和 [数组]合并两个有序数组移动零找到所有数组中消失的数字三数之和 爬楼梯问题 输入n阶楼梯,每次爬1或者2个台阶,有多少种方法可以爬到楼顶? 示例1:输入2, 输出2 一次爬2阶&a…...

本地 shell无法连接centos 7 ?

1、首先检查是否安装ssh服务; yum list installed | grep openssh-server# 没有安装尝试安装下 yum install openssh-server 2、检查ssh服务是否开启 systemctl status sshd.service# 未开启,开启下 systemctl start sshd.service # 将sshd 服务添…...

C 语言的基本算术运算符 = + - * /

C 语言的基本算术运算符有: - * / 赋值运算符 赋值运算符左侧必须引用一个内存中的位置, 最简单的方法就是使用变量名, 也可以使用指针指向内存中的某个位置. 赋值表达式的目的是把值储存到目标内存位置上. 下面语句中的 表示初始化而不是赋值: const int …...

SQL注入实操三(SQLilabs Less41-50)

文章目录 一、sqli-labs靶场1.轮子模式总结2.Less-41 stacked Query Intiger type blinda.注入点判断b.轮子测试c.获取数据库名称d.堆叠注入e.堆叠注入外带注入获取表名f.堆叠注入外带注入获取列名g.堆叠注入外带注入获取表内数据 3.Less-42 Stacked Query error baseda.注入点…...

HOT77-买卖股票的最佳时机

leetcode原题链接:买卖股票的最佳时机 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所…...

CSS调色网有哪些

本文章转载于湖南五车教育,仅用于学习和讨论,如有侵权请联系 1、https://webgradients.com/ Wbgradients 是一个在线调整渐变色的网站 ,可以根据你想要的调整效果,同时支持复制 CSS 代码,可以更好的与开发对接。 Wbg…...

Day10-NodeJS和NPM配置

Day10-NodeJS和NPM 一 Nodejs 1 简介 Nodejs学习中文网:https://www.nodeapp.cn/synopsis.html Nodejs的官网:https://nodejs.org/ 概念:Nodejs是JavaScript的服务端运行环境.Nodejs不是框架,也不是编程语言,就是一个运行环境. Nodejs是基于chrome V8引擎开发的一套js代码…...

告别假进度条!UE5蓝图实战:用自定义AssetManager实现真实关卡加载进度

UE5蓝图实战:打造真实关卡加载进度系统 在虚幻引擎5(UE5)游戏开发中,流畅的关卡加载体验对玩家沉浸感至关重要。许多开发者会遇到"假进度条"问题——进度条看似在动,实则与真实加载进度无关。本文将手把手教…...

2026年降AI工具维普检测专项实测:五款主流工具维普AIGC检测通过率完整横评

2026年降AI工具维普检测专项实测:五款主流工具维普AIGC检测通过率完整横评 拿同一篇论文,用三款工具分别处理,记录了完整检测数据。 结论先说:嘎嘎降AI(www.aigcleaner.com)效果最稳,价格也最…...

别再手动改hosts了!用Docker Compose一键部署Authelia SSO,顺便搞定Traefik反向代理

一键部署Authelia SSO与Traefik反向代理的Docker Compose实战指南 在当今复杂的网络环境中,管理多个Web应用的认证流程往往成为开发者的痛点。手动配置hosts文件、逐个设置访问权限不仅耗时耗力,还容易出错。本文将介绍如何利用Docker Compose快速搭建Au…...

Ultimate ASI Loader 专业指南:深入解析游戏MOD加载器的完整配置与开发

Ultimate ASI Loader 专业指南:深入解析游戏MOD加载器的完整配置与开发 【免费下载链接】Ultimate-ASI-Loader The Ultimate ASI Loader is a proxy DLL that loads custom .asi libraries into any game process. 项目地址: https://gitcode.com/gh_mirrors/ul/U…...

拆解安防摄像头的“眼睛”:从IMX290 Sensor到镜头,如何一步步调出通透画质?

拆解安防摄像头的“眼睛”:从IMX290 Sensor到镜头,如何一步步调出通透画质? 在安防监控领域,画质表现直接决定了产品的核心竞争力。当我们谈论"通透画质"时,实际上是在讨论一种光学与电子系统的协同优化艺术…...

JetBrains IDE试用期重置终极指南:如何免费延长30天评估期

JetBrains IDE试用期重置终极指南:如何免费延长30天评估期 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter JetBrains IDE试用期重置工具(ide-eval-resetter)是一款专业的开源解…...

探索OpenHarmony蓝牙BLE测试HAP:高效验证与优化

探索OpenHarmony蓝牙BLE测试HAP:高效验证与优化 【下载地址】OpenHarmony鸿蒙蓝牙ble测试hap 本仓库提供的是用于OpenHarmony系统下的蓝牙BLE(低功耗蓝牙)测试HAP(HarmonyOS Ability Package)。此HAP旨在帮助开发者和测…...

别再为焊缝偏差头疼了!手把手教你用ROBOGUIDE V9.4配置FANUC机器人电弧跟踪

工业机器人焊接精度革命:FANUC电弧跟踪技术实战解析 焊接车间里刺眼的弧光下,老师傅擦了擦护目镜上的焊渣,第3次调整机器人路径——这批不锈钢管件的装配误差比预期大了0.8毫米,传统示教点焊出的焊缝像醉汉走路般歪歪扭扭。这正是…...

SpringBoot3 + ShardingJDBC读写分离进阶:如何用AOP实现强制走主库(@Master注解实战)

SpringBoot3 ShardingJDBC读写分离进阶:如何用AOP实现强制走主库(Master注解实战) 在分布式数据库架构中,读写分离是提升系统吞吐量的常见方案。但当你的SpringBoot3应用已经配置好ShardingJDBC的基础读写分离功能后,…...

基于Adafruit与CircuitPython的交互式光剑:从硬件选型到3D打印全流程解析

1. 项目概述:打造一把会“呼吸”的交互式光剑几年前,当我第一次在游戏里挥动《塞尔达传说》中的大师之剑时,就被那种兼具力量感与神圣感的视觉效果深深吸引。作为一个硬件创客,我一直在想,能不能把这种虚拟的体验带到现…...