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