Mac OS 在移动硬盘上下载并编译Android源码
1 编译环境选择
要编译 Android 源文件,需要使用 Linux 或 Mac OS。目前不支持在 Windows 环境下进行编译。本文介绍在Mac OS下如何下载并编译Android源码。也可参考官方文档介绍
2 Android源码下载
2.1 移动硬盘格式化
Mac 电脑一般磁盘空间有限,可购买一个移动硬盘,把源码放到移动硬盘,新买的移动硬盘大部分默认是只支持Windows系统的NTFS格式,所以需要把移动硬盘格式化成Mac电脑上支持的ExFAT格式,如图,选中要格式化的移动硬盘,点击抹掉,然后输入名称,选择ExFAT,点击抹掉。
1.png
2.2 创建区分大小写的磁盘映像
在默认安装过程中,Mac OS 会在一个保留大小写但不区分大小写的文件系统中运行。Git 并不支持此类文件系统,而且此类文件系统会导致某些 Git 命令(例如 git status)的行为出现异常。因此,建议始终在区分大小写的文件系统中对 AOSP 源文件进行操作。有两种方式可以创建磁盘映像,具体操作如下:
方式一:使用命令:
由于AOSP比较大,但是我们存放在移动硬盘上,更大的空间能够更好地满足未来的需求,所以预留200G+的空间。
可以通过 shell 使用以下命令创建磁盘映像:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 200g /Volumes/aosp/android.dmg
当然,如果需要更大的存储卷,还可以使用以下命令来调整稀疏映像的大小:
hdiutil resize -size <new-size-you-want>g /Volumes/aosp/android.dmg
方式二:使用mac自带的磁盘工具
打开磁盘工具
2.png
然后选择“新建映像”->“空白映像”,出现下图:
3.jpg
设置空间大小,警记格式标注这栏要选择Mac OS扩展(区分大小写,日志式)的卷。点击“存储”,此时会/Volumes/aosp/下会生成一个android.dmg的镜像,双击这个镜像,将其挂载。这样在Mac Finder中就可以看到我们刚刚的创建的镜像了。
2.3 设置文件描述符数量上限
在 Mac OS 中,可同时打开的文件描述符的默认数量上限太低,在高度并行的编译流程中,可能会超出此上限。
要提高此上限,请将下列行添加到 ~/.bash_profile 中:
# set the number of open files to be 1024
ulimit -S -n 1024
2.4 下载源代码
Android 源代码树位于由 Google 托管的 Git 代码库中。Git 代码库中包含 Android 源代码的元数据,其中包括与对源代码进行的更改以及更改日期相关的元数据。下面介绍了如何下载特定 Android 代码流水线的源代码树。
2.4.1 安装 Repo
Repo 是一款工具,可让您在 Android 环境中更轻松地使用 Git。要详细了解 Repo,请参阅开发部分。
要安装 Repo,请执行以下操作:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
如果你没有翻墙,可以使用清华大学的repo镜像:https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/,在
下载完成后将bin/repo打开,将里面的REPO_URL改成清华大学的镜像:
https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
4.jpg
2.4.2 初始化 Repo 客户端
1.创建源码工作目录
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
2.初始化仓库
repo init -u https://android.googlesource.com/platform/manifest
要对“master”以外的分支进行校验,请使用 -b
来指定相应分支。要查看分支列表,请参阅源代码标记和版本。
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.1_r28
初始化成功后,系统将显示一条消息,告诉您 Repo 已在工作目录中完成初始化。客户端目录中现在应包含一个 .repo 目录,清单等文件将保存在该目录下。
3.下载 Android 源代码树
同步源码树,开始下载源码
repo sync
Android 源代码文件将位于工作目录中对应的项目名称下。下载成功后的源码目录:
5.png
2.5 编译Android源码
1.在源码的当前路径运行如下命令
source build/envsetup.sh
不出意外的话会输出如下信息:
6.png
2.生成android.ipr文件
make idegen && development/tools/idegen/idegen.sh
7.png
解决方法:打开build/core/combo/mac_version.mk,在下面加入一个10.12。
mac_sdk_versions_supported := 10.8 10.9 10.10 10.11 10.12
如果一切顺利,运行成功以后会在源码目录下生成android.ipr文件。
8.jpg
3.导入Android源码到Android Studio
打开AS点击“Open an existing Android Studio project”,导航到源码路径,打开android.ipr。
9.jpg
导入成功后:
10.jpg
这样就可以在AS上查看源码,但是源码的体积很大,如果全部导入会比较卡,可以排除一些代码,可以在android.iml下修改。