zoukankan      html  css  js  c++  java
  • 安卓中如何参考寻找和参考他人的代码(待完善和待修正)

    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语言了,才能分析文件)

  • 相关阅读:
    解决方案:ubuntu无法获得锁,无法管理目录
    ACM经典题目——校门外的树
    【动态规划】01背包问题(通俗易懂,超基础讲解)
    从编程实现角度学习 Faster R-CNN(附极简实现)
    git clone 时,出现‘fatal: HTTP request failed‘
    git clone出现 fatal: unable to access 'https://github.com/...'的解决办法(亲测有效)
    Qt类库的模块
    java 中的 池
    sql 语句
    httpClient 发送http请求
  • 原文地址:https://www.cnblogs.com/pandapan/p/3971720.html
Copyright © 2011-2022 走看看