mac上的android源码下载编译
准备:
一. Mac OS X(10.9.2)编译环境设置
1.创建大小写敏感的磁盘镜像
可以通过磁盘管理工具进行设置,也可以通过以下命令生成镜像文件
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg.sparsefile
生成分区之后,可以在~/.bash_profile中添加以下命令来加载分区
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg.sparsefile -mountpoint /Volumes/android; }
1.repo工具准备
mkdir ~/bin
PATH=~/bin:$PATH
curlhttps://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
2.下载源码
推荐使用清华大学TUNA镜像源,使用每月更新的初始化包进行下载更新。
由于首次同步需要下载24GB数据,过程中任何网络故障都可能造成同步失败,我们强烈建议您使用初始化包进行初始化。
下载https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar,下载完成后记得根据checksum.txt的内容校验一下。
由于所有代码都是从隐藏的.repo目录中checkout出来的,所以我们只保留了.repo目录,下载后解压再repo sync一遍即可得到完整的目录。
使用方法如下:
wgethttps://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar#下载初始化包
tar xf aosp-latest.tar
cd AOSP#解压得到的AOSP工程目录
#这时ls的话什么也看不到,因为只有一个隐藏的.repo目录
repo sync#正常同步一遍即可得到完整目录
#或repo sync -l仅checkout代码
3.复制AOSP目录到桌面,修改目录名为android
4.编译android
$ cd ~/Desktop/android
4.1.设置环境
$ source build/envsetup.sh
4.2..根据设备选择target
$ lunch target
注:target有以下可选:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_mips-eng
4. aosp_mips64-eng
5. aosp_x86-eng
6. aosp_x86_64-eng
7. aosp_deb-userdebug
8. aosp_flo-userdebug
9. full_fugu-userdebug
10. aosp_fugu-userdebug
11. mini_emulator_arm64-userdebug
12. m_e_arm-userdebug
13. mini_emulator_mips-userdebug
14. mini_emulator_x86-userdebug
15. mini_emulator_x86_64-userdebug
16. aosp_flounder-userdebug
17. aosp_angler-userdebug
18. aosp_bullhead-userdebug
19. aosp_hammerhead-userdebug
20. aosp_hammerhead_fp-userdebug
21. aosp_shamu-userdebug
其他设备可以到这里阅读
4.3编译
make -j4
#-jN,N这个数字可以跟你的CPU实际情况而定。
android目录底下会生成out文件夹,文件夹下:
报错
Error: could not find jdk tools.jar at /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/../lib/tools.jar, please check if your JDK was installed correctly.Stop.
在~/.bash_profile文件中指定ANDROID_JAVA_HOME为JDK路径即可。
export ANDROID_JAVA_HOME=${JAVA_HOME}
5.利用android studio查看Android源码
5.1编译源码idegen模块及生成AS配置文件(*.ipr)
mmm development/tools/idegen/
这行命令的意思是编译idegen这个模块项目,然后生成idegen.jar文件(不信你自己去查看这个模块的Android.mk的目标吧,不多解释)。运行完以后如果看到如下信息则说明编译OK:
......
#### make completed successfully (7 seconds) ####
接着执行如下脚本:
development/tools/idegen/idegen.sh
这行命令的意思是在根目录生成对应的android.ipr、android.iml IEDA工程配置文件。等待片刻得到类似如下信息说明OK:
Read excludes: 21ms
Traversed tree: 194799ms
通过如上操作我们就完成了基本的源码配置工作。
5.2导入Android Studio前的一些客户化操作
大家都知道使用Eclipse倒入源码很慢,Android Studio导入源码时也慢,所以建议修改android.iml文件(将自己不用的代码去掉),然后再导入Studio。
就像下面摘取的android.iml文件1887行开始的这些一样:
我们可以仿照上面这段代码的写法一样过滤掉不需要的内容,这样在导入时就会快很多。
也可以通过Android Studio的Project Stucture打开左侧Modules,然后将右侧Sources中一些目录Excluded掉。
5.3使用Android Studio导入源码工程
有了如上的这些操作以后,我们打开Android Studio,然后选择打开一个现有的Android Studio项目,然后选择打开源码根目录下的android.ipr文件,然后出现如图一样的索引即可等待导入就行:tu
这里写图片描述
到目前为止我们就可以方便的使用Android Studio查看源码啦。如下图所示:
这里写图片描述
5.4去掉系统配置jar
上图我们看见了,可以通过Android Studio搜索整套源码的代码了。但是这时候如果你打开一个Service.java类,然后把鼠标放在其中任意方法的Intent参数上按住CTRL+鼠标左键跳转到Intent类你会发现跳转过去的是一个Intent.class文件,为啥呢?因为他跳转的是你的默认SDK中的jar内部的class文件。既然要修改查看整套源码,这么跳转得多蛋疼啊,所以我们需要配置让其能跳转到Intent.java文件,具体做法如下:
首先删掉依赖中的所有依赖,只保留下图中没被选中的那两个(当然你可以选择保留一些你用到的其他jar),如下
接着点击加号的JARs or directories将你源码的frameworks及external和你用到的其他跳转目录添加到依赖中,然后apply即可。
这时候我们在像上面一样打开Service.java跳转Intent,你会发现像下图一样直接跳转到你源码路径下的Intent.java文件了,如下:
声明:文章结合几篇文章而来:
http://blog.csdn.net/bulreed/article/details/22783467
http://blog.csdn.net/yanbober/article/details/48846331
http://www.cnblogs.com/ryanchi/p/5682186.html
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/