完整APK源码分析步骤(一)
2016-03-16 17:40
197 查看
使用情景:当拿到一份不了解的源码时,如何快速对源码进行分析,了解其结构功能。
开发环境: Android studio ,keyMap为Eclipse
条件:源码可运行在手机上
1、编译源码并运行,在手机上对源码的功能使用,了解实现的所有功能;
2、浏览一遍源码的类名称和布局文件名称,见excel记录不理解的英文名并翻译;
3、查看manifest.xml文件,了解主要的Activity和其它server等,方便定位Activity,然后跳转之首页的Activity;
4、查看Activity中方法和注释,不懂的英文记得翻译后记录在excel中;
其实做完上述步骤,对源码的理解有时还会很乱,特别是代码量大的时候,下面是关于一些AS控件使用的技巧:
5、快速联系控件与控件名:
5.1手机连接电脑,并 在手机上打开应用到需要分析的界面;
5.2打开DDMS —> device —> 点击应用包名 —> 点击dump View图标,然后等待截屏打开相应界面(如下图到编号3):
![](http://img.blog.csdn.net/20160316165130821)
![](http://img.blog.csdn.net/20160316165224431)
5.3我打开的是相机的源码,截屏后的视图如下:
![](http://img.blog.csdn.net/20160316165412010)
编号4:手机上的应用视图;
编号5:该UI界面的的layou层次结构;
编号6:UI布局属性;
点击4界面上的控件,在编号5上显示该控件所在的布局,在编号6上显示该控件的属性信息;
6、通过上面步骤,可快速查找都控件id或其它String文字,接下来就是要通过这些属性信息快速查找到相关的布局和所在的类:
6.1复制控件ID,进入Android studio中,快捷键Ctrl + H(或者从工具栏edit—> find —> find in path),例如我点击快门视图,得到id为shutter_button,操作如下图:
![](http://img.blog.csdn.net/20160316173017852)
6.2如上图,填写id后,对id搜索进行设置后,点击preview查看搜索结果,如下图:
![](http://img.blog.csdn.net/20160316173249792)
如图,点击上面红框内代码,在下部文框内显示改代码所在文件,确定所要代码后双击代码后find跳转到该文件。
通过Ctrl + H可以快速在工程内找到调用和定义该String、控件的位置。
开发环境: Android studio ,keyMap为Eclipse
条件:源码可运行在手机上
1、编译源码并运行,在手机上对源码的功能使用,了解实现的所有功能;
2、浏览一遍源码的类名称和布局文件名称,见excel记录不理解的英文名并翻译;
3、查看manifest.xml文件,了解主要的Activity和其它server等,方便定位Activity,然后跳转之首页的Activity;
4、查看Activity中方法和注释,不懂的英文记得翻译后记录在excel中;
其实做完上述步骤,对源码的理解有时还会很乱,特别是代码量大的时候,下面是关于一些AS控件使用的技巧:
5、快速联系控件与控件名:
5.1手机连接电脑,并 在手机上打开应用到需要分析的界面;
5.2打开DDMS —> device —> 点击应用包名 —> 点击dump View图标,然后等待截屏打开相应界面(如下图到编号3):
5.3我打开的是相机的源码,截屏后的视图如下:
编号4:手机上的应用视图;
编号5:该UI界面的的layou层次结构;
编号6:UI布局属性;
点击4界面上的控件,在编号5上显示该控件所在的布局,在编号6上显示该控件的属性信息;
6、通过上面步骤,可快速查找都控件id或其它String文字,接下来就是要通过这些属性信息快速查找到相关的布局和所在的类:
6.1复制控件ID,进入Android studio中,快捷键Ctrl + H(或者从工具栏edit—> find —> find in path),例如我点击快门视图,得到id为shutter_button,操作如下图:
6.2如上图,填写id后,对id搜索进行设置后,点击preview查看搜索结果,如下图:
如图,点击上面红框内代码,在下部文框内显示改代码所在文件,确定所要代码后双击代码后find跳转到该文件。
通过Ctrl + H可以快速在工程内找到调用和定义该String、控件的位置。
相关文章推荐
- 数学四则运算
- UI入门 纯代码 第一节 UIWindow, UIView
- 铁汇套利的原理和崩溃实质
- 完美解决firefox无法访问12306
- Linux查看CPU和内存使用情况
- 【转】Java并发编程:Lock
- Starting MySQL. ERROR! The server quit without updating PID file
- 监听本地URL请求(NSURLProtocol)
- 实战 Lucene,第 1 部分: 初识 Lucene
- 初学嵌入式STM32基础下选哪款开发板适合学习
- 获取当前方法名,行号,类名,所在java文件第几行
- Java实现几种常见排序方法
- android FragmentpagerAdapter和FragmentStatePagerAdapter的区别
- sublime Text 3 做c编辑器
- android FragmentpagerAdapter和FragmentStatePagerAdapter的区别
- android FragmentpagerAdapter和FragmentStatePagerAdapter的区别
- IOS:Safari不兼容Javascript中的Date问题
- 软件工程概论个人作业02
- 详解 UIView 的 Tint Color 属性
- 评论接口中插入表情,后台不支持