有没有必要阅读Android源码
官网地址:Establishing a Build Environment
查看想要下载的源码的Tag和Builds:Codenames, Tags, and Build Numbers
这里步骤就参考 Mac OS X 下 Android 6.0 源码的下载与编译 以及 清华大学TUNA镜像源
Step 1. 创建一个大小写敏感的磁盘镜像
$ sudo hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 80g ~/android.dmg
当然,你可能觉得80g不够用,就自己给大点,只要不超过镜像文件所在磁盘的剩余空间就行,还有点就是镜像文件在磁盘上占的空间大小是你向镜像文件里放置的文件的实际大小,而不是上面定义的80g,这个最大空间的大小将来还能更改,所以不必担心弄太大占了空间,如果通过上面已经创建了,你可以通过下面重新设置镜像大小
$ sudo hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
Step 2. 加载分区
$ sudo hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android
Step 3. 下载并安装需要的辅助工具
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
Step 4. 设置一个文件描述符限制
Mac 系统下默认只能同时打开 1024 个文件,而在进行 Android 源码编译时有可能会超出这个限制,因此需要解除这个限制。在~/.bash_profile中添加以下内容:
#set the number of open files to be 1024
ulimit -S -n 1024
至于~/.bash_profile你可以这样打开:
1.启动终端Terminal
2.进入当前用户的home目录
输入cd~
3.创建.bash_profile
输入touch .bash_profile
4.编辑.bash_profile文件
输入open -e .bash_profile
5.添加上面内容,保存文件,关闭.bash_profile
6.更新刚配置的环境变量
输入source .bash_profile
Step 5. 安装Repo
Repo是一个辅助于Git管理Android版本及分支的工具。
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Step 6. 下载压缩包(这种做法我认为是最快的)
使用清华大学TUNA镜像源每月更新的初始化包,下载地址 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar ,下载完后把它放到 /Users/用户名/下。然后再执行:
$ tar xf aosp-latest.tar
$ cd AOSP # 解压得到的 AOSP 工程目录
$ repo sync # 正常同步一遍即可得到完整目录
这里如果出问题卡住,重新同步。如果是repo执行出错的话,就重新执行Step5。
Step 7. 进入 Step 2 加载的分区
注意,先将之前解压同步完的 AOSP 文件夹拷贝到分区中。
接着,
$ cd /Volumes/android/AOSP/
如果出现-bash: cd: /Volumes/android/AOSP/: No such file or directory
,记得执行Step2步骤。
Step 8*. 编译
$ source build/envsetup.sh
为阅读源码
$ lunch aosp_arm-eng
最后
$ sudo make -j4
出现问题,解决,再 sudo make -j4 ,循环往复,直到最su终编译完成。不用管出现的多个 warning ,有 error 时解决完继续下去。我遇到过Unsupported curl 和 Out of memory error,其实一般有问题百度、谷歌、Stack Overflow 找,总可以解决的,耐心点就行。—>不过,我找的真的快崩溃了,试了好多种,差点放弃了,还好想着白富美,坚持了下去。。。
终于,不知等了多久,编译终于完成!!心情是相当的激动的,但是,既然编译好源码,我们起码得去看下吧,想阅读源码又不只是去打开一个个文件看,当然要借助工具了,这里,我们通过Android Studio阅读源码。
在上面编译成功后,继续在源码的根目录下,即/Volumes/android/AOSP/下执行
$ mmm development/tools/idegen/
稍等片刻,接着
$ sh ./development/tools/idegen/idegen.sh
最终完成后,打开 Android Studio ,选择打开一个现有的 Android Studio 项目,选择 Android 源码的根目录,导入android.ipr 文件,最后,附上源码图
完美散花!!