博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android工具HierarchyViewer 代码导读(2) -- 建立Eclipse调试环境
阅读量:6441 次
发布时间:2019-06-23

本文共 1818 字,大约阅读时间需要 6 分钟。

hot3.png

在上文<>中,我们介绍了HierarchyViewer主要技术点的实现。虽然我们还没有涉及到HierarchyViewer的源代码,但是利用上节所讲到的知识,读者甚至已经可以实现一个自己的HierarchyViewer了。

 

本文的内容比较轻松,我们将介绍如何把Android源代码中的HierarchyViewer项目和依赖项目导入Eclipse中,通过Eclipse阅读和调试将提高我们理解的效率,所谓磨刀不误砍柴工。

 

如果你没有安装Eclipse,可以在下载Eclipse IDE for Java Developers。本文的讲解基于Android4.0 ICS,关于源代码的下载与编译,网络上已经有很多资料,我们这里不再多做介绍,不过由于主站由于某些原因很难同步成功,建议大家从镜像服务器codeaurora.org下载,可以参考<>一文。

 

1,导入HierarchyViewer和HierarchyViewerlib

打开Eclipse,打开File-> Import –> Existing Projects into Workspace,点击Next

 

选择从~/Android-Source/sdk/hierarchyviewer2/app中导入hierarchyviewer项目。(作者的Android源代码地址为~/Android-Source)

重复上面的步骤,从~/Android-Source/sdk/hierarchyviewer2/libs/hierarchyviewerlib导入hierarchyviewerlib项目。

 

2, 导入ddmlib和ddmuilib项目

ddmlib和ddmuilib是许多Android SDK工具共同依赖的包,你可以选择不导入这两个项目而直接引入jar文件,如果你已经编译了Android源代码,你可以在~/Android-Source/out/host/liunx-x86/framwork/目录下找到ddmlib.jar和ddmuilib.jar,或者从Android SDK中的\tools\lib目录下找到他们。

 

ddmlib包含了adb的api,如果你对adb的初始化和通信感兴趣,最好导入这两个工程,从以下目录导入:

~/Android-Source/sdk/ddms/libs/ddmlib

~/Android-Source/sdk/ddms/libs/ddmuilib

 

导入后,可能无法编译它们,这是由于源代码中的重载函数都没有加上@Override声明,而eclipse默认把这个当作error来处理。我们需要修改一下项目的设置:

打开ddmlib和ddmuilib的工程属性对话框,选择Java compiler->Error/Warnings,在Annotations节点下,把“Missing’@Override’ annotation”的错误级别从“Error”改为“Warning”或者“Ignore”

 

3, 添加jar文件引用

最后,为项目添加通用的jar文件引用,这些jar文件都可以在~/Android-Source/out/host/liunx-x86/framwork/或者Android-SDK\tools\lib目录下找到:

ddmulib需要添加的引用:

 

HierarchyViewerlib项目需要添加的引用:

 

 

HierarchyViewer项目需要添加的引用:

 

特别需要注意的是,swt.jar在Android-SDK\tools\lib下的x86和x86_64目录下有2个版本,必须根据你机器的jre是32位还是64位的,来选择正确的版本,否则的话虽然编译能通过却无法运行。

 

4,调试启动

这时,所有的项目都一个编译通过了,调试启动HierarchyViewer,选择入口点com.android.hirarchyviewer 启动:

 

5,在线阅读网址

最后,介绍一个在线阅读Android源代码的地址,网站提供了非常方便的搜索、变量引用和类型定义导航功能。虽然无法调试,但也是一个不错的选择。

 

本文由的原创,转载请注明出处。

致力于移动平台自动化测试技术的研究,我们希望通过向社区贡献知识和开源项目,来促进行业和自身的发展。

转载于:https://my.oschina.net/u/618080/blog/70661

你可能感兴趣的文章
深度好文:《Spring设计思想》AOP设计基本原理
查看>>
集合Collection总览
查看>>
Lucene就是这么简单
查看>>
通过自定义Istio Mixer Adapter在JWT场景下实现用户封禁
查看>>
【译】你不知道的Chrome调试工具技巧 第五天:console的log中,让人疑惑的案例
查看>>
C++与Rust操作裸指针的比较
查看>>
如何选择适合自己的编程语言?
查看>>
Android面试整理(附答案)
查看>>
我重仓了BCH
查看>>
谁是中本聪的继承者?BCH重新启用原始“中本聪OP_Codes”
查看>>
年度十佳电商网站设计赏析
查看>>
随手记 iOS 11 适配实践总结
查看>>
Angular Material 攻略 04 Button
查看>>
前端架构之路:数据驱动型组件-HeyUI,一个新型的VUE组件库
查看>>
大数据时代如何使用数据分析来找女朋友?
查看>>
react 写一个预加载表单数据的装饰器
查看>>
Spring Cloud组件完整demo
查看>>
如何打造“好”的社区产品
查看>>
QQ浏览器隐私泄露报告
查看>>
使用腾讯云配置小程序Python开发环境
查看>>