文章目录
现在经常用mac办公,于是就准备在mac上面重新下载和编译一下Android源码,以便工作研究之用。又因mac硬盘容量有限,所以下载放在移动硬盘里面,鉴于最近一直都有人问下载和编译Android源码的问题,并且我上一次写Android源码编译的文章已经是几年前在网易博客写的,于是就趁这个机会写篇文章实践并总结一下。
1、如果移动硬盘需要格式化
需要把移动硬盘格式化成Mac电脑上支持的ExFAT格式,自行搜索解决!
2、创建区分大小写的磁盘映像
在默认安装过程中,Mac OS 会在一个保留大小写但不区分大小写的文件系统中运行。Git 并不支持此类文件系统,而且此类文件系统会导致某些 Git 命令(例如 git status)的行为出现异常。因此,建议始终在区分大小写的文件系统中对 AOSP 源文件进行操作。有两种方式可以创建磁盘映像,具体操作如下:
方式一:使用命令:
由于AOSP比较大,但是我们存放在移动硬盘上,更大的空间能够更好地满足未来的需求,所以预留200G+的空间。
可以通过 shell 使用以下命令创建磁盘映像:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 220g /Volumes/DongZ/aosp/android.dmg
双击这个镜像,将其挂载。这样在Mac Finder中就可以看到我们刚刚的创建的镜像了。
方式二:使用mac自带的磁盘工具
打开磁盘工具
设置空间大小,警记格式标注这栏要选择Mac OS扩展(区分大小写,日志式)的卷。点击“存储”,此时会/Volumes/aosp/下会生成一个android.dmg的镜像,双击这个镜像,将其挂载。这样在Mac Finder中就可以看到我们刚刚的创建的镜像了。
3、设置文件描述符数量上限
在 Mac OS 中,可同时打开的文件描述符的默认数量上限太低,在高度并行的编译流程中,可能会超出此上限。
ulimit -S -n 2048
4、下载源代码
Android 源代码树位于由 Google 托管的 Git 代码库中。Git 代码库中包含 Android 源代码的元数据,其中包括与对源代码进行的更改以及更改日期相关的元数据。下面介绍了如何下载特定 Android 代码流水线的源代码树。
(1)安装 、打开Repo
(2)替换国内清华的镜像
镜像连接:https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
(3)创建源码存放目录
mkdir /Volumes/DongZ/aosp/WORKING_DIRECTORY 我的是移动硬盘,mac执行会出错。我就手动在移动硬盘创建了!
然后执行 cd /Volumes/DongZ/aosp/WORKING_DIRECTORY
(4)初始化仓库
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
报:repo: command not found
Last login: Wed Jan 9 10:20:55 on ttys001
MacBook-Pro:~ luminal$ cd /Volumes/DongZ/aosp/WORKING_DIRECTORY
MacBook-Pro:WORKING_DIRECTORY luminal$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
-bash: repo: command not found
MacBook-Pro:WORKING_DIRECTORY luminal$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
MacBook-Pro:WORKING_DIRECTORY luminal$ export PATH=$PATH:$HOME/bin
MacBook-Pro:WORKING_DIRECTORY luminal$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
warning: gpg (GnuPG) is not available.
warning: Installing it is strongly encouraged.
Get https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
名字、邮箱
解决警告:
warning: gpg (GnuPG) is not available.
warning: Installing it is strongly encouraged.
gpg不可用,并强烈建议安装。那就安装吧!(花了10多分钟)
brew install gpg
安装完 gpg后,
切换到源码目录:cd /Volumes/DongZ/aosp/WORKING_DIRECTORY
再次执行初始化试试:repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
说已经有了我的信息了。进行下一步
(5)同步源码树
(以后只需执行这条命令来同步):
repo sync
curl: (22) The requested URL returned error: 404 Not Found
Server does not provide clone.bundle; ignoring.Server does not provide clone.bundle; ignoring.
可参考:https://blog.csdn.net/YuDBL/article/details/86143963
(6)更新完成
第一天【12.05】、【15.47】,然后出现如下中断
exited sync due to fetch errors
不管此错误,我继续执行:
repo sync
第二天【9.10】、【14.05】,自动中断
Syncing work tree 100% done,fetching projects 100% done 同步工作树100%完成,提取项目100%完成
那么这些百分比为什么没到100%,文件数还是 688-702,695-702 ?
再试试测试一下,一直执行repo sync命令
第三天【9.05】
结果经过一晚还这样,有点懵逼的感觉,如下图:
咋回事?
那就默认下载更新Android源码完成了吧。后面时不时再执行repo sync命令!
我们关键在用,估计即使没下载完成也八九不离十了,所以不要纠结这个百分比了吧!我感觉自己是不是有点强迫症了!
Android 源代码文件将位于工作目录中对应的项目名称下。下载成功后的源码目录:
后期我的同步更新快捷:
切换指定目录:cd /Volumes/DongZ/aosp/WORKING_DIRECTORY
同步代码:repo sync
可参考文章
清华大学开源软件镜像站-Android 镜像使用帮助
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
Mac 打开、编辑 .bash_profile 文件
https://blog.csdn.net/huxinguang_ios/article/details/78709428
Mac打开文件最大数限制修改
https://blog.csdn.net/z1134145881/article/details/52573441/