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 imagefunction mountAndroid { hdiutil attach ~/android.dmg.sparsefile -mountpoint /Volumes/android; }

1.repo工具准备

mkdir ~/binPATH=~/bin:$PATHcurlhttps://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod 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.tarcd 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-eng2. aosp_arm64-eng3. aosp_mips-eng4. aosp_mips64-eng5. aosp_x86-eng6. aosp_x86_64-eng7. aosp_deb-userdebug8. aosp_flo-userdebug9. full_fugu-userdebug10. aosp_fugu-userdebug11. mini_emulator_arm64-userdebug12. m_e_arm-userdebug13. mini_emulator_mips-userdebug14. mini_emulator_x86-userdebug15. mini_emulator_x86_64-userdebug16. aosp_flounder-userdebug17. aosp_angler-userdebug18. aosp_bullhead-userdebug19. aosp_hammerhead-userdebug20. aosp_hammerhead_fp-userdebug21. 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: 21msTraversed 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/

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android(安卓)讀取.txt文件出現亂碼的解決方案
  6. Android(安卓)编译过程分析(1)
  7. SystemBarTint的使用
  8. Android(安卓)studio gradle配置完整版(转)
  9. android ListView在数据为空的时候headView和footerview不显示

随机推荐

  1. android下载web服务器上的文件出现Connec
  2. Android(安卓)选项卡实现
  3. 【Android(安卓)Developers Training】 2
  4. android标题栏添加延时加载标志
  5. Android中使用BottomNavigationBar实现仿
  6. Android(安卓)8.1隐藏状态栏图标的实例代
  7. android内存泄露优化总结
  8. Android的连接服务器
  9. monodroid开发之--call Hanlder
  10. 关于Android(安卓)Settings中的八个问题