【Android源码 栏目提醒】:网学会员,鉴于大家对Android源码 十分关注,论文会员在此为大家搜集整理了“Eclipse王者归来——如何使用Eclipse调试Android源 - 金融机构”一文,供大家参考学习!
Eclipse王者归来——如何使用Eclipse调试
Android源码 第一研究所 张长青 2011-07-01 写在前面的话 前一阵子,各位同事学习了很多关于eclipse的知识,也学会了使用它和ADT、Android SDK结合起来开发Android应用。
但是一拿到整个工程的源代码,想把已有的应用导入eclipse,居然连编译都通不过,更别说调试了。
向二所三所的同事请教,他们说平时根本不用eclipse进行开发,主要通过打log的方法进行调试,而且运行的完全是工程编译出来的模拟器,和eclipse和SDK一点关系都没有。
这不免让我们很沮丧,难道学到的这些东西真的用不上吗?我还是很喜欢使用eclipse进行断点调试的方式,可以设置断点看变量、可以看调用栈、可以让程序单步执行。
难道真的没有办法了吗? 本篇文章会告诉你答案。
2 前言 其实,很早就准备好了本篇的专题,一直没有提笔,除了时间紧张以外( 我也有很多工作任务哦),还有就是不想把断点调试作为一种主流的方式推荐给大家。
已经进入了智能时代,我们的调试方式也应该转变为以log为主,因为log反映了程序动态运行的状态,可以逼着我们以一种运行时的状态来思考程序的行为。
而且,程序中多保留一些log信息,也方便我们在测试阶段和量产后调查和追踪问题。
如果程序中没有log信息,某个机器出现问题后,除了表面看到的现象,其他的你将一无所知,从而一筹莫展。
如果程序中有log,也许能帮助你找到问题的答案。
3 关于断点调试 但是,以往的经验告诉我们,断点调试确实有它的优点。
永远不会忘记随意控制程序运行的乐趣,可以随心所欲设置各种断点,包括灵活而强大的条件断点,停下来可以方便地查看上下文的变量和函数调用栈。
如此便捷的工具,一定会使我们的开发工作如虎添翼。
那么,废话少说,言归正传,下面就来谈谈如何使用Eclipse来调试Android工程中的源码。
4 本文讨论的范畴 Android是一个非常复杂的系统,从上至下分为好多层,而且跨越多种语言和运行时环境,不可能用一种工具来调试它所有的代码。
本文讨论的范围就是使用Eclipse和DDMS工具,调试所有Java编写的代码,包括Framework和应用程序部分。
5 目录 一、调试前的准备 二、配置Eclipse工具 三、将工程源代码导入Eclipse 四、调试原理简介 五、如何进行调试 6 二、配置Eclipse工具1、修改eclipse.ini文件 将该文件中的3个参数改为下面所示的值: (以适应Android程序大内存的需要) -Xms128m -Xmx512m -XX:MaxPermSize256m 备注:eclipse.ini文件在eclipse的安装目录下,例如 /opt/eclipse/eclipse.ini 8 二、配置Eclipse工具2、导入android编码规范文件 把android-formatting.xml和android.importorder导入eclipse 两个文件都放在工程根目录下的development/ide/eclipse/目录 下) 在window-preferences-java-Code style-Formatter中导入 android-formatting.xml 在window-preferences-java-Code style-Organize Imports中导入 android.importorder 说明:导入这两个文件,是为了与源码中的Android程序保持一致的编码 规范。
android-formatting.xml用来配置eclipse编辑器的代码风格; android.importorder用来配置eclipse的import的顺序和结构。
9二、配置Eclipse工具 10二、配置Eclipse工具 11三、将工程源代码导入Eclipse1、在源码工程中建立eclipse工程文件 按以下步骤操作: 1)打开命令行终端并进入工程根目录; 2)把eclipse工程配置文件复制到
android源码根目录下 cp development/ide/eclipse/.classpath ./ 3)将该文件设置为可执行。
chmod uw .classpath 12三、将工程源代码导入Eclipse2、修改.classpath文件 使用文本编辑器打开工程根目录下的.classpath文 件,去掉该文件中的以下两行内容: 备注:去掉以上两行,是为了解决编译不过的问题,而且这两个 库我们平时开发一般用不到。
13三、将工程源代码导入Eclipse3、将
Android源码导入eclipse 按以下步骤操作: 1)打开eclipse; 2)新建一个Java工程 注意:一定要新建一 个普通的Java工程, 防止破坏Android源代 码的结构。
因为新建 Android工程,ADT工 具会做一些预处理。
14 三、将工程源代码导入Eclipse3)将
Android源码作为 默认的location导入 注意:为避免导入错误,按以下顺序 操作,先去掉图中【Use default location】勾选,选择好工程根目录 回来后,再重新勾选上【Use default location 】选项,观察默认 路径是否改变,如果默认路径改变 了,就不要选勾选。
这一步要确保 default location 是工程的根目录。
然后点击【Next】-》【Finish】。
导入的时候,工程会自动编译,所以 要耐心等一会儿。
15三、将工程源代码导入Eclipse部 导分 入工 成程 功代 后码 看 到 右 面 视 图 几 乎 能 看 到 大 16 三、将工程源代码导入Eclipse4)解决工程编译的错误 如果不出意外,导入到eclipse的工程一般会出现编译 错误,都是java文件中的错误。
如果你是负责的模 块,你可以自己修改一下,如果是其他模块,不用管 它也没关系。
以下是我们遇到过的问题,可以供参考: 如果是文件PreConnectionThread.java中的错误,请把第一行的packagename从原 来的“android.webkit”改成“android.net.http”,文件位置: frameworks/base/core/java/android/net/http/PreConnectionThread.java 17 四、调试原理简介 以前也介绍过,Android的模拟器是一个完整的虚拟机,可以完全当做一台虚拟的硬件设备,对它进行调试,只能采用远程调试的方法,用到的工具主要是DDMS(Davik Debug Manager Service)工具和Java的远程调试方法。
下页是原理框图和各部分功能简介。
18 四、调试原理简介设置断点,查看 设置调试端口 运行程序变量和调用栈 eclipse ddms emulator标准的eclipse 源码编译出来的 源码编译出来的工具 ddms工具,启动 emulator,启动方法: 方法: . build/envsetup.sh .build/envsetup.sh setpaths lunch 1 emulator ddms 图:Eclipse调试原理框图 19 五、如何进行调试 前面讲了那么多,终于到了最激动人心的时刻了,现在一步步告诉你如何进行调试。
1、启动工具各工具的启动顺序: 1)启动模拟器(工程编译出来的) . build/envsetup.sh setpaths emulator 2)启动ddms(工程编译出来的) lunch 1 ddms 3)启动eclipse 20