安卓中如何参考寻找和参考他人的代码(待完善和待修正)

1. api

    安卓官方文档中已经提供了很多demo,在使用未知的控件时,可以采用这种方式

2. 系统源码

    系统源码是最好的老师,通过一步步的点击,进入系统的源码.或者我们需要调用系统的某个应用的activity时,都可以直接翻看系统源码

    一般查看源码有以下的几种方式

1)  在自己的代码中直接ctrl+鼠标右键,点进去直接查看,这种方式适合于只是简单的查看系统在api中所描述的实现逻辑

2)   直接进去源码翻看,比较适合于对安卓工程文件相当熟悉的工程师,一般查看都是先从资源清单文件开始,系统源码比较有特点,英语稍微好一点,能够将自己想表达的意思直接搜索清单文件,比如说要打开系统的主页面launcher应用程序,那么路径是在.../packages/apps/launcher2,最好还是要非常熟悉安卓工程的构成,这样在翻阅的时候,你想搜索什么,定位会很清晰的

3)   新建工程,从系统的源码导入(还是要对安卓工程和安卓系统源码的组织结构有一定的了解,导入工程后一般会有错误的,但是这不是我们所关心的,我们不是在编译源码),通过搜索关键字,一般我们搜索的方式或者操作步骤如下:(通用搜索在eclipse中直接快捷键ctrl+H即可)

         i.     查看到系统的某个activity中的内容,这个东东就算用脚丫子想,也是在values/strings.xml中,就是是动态变化的一些值(除了数值),都是在这个里面(国际化嘛)

        ii.     通过查找到vlaues,那么就看到了对应的name,name的通常情况下,是在布局文件中引用的,也有的是在java代码中的(这是比较特殊的),那么直接搜索name

        iii.     安卓通用情况,那么这是看到后台就有values和layout文件下的文件,layout下的文件是我们关心的,打开layout下的这个文件,看到控件的id,再次搜索id

        iv.     搜索到id,打开对应的java文件就看到了,一路ctrl+K,定位到处理的逻辑

         v.     代码逻辑看懂后,复制粘贴,报错的很有可能是底层隐藏的方法,隐藏的方法,是可望而不可即的吗?非也,只不过使用的方式特殊一点而已,用反射不就搞定啦?

 

3. 参照他人的代码

1)   查看系统后台日志   

    一般在看到某个应用在调用系统的activity时,我们好奇他发送了怎么样的intent, logcat中会显示的,想实现这个目的,采用这种方式是比较简单的

2)   反编译

反编译是一种很好的方式,什么时候需要使用到反编译呢?

一般如下的几种场景使用到反编译

(1) 要参照其他应用的图片

(2) 要参照其他应用的布局

(3) 要参照其他应用的逻辑处理

针对以上的几个需求场景,我们的处理方式分别如下:

只是获取图片的处理:

图片在安卓应用中不是隐私的东西,要获取到的话,很简单,直接下载到其他应用的apk文件,即安装包,将后缀名修改为.zip即可,解压缩开,在res/drawable***的文件下,这就是对应的图片

参照其他应用的布局

        要参照布局,那么就需要借助工具了,不能简单的使用上面获取图片的处理方式,可以使用apktool这个工具,操作步骤如下:

    进入到apktool的目录下,打开控制台,输入如下的命令 apktool d 对应的apk全路径和文件名即可解压开,在apktool的文件中发现新多了一个文件夹,名字与apk的名字相同,这就成功了,可以查看布局文件了

参照其他应用的程序逻辑

    同样需要借助工具,dex2jar和gui

    操作步骤:

      将apk的文件后缀名修改为zip

      解压缩找到对应的dex文件

      将dex文件转变为jar文件就可以了,使用dex2jar的命令dex2jar classpath.dex  然后文件自动转换,生成的文件位于dex2jar的目录下

    将文件使用gui打开即可(这只是未加密的文件的处理方式,已经加密的,那么就需要我们学习学习smali语言了,才能分析文件)

 

posted @ 2014-09-14 21:08  Panda Pan  阅读(360)  评论(0编辑  收藏  举报