本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接
如果想很好的理解Android编译系统,需要阅读源代码,分析执行流程
我推荐使用eclipse查看Android的源代码,eclipse是一个非常强大的ide,对于Java程序员来说,也是一个非常熟悉的ide,不仅有windows的版本,也有linux的版本,在两个操作系统上使用习惯也差不多。eclipse不仅可以查看java代码,还可以用于编写c/c++,python,shell,makefile等编程语言,因此非常适合android 源代码的查看。
假设你的linux主机已经安装好java环境,接下来我们将讲述在linux上搭建android源代码分析环境的步骤:
1)安装eclipse
推荐用于android应用开发的adt(android development kit)版本,它是google推出的基于eclipse的android应用开发工具,既可编写c/c++程序,也可编写java程序,已经安装了git插件,还带了adb和模拟器相关工具,使用非常方便,下载地址:
http://developer.android.com/sdk/index.html
将adt-bundle-linux-x86_64.zip解压至安装目录,比如~/softwares/,那么在softwares目录可以看到:
adt-bundle-linux/
- ├──eclipse
- ├──sdk
启动eclipse后设置android sdk所在目录,即adt-bundle-linux/sdk
2)设置eclipse启动参数
为了让eclipse更好的工作,可以增大eclipse使用的内存,此时需要修改eclipse.ini,进行如下设置:
-XX:PermSize=512m
-XX:MaxPermSize=512m
-Xms1g
-Xmx1g
上述设置调整了eclipse使用的内存分配方式。Java使用的内存分为两种,堆和非堆。Java 的堆是运行时数据区域,所有类实例和数组的内存均从此处分配。JVM中堆之外的内存称为非堆内存(Non-heap memory)”。
xms和xmx分别指jvm初始分配的内存和jvm使用的最大内存,占用的堆内存大于60%时,JVM就会增大堆直到-Xmx的最大限制,占用的堆内存小于30%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;使用XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4
读者可以根据需要自行设置。
3)安装python插件
python插件的下载地址:http://sourceforge.net/projects/pydev/
下载完成后解压至eclipse的安装目录即可
4)安装Shell插件
首先安装需要依赖的插件linuxtools
选择Help > Install New Software->add,在Location中输入:
http://download.eclipse.org/technology/linuxtools/update
1
<a href="http://www.cloudchou.com/wp-content/uploads/2014/01/install_shelled.png"><img src="http://www.cloudchou.com/wp-content/uploads/2014/01/install_shelled.png" alt="install_shelled" width="970" height="532" class="alignnone size-full wp-image-186" /></a>
下载ShellEd组件: http://sourceforge.net/projects/shelled/files/shelled/Shelled%201.0.4/
1
<p>解压至eclipse安装目录即可</p>
5)新建makefile工程,用于查看编译系统源代码
启动eclipse,
选择File->New->Other->C/C++->Makefile Project with Existing Code
然后选择android源码build文件夹:
1
<a href="http://www.cloudchou.com/wp-content/uploads/2014/01/new_build_project.png"><img src="http://www.cloudchou.com/wp-content/uploads/2014/01/new_build_project.png" alt="new_build_project" width="736" height="604" class="alignnone size-full wp-image-184" /></a>
展开build工程,便可很方便地查看编译系统源码:
1
<a href="http://www.cloudchou.com/wp-content/uploads/2014/01/project_unfold.png"><img src="http://www.cloudchou.com/wp-content/uploads/2014/01/project_unfold.png" alt="project_unfold" width="355" height="533" class="alignnone size-full wp-image-185" /></a>
读者阅读编译系统核心代码时,可能最头疼的就是变量,编译系统里有成百上千的变量,我们常常不知道其含义,容易一头雾水,为此我做了一个编译系统的参考手册供大家查阅, 可以很方便地检索变量,查看变量的意义,并有示例值。链接:android.cloudchou.com