转载

下载编译android源码笔记

这几天下载编译了android源码,下面是一些笔记。

准备工作

1.安装JDK和Xcode, 一般android开发人员的mac电脑上这两样应该是必备的吧。我的JDK是1.7版本,没试过1.8是否可行。 安装Xcode是因为需要里面Command Line Tools的。从Yosemite开始,Command Line Tools可以单独安装,无需像之前一样 必须先安装Xcode才能安装Command Line Tools。但是直接装Xcode是最方便的,避免后续打的其他问题。

2.准备50G的硬盘空间,由于我的mac空间不足50G,我也不想浪费大量的空间,所以我直接下载到移动硬盘上,用mac的磁盘工具对 移动硬盘分区,选择格式的时候选择mac OS扩展(区分大小写)。

下载编译android源码笔记

下载源码

1.安装repo

Repo是一个辅助于Git管理Android版本及分支的工具.在安装repo前,需要新建一个文件夹~/bin,并把这个文件夹放到PATH环境变量里, 然后我们就可以把repo下载到这个文件夹里. 依次输入下面的命令,这里需要使用VPN.

     $ mkdir ~/bin     $ PATH=~/bin:$PATH     $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo     $ chmod a+x ~/bin/repo     

repo这个工具很小(24KB),但却是下载整个源码不可缺少的工具.

2.修改repo

在国内一定要使用国内的镜像下载,不然连了VPN只有不到100KB/S的下载速度,要下载20g要很久。 下面修改repo文件,把REPO_URL = 'https://gerrit.googlesource.com/git-repo'改成 REPO_URL = 'https://gerrit-googlesource.lug.ustc.edu.cn/git-repo'

3.下载

按照修改完成后,建立一个放置android源码的目录。

     $ mkdir androidM     $ cd androidM     $ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r17     $ repo sync     

这时就开始下载源码了,需要的时间比较长。一共20多G,需要多久可以根据自己的下载速度计算,下载完后会自动check out出android项目文件,一共加起来 的空间有40g左右。

如果要暂停下载可以按Control+C或者Control+C,然后输入repo sync继续下载。

编译源码

编译生成idegen.jar

进入Android 源码根目录,执行

     $ . build/envsetup.sh
$ mmm development/tools/idegen/

这行命令的意思是编译idegen这个项目,生成idegen.jar文件.生成成功后,会显示这个jar包的位置,并显示make completed successfully (43 seconds)。

下面简单说一下m命令:

m、mm、mmm命令可以让你只编译单独模块,而不用费大量的时间比编译整个Android系统。要使用m、mm、mmm命令,需要在源码目录下执行如下命令。 否则会提示命令找不到。

这3个命令的区别在于:

1.单独编译某模块,需要在mmm后面指定模块路径。 2.可以跳转到你想编译模块相对应目录下执行“mm”命令。 3.用 m 编译全部的模块。

所以上面的mmm development/tools/idegen/也可以写成下面的样子

     $ cd development/tools/idegen     $ mm     

为什么要先编译这个idegen文件夹呢?要将Android系统源代码工程导入到Eclipse或者IntelliJ IDEA,关键是要有相应的工程配置文件。idegen就是用来生成针对Eclipse和IntelliJ IDEA的Android系统源代码工程配置文件的一个工具。

如果遇到Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk的错误,具体错误的原因是,在编译脚本中会检查当前的Xcode sdk 的版本是否是兼容的,这可能是因为你mac上的xcode版本比较新,在Android源代码中还没有添加上.理论上说应该用Android代码对应的Xcode SDK 版本来编译,不然可能会有兼容性的问题。但是我自己实测最新的xcode版本是可以正常编译Android源代码的,具体的方法如下所示: 你可以到Xcode的sdk路径下(/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs)查看当前 系统的SDK版本是多少。比如我的SDK版本是MacOSX10.11.sdk,接下来编辑build/core/combo/mac_version.mk中的mac_sdk_versions_supported 所在的行添加10.11就行了。

我在执行这步过程中出现了另外一个错误:

 make: *** No rule to make target </span><span class="n">out</span><span class="o">/</span><span class="n">host</span><span class="o">/</span><span class="n">common</span><span class="o">/</span><span class="n">obj</span><span class="o">/</span><span class="n">JAVA_LIBRARIES</span><span class="o">/</span><span class="n">guavalib_intermediates</span><span class="o">/</span><span class="n">javalib</span><span class="p">.</span><span class="n">jar</span><span class="err">'</span><span class="p">,</span> <span class="n">needed</span> <span class="n">by</span> <span class="err">out/host/common/obj/JAVA_LIBRARIES/idegen_intermediates/javalib.jar'.  Stop. /e[0;31m#### make failed to build some targets (5 seconds) ####/e[00m  

这个问题纠结了很久,google也没有找到答案,我猜想可能是jdk版本的原因,最终还是无法生成idegen.jar,只能找别的办法,如果只是为了阅读源码,而不需要自己刷系统的话,也可以 不编译,直接拷贝一个过来,可以参考 如何使用Android Studio开发/调试Android源码 在这片文章末尾有idegen.jar的下载地址,然后粘贴到out/host/darwin-x86/目录下。

生成IDE配置文件

在AOSP源码根目录执行下面的命令:

 development/tools/idegen/idegen.sh     

运行无错误的话,会在AOSP源代码根目录生成下列文件

// 用于IntelliJ IDEA的项目配置文件 android.ipr android.iml

// 用于Eclipse的项目配置文件 .classpath

然后在android studio中打开新的项目,选择源码根目录就可以了。

原文  http://souly.cn/技术博文/2016/04/15/下载编译android源码笔记/
正文到此结束
Loading...