android开发笔记之APK反编译(一)ClassyShark
来源:互联网 发布:魔力宝贝满档水龙数据 编辑:程序博客网 时间:2024/06/08 08:01
ClassyShark下载地址
下载地址
启动ClassyShark
java -jar ClassyShark.jar
启动如图:
使用说明
打开一个apk,如图:
可以看到,有三部分:manifest文件,classes.dex文件集和res资源文件。
查看class文件的源码
上图可以看出ClassyShark工具将类的相关方法和变量声明进行了结构调整,分为三部分显示fields,constructors,methods。结构会更清晰,但是也不难发现源码基本都是省略号(看来只能看类基本的组成而已- -)。另外有个小技巧,双击对应的变量对象可以快速跳转至该对象class文件。
查看res文件
查看res/anima/abc_popup_enter.xml文件
图形化查看整个apk的构成(这是此工具的一个非常有特色的功能)
将右边的目录栏tab切换成Methods count,如下图:
有时候我们可能只想了解别人的架构,相关组成部分的占比权重,上图能很清晰的表现出来。可以看出ApeAppLock.apk,android部门占了12941,com部分占用了2949.
我们再点击查看com部分的代码:
可以清楚的看出:
com部分,ape占用了1362,而在applock就占用了1336,其中有ui,fingerprint,receiver,service,provider,adapter等等。
使用总结
总的来说ClassyShark的使用非常便捷,只需一个命令行,然后打开对应的apk即可,而且显示的内容非常有条理,非常适合在对别人apk整体架构借鉴时使用。
Android Studio反编译使用
将APK拖入到Android Studio,我们就可以看到此APK的反编译的一些信息,将其列在这,是因为此方法与ClassyShark有非常好的对比性。
如图:
我们可以明显的看到,我们在ClassyShark工具中图形化显示各个源码的比例,也可以在AndroidStudio中非常方便的看到。并且,AndroidStudio中我们还可以非常方便的看到此APK的各个部分占用空间的比例。如ApeAppLock.apk中,dex占用了65.7%的空间,arsc文件占用了12.1%的空间,而res占用了19%的空间。
并且,我们可以非常方便的查看各个res资源占用的空间大小比例:
此对我们优化一个APK大小是特别的有用,为什么,因为许多APK的图片会占用大量的空间,而此界面可以清楚的列出各个分辨率的图片占用的空间比例。所以,我们优化图片时,直接优化占用空间多的分辨率,如(drawable-xhdpi-v4,drawable-xxhdpi-v4,drawable,drawable-xxxhdpi-v4,)。
参考资料:
1.Android ClassyShark vs ApkTool
http://blog.csdn.net/sp6645597/article/details/51301663
2.google/android-classyshark
https://github.com/google/android-classyshark/releases
3. jadx 反编译apk
http://blog.csdn.net/sp6645597/article/details/51319413
- android开发笔记之APK反编译(一)ClassyShark
- android开发笔记之反编译apk(一)
- Android开发之APK反编译
- android开发笔记之APK反编译(二) jadx
- Android apk分析利器--ClassyShark
- Android开发学习笔记:反编译APK文件
- android开发步步为营之9:反编译apk
- Android APK反编译笔记
- android之反编译apk
- Android之反编译APK
- Android 反编译(一)反编译apk
- android开发步步为营之110:android反编译apk
- Android笔记 apk的反编译
- Android学习笔记-APK反编译
- Android 开发系列:Apk反编译
- android的apk之反编译
- android的apk之反编译
- android的apk之反编译
- Python 数据类型转换
- 3.HotSpot虚拟机对象管理
- Spring Boot+Mybatis+Pagehelper分页
- VC++制作安装包
- web前端之滚动条事件
- android开发笔记之APK反编译(一)ClassyShark
- Qt Table 的表头合并
- caffe编译之make: * [.build_release/tools/convert_imageset.bin] Error 1
- PHP关联的html中if条件的判断,是否在里面(in_array),而不用遍历了
- Spring MVC实现远程调用并获取返回值
- JAVA中的线程安全与非线程安全
- TI CC2540单片机裸机低功耗 测试
- angularjs的介绍及特点
- Java本地的项目,怎么可以让别人通过外网访问-内网穿透