我们在调试Android应用程序的时候,有时候遇到一些莫名其妙的问题,因此我们需要查看Android内部是如何调用的。我们都知道Android是一个伟大的开源项目,因此debug的时候肯定是支持源代码级别调试的。采用源代码调试,一方面有利于发现问题,另一方面有利于我们对Android系统的整个流程有一个比较清晰的认识,对我们以后开发app或者修改rom都是大有帮助的。好了废话不说,下面就介绍一下如何在eclipse中进行源代码调试吧!
显然要进行源代码调试,首先必须下载源代码。大家可以都google的官方网站http://source.android.com/source/index.html 去下载,因为Android源代码是用git进行管理的,同时google为了管理方便,用python写了一个repo脚本进行项目管理,因此你必须确保你的电脑上安装了git和python,至于具体如何下载,大家可以参考android网站上的说明,以后我也会专门介绍如何下载和编译整个Android源代码。
我下载的是Android4.2版本,整个源代码比较大,具体的目录结构如下:
源代码下载完成后,需要导入到eclipse,这样查看起来比较方便。在命令行下,cd到development/ide/eclipse这个目录下,会发现这个目录下有一个.classpath隐藏文件
将.classpath文件拷贝到你的Android源代码的根目录下
打开eclipse,新建一个Java工程,Location选择你Android的源代码所在的目录
然后eclipse会加载Android的源代码,这个过程可能有点久,完成后点击finish,可以看到整个Android源代码都导入到eclipse中了,包括c,c++,java等所有的代码,这样查看起来就方便多了
Android源代码导入eclipse后,接下来就要进行关联调试了。首先新建一个Android的HelloWorld的工程,先在模拟器上运行一下确保没有问题,然后右击HelloWorld工程,选择Debug As -> Debug Configurations,选择左侧的Remote Java Application,右击选择New,可以自己设置一个端口,如我设置的是9000,然后点击Apply
在HelloWord的MainActivity设置一个断点
然后右击Debug As -> Android Application,进入Android调试器
你可以随便点击右边的ActivityThread中的一个方法,如performLaunchActivity,但是这个时候你会发现,提示源代码没有找到,你按照提示点击“Edit Source Lookup Path”,这时会弹出一个对话框,点击“Add”,选择Java Project,然后找到你之前的建的那个Java 源代码工程,这样就看到Android的源代码了,接下去的调试就和我们平常的调试一样了,如F5进入方法,F6 执行下一行等等。
因为我之前在super.onCreate方法上面设置了一个断点,按F5进入这个方法的内部,查看到Activity.java中的代码如下:
好了,整个Android源代码的调试就搭建完成了,这样就可以调试自己的代码,还有分析整个Android运行的流程了,这对于rom开发还是很有帮助的。