本节书摘来自异步社区《Android框架揭秘》一书中的第2章,第2.5节应用程序Framework源码级别调试,作者 金泰延 , 宋亨周 , 朴知勋 , 李白 , 林起永,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.5 应用程序Framework源码级别调试
Android框架揭秘
Android平台由采用C/C++开发的Linux驱动、本地库、应用程序Framework(采用Java开发)以及应用程序四部分组成。在开发Android平台代码时,要经常调试编好的程序。下面以Java代码为例,讲解如何进行应用程序Framework源码级别的调试。
2.5.1 加载应用程序Framework源
在调试系统源码之前,首先要把系统源码调入Eclipse中。但在Android平台目录中存在数量庞大的Framework源码,若想将它们全部调入到Eclipse中,需要花费大量功夫。值得庆幸的是在Android中包含Eclipse设置文件,利用它可以把Framework的所有源码路径保存下来。下面列出了操作步骤,依据这些步骤,即可把Framework源码调入Eclipse之中。
(1)如2.2节所述,先搭建好Android编译环境,下载Android平台源代码,再使用make命令,编译Android系统。
(2)再把Android提供的.classpath文件复制到Android平台源码所在的最上层目录中。
(3)运行Eclipse,在菜单栏,依次单击File-New-Java Project,如图2-21所示。在弹出的New Java Project窗口中,输入工程名称后,指定Location为Android源码所在的目录(.classpath文件复制的位置),而后单击Finish按钮。
(4)查看Eclipse左侧的Package Explorer窗口,可以看到Android Framework源码被导入进来,如图2-22所示。
(6)在Debug Configurations窗口左侧列表中,选择Remote Java Application,单击鼠标右键,在弹出的菜单中,选择New,在右侧窗框内进行相应设置后,单击Apply按钮,应用更改项目,如图2-24所示。
2.5.2 调试HelloWorld Framework(源码级)
调试Android应用程序Framework的准备工作完成后,接下来开始调试HelloWorld程序,跟随与应用程序相关的Framework源代码,查看变量的值。
(1)首先在HelloWorld应用程序起始的地方,设置一个断点,而后在HelloWorld工程上单击鼠标右键,在弹出的菜单中,依次选择Debug As>Android Application,打开调试窗口,程序运行到断点的位置停止,并把控制权交给Eclipse的Java调试器,如图2-25所示。
(2)为了在源码级别上调试应用程序Framework,在左上Debug窗口中,选择ActivityThread类,出现源码无法找到的错误,如图 2-26 所示。此时在ActivityThread.perform LaunchActivity上,单击鼠标右键,在弹出的菜单中,选择Edit Source Lookup菜单,弹出Edit Source Lookup Path窗口。