【Android源码 栏目提醒】:以下是网学会员为您推荐的Android源码 -【长青说安卓】系列专题(七):Eclipse王者归来——如何使用Eclipse调试Android源码 - 企业软件开发,希望本篇文章对您学习有所帮助。
EclipseEclipseEclipseEclipseEclipseEclipseEclipseEclipse王者归来王者归来王者归来王者归来王者归来王者归来王者归来王者归来————如何使用如何使用EclipseEclipse调试调试AndroidAndroid源码源码第一研究所第一研究所第一研究所第一研究所张长青张长青张长青张长青2011-07-012011-07-012011-07-012011-07-012写在前面的话写在前面的话写在前面的话写在前面的话前一阵子各位同事学习了很多关于eclipse的知识也学会了使用它和ADT、AndroidSDK结合起来开发Android应用。
但是一拿到整个工程的源代码想把已有的应用导入eclipse居然连编译都通不过更别说调试了。
向二所三所的同事请教他们说平时根本不用eclipse进行开发主要通过打log的方法进行调试而且运行的完全是工程编译出来的模拟器和eclipse和SDK一点关系都没有。
这不免让我们很沮丧难道学到的这些东西真的用不上吗我还是很喜欢使用eclipse进行断点调试的方式可以设置断点看变量、可以看调用栈、可以让程序单步执行。
难道真的没有办法了吗本篇文章会告诉你答案。
3前言前言前言前言其实很早就准备好了本篇的专题一直没有提笔除了时间紧张以外??我也有很多工作任务哦还有就是不想把断点调试作为一种主流的方式推荐给大家。
已经进入了智能时代我们的调试方式也应该转变为以log为主因为log反映了程序动态运行的状态可以逼着我们以一种运行时的状态来思考程序的行为。
而且程序中多保留一些log信息也方便我们在测试阶段和量产后调查和追踪问题。
如果程序中没有log信息某个机器出现问题后除了表面看到的现象其他的你将一无所知从而一筹莫展。
如果程序中有log也许能帮助你找到问题的答案。
4关于断点调试关于断点调试关于断点调试关于断点调试但是以往的经验告诉我们断点调试确实有它的优点。
永远不会忘记随意控制程序运行的乐趣可以随心所欲设置各种断点包括灵活而强大的条件断点停下来可以方便地查看上下文的变量和函数调用栈。
如此便捷的工具一定会使我们的开发工作如虎添翼。
那么废话少说言归正传下面就来谈谈如何使用Eclipse来调试Android工程中的源码。
5本文讨论的范畴本文讨论的范畴本文讨论的范畴本文讨论的范畴Android是一个非常复杂的系统从上至下分为好多层而且跨越多种语言和运行时环境不可能用一种工具来调试它所有的代码。
本文讨论的范围就是使用Eclipse和DDMS工具调试所有Java编写的代码包括Framework和应用程序部分。
6目录目录目录目录一、调试前的准备二、配置Eclipse工具三、将工程源代码导入Eclipse四、调试原理简介五、如何进行调试7一、调试前的准备一、调试前的准备一、调试前的准备一、调试前的准备调试之前必须满足以下条件1、已建立基本的Android开发环境2、
Android源码工程已经编译完成3、编译出来的系统可以正常启动8二、配置二、配置二、配置二、配置EclipseEclipseEclipseEclipse工具工具工具工具1、修改eclipse.ini文件将该文件中的3个参数改为下面所示的值以适应Android程序大内存的需要-Xms128m-Xmx512m-XX:MaxPermSize256m备注eclipse.ini文件在eclipse的安装目录下例如/opt/eclipse/eclipse.ini9二、配置二、配置二、配置二、配置EclipseEclipseEclipseEclipse工具工具工具工具2、导入android编码规范文件把android-formatting.xml和android.importorder导入eclipse两个文件都放在工程根目录下的development/ide/eclipse/目录下在window-preferences-java-Codestyle-Formatter中导入android-formatting.xml在window-preferences-java-Codestyle-OrganizeImports中导入android.importorder说明导入这两个文件是为了与源码中的Android程序保持一致的编码规范。
android-formatting.xml用来配置eclipse编辑器的代码风格android.importorder用来配置eclipse的import的顺序和结构。
10二、配置二、配置二、配置二、配置EclipseEclipseEclipseEclipse工具工具工具工具11二、配置二、配置二、配置二、配置EclipseEclipseEclipseEclipse工具工具工具工具12三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入EclipseEclipseEclipseEclipse1、在源码工程中建立eclipse工程文件按以下步骤操作1打开命令行终端并进入工程根目录2把eclipse工程配置文件复制到
android源码根目录下cpdevelopment/ide/eclipse/.classpath./3将该文件设置为可执行。
chmoduw.classpath13三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入EclipseEclipseEclipseEclipse2、修改.classpath文件使用文本编辑器打开工程根目录下的.classpath文件去掉该文件中的以下两行内容备注去掉以上两行是为了解决编译不过的问题而且这两个库我们平时开发一般用不到。
14三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入EclipseEclipseEclipseEclipse3、将
Android源码导入eclipse按以下步骤操作1打开eclipse2新建一个Java工程注意一定要新建一个普通的Java工程防止破坏Android源代码的结构。
因为新建Android工程ADT工具会做一些预处理。
15三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入EclipseEclipseEclipseEclipse3将
Android源码作为默认的location导入注意为避免导入错误按以下顺序操作先去掉图中【Usedefaultlocation】勾选选择好工程根目录回来后再重新勾选上【Usedefaultlocation】选项观察默认路径是否改变如果默认路径改变了就不要选勾选。
这一步要确保defaultlocation是工程的根目录。
然后点击【Next】-》【Finish】。
导入的时候工程会自动编译所以要耐心等一会儿。
16三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入EclipseEclipseEclipseEclipse导入成功后看到右面视图几乎能看到大部分工程代码17三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入三、将工程源代码导入EclipseEclipseEclipseEclipse4解决工程编译的错误如果不出意外导入到eclipse的工程一般会出现编译错误都是java文件中的错误。
如果你是负责的模块你可以自己修改一下如果是其他模块不用管它也没关系。
以下是我们遇到过的问题可以供参考如果是文件PreConnectionThread.java中的错误请把第一行的packagename从原来的“android.webkit”改成“android.net.http”文件位置frameworks/base/core/java/android/net/http/PreConnectionThread.java18四、调试原理简介四、调试原理简介四、调试原理简介四、调试原理简介以前也介绍过Android的模拟器是一个完整的虚拟机可以完全当做一台虚拟的硬件设备对它进行调试只能采用远程调试的方法用到的工具主要是DDMSDavikDebugManagerService工具和Java的远程调试方法。
下页是原理框图和各部分功能简介。
19四、调试原理简介四、调试原理简介四、调试原理简介四、调试原理简介eclipseddmsemulator源码编译出来的ddms工具启动方法.build/envsetup.shlunch1ddms源码编译出来的emulator启动方法.build/envsetup.shsetpathsemulator标准的eclipse工具设置断点查看变量和调用栈设置调试端口运行程序图Eclipse调试原理框图20五、如何进行调试五、如何进行调试五、如何进行调试五、如何进行调试前面讲了那么多终于到了最激动人心的时刻了现在一步步告诉你如何进行调试。
1、启动工具各工具的启动顺序1启动模拟器工程编译出来的.build/envsetup.shsetpathsemulator2启动ddms工程编译出来的lunch1ddms3启动eclipse21五、如何进行调试五、如何进行调试五、如何进行调试五、如何进行调试DDMS启动成功后应该看到如右图所示内容22五、如何进行调试五、如何进行调试五、如何进行调试五、如何进行调试2、设置DDMS的调试端口注意这个端口会在eclipse里用到通过菜单【File】-【Preferences】设置它的默认值是8700为了与标准的SDK中的DDMS冲突这里可以设置成其他值例如设置成8900。
23五、如何进行调试五、如何进行调试五、如何进行调试五、如何进行调试3、在DDMS中选中要调试的进程注意要调试某个应用首先要在模拟器上启动这个应用每个应用在虚拟机上是一个独立的进程进程名一般和应用的包名相同或者在AndroidMenifest.xml文件中的process属性指定。
24五、如何进行调试五、如何进行调试五、如何进行调试五、如何进行调试4、在eclipse中设置远程调试在【Run】-【DebugConfigurations】-【Remotejavaapplication上】双击然后”Host:”设为localhost”Port:”设为8900”ConnectionType”为StandardSocketAttach然后“Apply”然后“Debug”。
25五、如何进行调试五、如何进行调试五、如何进行调试五、如何进行调试如果上一步确定后没有错误基本上可以连接成功。
回到DDMS窗口如果该进程前面出现小蜘蛛图标说明连接成功。
26五、如何进行调试五、如何进行调试五、如何进行调试五、如何进行调试5、在eclipse中设置调试断点在需要设置断点的行上双击左面的区域或者按快捷键CtrlAltB如果出现红色小点说明设置成功。
27在eclipse中右上角的Debug界面中也可以看到设置的断点。
五、如何进行调试五、如何进行调试五、如何进行调试五、如何进行调试28五、如何进行调试五、如何进行调试五、如何进行调试五、如何进行调试6、查看函数调用栈如果程序运行到设置的断点Android模拟器就会暂停运行并且在eclipse的Debug界面中可以进行调试查看调用栈和变量单步执行等。
函数调用栈变量显示区代码区29五、如何进行调试五、如何进行调试五、如何进行调试五、如何进行调试复杂一些的断点设置如右图所示可以设置Hitcount条件断点Conditional有兴趣自己慢慢体会吧。
30后记后记后记后记怎么样eclipse和ddms够强大吧。
通过上面的介绍你可能已经体会到程序的编译和加载还是在工程中通过各种命令完成的eclipse只是用来调试或者进行简单的代码浏览eclipse的即时编译可以帮我们检查语法错误它的上下文帮助可以让我们方便地看到类的继承关系它也可以解析一下jar包中的类如标准JDK中的String类等这是SourceInsight等纯粹代码编辑工具所做不到的。
熟练地使用各种工具可以极大地提高我们的工作效率赶快亲自体验一下吧。
ThankyouforyourtimeThankyouforyourtimeThankyouforyourtimeThankyouforyourtimeThankyouforyourtimeThankyouforyourtimeThankyouforyourtimeThankyouforyourtime张长青张长青张长青张长青作品作品作品作品EmailEmailEmailEmailadamzhang126.comadamzhang126.comadamzhang126.comadamzhang126.com
上一篇:
Android系统匿名共享内存Ashmem(Anonymous
下一篇:
基于消费者社会化视角的儿童消费者影响因素研究