美文网首页
[转]结合HierarchyViewer和APK文件反编译获得A

[转]结合HierarchyViewer和APK文件反编译获得A

作者: 思考的犀牛 | 来源:发表于2015-12-25 15:40 被阅读235次

    背景:最近在使用Robotium进行Android自动化测试。遇到了一个问题:我需要获得一个View的id(int型数值)。此前我在http://maider.blog.sohu.com/255448342.htmlhttp://maider.blog.sohu.com/255485243.html两篇文章中讲述了如何打开手机上的View Server来使用HierarchyViewer。HierarchyViewer对查看UI组件固然有帮助,但要想获取一个元素的id还是不行的。请看下图:


    我在HierarchyViewer中查看“发布”这个View,HierarchyViewer显示了一个@414a54c8id/flipper_head_action。注意:@后加一串16进制数并不是这个view的id,而只是一个对我们人类没有任何意义的指针值。

    但是我们有这个元素的id名flipper_head_action。我们需要按图索骥,按这个id名找到对应的数值。

    解决步骤:
    1.下载反编译器dex2jar,和一个java源代码查看器jd-gui
    下载地址:
    https://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.13.zip&can=2&q=
    https://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q=
    2.解压第一步下载的东西,放在适当文件夹。
    3.将要反编译的apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到第2步解压得到的dex2jar.bat所在文件夹。
    4.将命令行定位到dex2jar.bat所在文件夹,运行命令:
    dex2jar.bat classes.dex
    在同文件夹下生成:
    classes_dex2jar.jar
    5.打开第二步解压得到的jd-gui.exe,File-》Open File打开第四步生成的classes_dex2jar.jar
    6.现在在jd-gui中的左侧导航中,定位到APP所在的包吧!(这个包名,你在HierarchyViewer里能看得到)。例图:


    7.滚动jd-gui的左侧导航栏至较下方,可以看到反编译出的R文件。而其中有一个R$id就是我们要找的文件。



    8.现在,在R$id文件中,搜索本文开始得到的元素id名字吧(flipper_head_action),我们得到了这个元素的id的int值为2131427472。大功告成!


    本篇文章参考了:
    http://blog.csdn.net/sunboy_2050/article/details/6727581

    相关文章

      网友评论

          本文标题:[转]结合HierarchyViewer和APK文件反编译获得A

          本文链接:https://www.haomeiwen.com/subject/jttbhttx.html