MacOS Montery 下 Android Aosp源码编译简要流程

1,229 阅读1分钟

编译环境

Mac OS: Montery 12.1

JDK: 1.8.0_281

AOSP: android-8.1.0_r1

Python: 2.7.18

安装需要的软件

Homebrew

安装 Homebrerw 主要是为了安装Git,如果有Git 忽略此操作。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

安装 Git

# 使用 homebrew 安装 git
brew install git

# 配置 git
git config --global user.name "Your Name"
git config --global user.email "you@example.com"

检查 Python 环境

Mac Montery 自带的 Python 环境刚好就可以了。

# 检查 python 版本
python --version

输入如下:

Python 2.7.18

安装 JDK

Oracle 官网下载 JDK8 需要注册后才能下载,聪明的我早已为大家准备好了, 点击下载 JDK8,安装完成以后用以下命令验证:

java -version

输入如下:

java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)

至此所有的环境已经准备完成,拿起手中的乌木剑冲吧!

Repo

Aosp 源码是通过 Git 来管理的,但是由于源代码量过于庞大, 使用 Git 已经无法满足需求,所以 Google 在 Git 的基础上面用 Python 创造了一款新的轮子 Repo。废话少说,开干。

首先,创建 repo 工具存放的文件夹,你可以按照我这样,也可以自定义。

# 创建存放 repo 工具的文件夹
mkdir ~/Development/bin

下载 repo, 并且修改执行权限

# 下载 repo 到我们上一部创建的文件夹中
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/Development/bin/repo

# 修改执行权限
chmod a+x ~/Development/bin/repo

最后,讲 repo 工具添加到环境变量中。如果不会使用 vim 可以使用 open ~/.bash_profile 打开后直接在文件中操作。

# 编辑 bash_profile
vim ~/.bash_profile

# 然后按 i 键进入编辑模式 拷贝下面一行代码,如果建立的 repo 存放路径和我不一样这里要注意修改
export PATH=~/Development/bin:$PATH

# 按 ESC, 在输入 :wq 保存并退出

使用 source 命令使我们刚才设置的环境变量生效。

source ~/.zshrc

这里值得注意,新系统都是使用的 .zshrc ,我是在 .zshrc 中添加了 source ~/.bash_profile 这一句话。*

使用 Repo 下载源代码

创建源代码存放的文件夹,我是把源代码存放在一块新的硬盘中。

cd /Volumns/Android
mkdir Aosp
cd aosp

初始化源码仓库和版本

由于代码量大,使用 google 的仓库需要使用代理下载,本指南使用清华的镜像源。感谢清华镜像。

# 设置默认仓库 
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

# 指定 aosp 源码版本, 我编译的 android-8.1.0_r1
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-8.1.0_r1

设置完成后就可以克隆源码了

repo sync

这一步可能需要花费不少时间。

编译源码

好了,走到这一步,估计大家手中的乌木剑早已饥渴难耐了。GO!

!!!, Mac Montery 下编译已经放弃,有问题!谷歌最新官方已经不支持在 Mac 下面编译 AOSP, 也许在低版本 Mac 能编译,不过我转 Ubuntu 了。