本文主要包含以下几个方面
- 创建Android源码的编译环境(Mac OS X)
- 下载Android源码
- 编译Android源码
- 将Android源码导入到Android Studio阅读
本文所依赖运行环境
- Mac OS X 10.11.2
- JDK 8
- Xcode 7.2
创建Android源码的编译环境(Mac OS X)
一、创立一个大小写敏感的磁盘镜像
因为Mac OS 文件管理系统对于文件名大小写特殊处理,我们需要建立一个大小写敏感的磁盘镜像
我们可以用Mac OS自带的磁盘工具软件,也可以使用命令行,在终端中敲入:
# hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
这样就在你的HOME目录下建立了一个名字为android.dmg
或者android.dmg.sparseimage
的文件。
如果你随后想调整该磁盘镜像的大小,可以使用以下命令:
# hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
现在,你已拥有一个在HOME目录下得android.dmg
或者android.dmg.sparseimage
文件。
所以你可以在你的~/.bash_profile
中加入以下方法:
加载镜像:
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
卸载镜像:
# unmount the android file image
function umountAndroid() { hdiutil detach /Volumes/android; }
二、安装必须的软件和包库
1.安装JDK
最近的Android版本(master分支)安装 jdk 8u45 或者更新的。所需jdk版本参考链接:https://source.android.com/source/requirements.html
2.必需的包
- 安装Xcode
- 安装MacPorts
- 通过MacPorts安装gmake、git 和GPG
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
如果使用Mac OS X v10.4,还需要
$ POSIXLY_CORRECT=1 sudo port install bison
3.设置文件描述符限制
在Mac OS,在同时进行的文件描述符数的缺省限制开太低,高度并行构建过程可能会超过此限制。
为了提高上限,添加以下行到你的〜/ .bash_profile中:
# set the number of open files to be 1024
ulimit -S -n 1024
下载Android源码
一、安装Repo
1.确保拥有~/bin目录
$ mkdir ~/bin
$ PATH=~/bin:$PATH
2.下载Repo工具并确保他是可执行的
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
二、安装一个Repo Client
1.建立代码要下载到的目录:
在第一项内容中我们已经建立了一个区分大小写的磁盘镜像,加载之,然后在里面执行:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
2.设置您的Git账户:
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
3.执行repo init ,你必须指定一个mainfest的URL,这将决定接下来下载的版本。
$ repo init -u https://android.googlesource.com/platform/manifest
如果需要下载一个master之外的分支,通过-b 指定。所有分支的列表: Source Code Tags and Builds。
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
执行完成会看到相应提示,这时Repo客户端的目录下将会包含.repo 目录。
三、开始下载代码
$ repo sync
取决于你的网速。这将会花费一个小时或者更多时间才能下载完。
编译Android源码
设置环境
$ source build/envsetup.sh
或者
$ . build/envsetup.sh
选择一个编译的目标
$ lunch aosp_arm-eng
Buildtype | Use |
---|---|
user | limited access; suited for production |
userdebug | like "user" but with root access and debuggability; preferred for debugging |
eng | development configuration with additional debugging tools |
编译源码
$ make -j4
编译过程中遇到的问题
据说人品好的可以一次编译通过,但是我在其中遇到了几个问题:
1.内存移除 给出的提示是:GC overhead limit exceeded Try increasing heap size with java option '-Xmx<size>'
于是我根据提示增加了分配内存:
export JVM_ARGS="-Xmx4096m -XX:MaxPermSize=1024m"
之后再次运行,编译一段时间后依然OOM报错:
于是我再次增加了内存:
export JVM_ARGS="-Xmx6144m -XX:MaxPermSize=2048m"
运行一段时间依然报错...只能求助Google:得一文:http://www.cnblogs.com/hucn/p/3572384.html
将设置改为:
export JVM_ARGS="-Xmx6144m -XX:-UseGCOverheadLimit"
重新编译,然后虽得到无数Warning,漫长等待后还是编译通过了。
将Android源码导入到Android Studio阅读
请参考工匠若水的博客,写的很详细:
使用Android Studio导入源码
参考链接
Android 源码官网
OS X 10.11下载和编译Android6.0源码
Mac OSX 10.11 EI 编译 Android 6.0 Marshmallow 源码
在Mac 10.11中编译Android 6.0源码
Android Open Source Project Site