前言
Android studio 2.2版本后自帶有一個分析工具:APK Analyzer。這是一個專門分析apk的神器,主要作用如下:
- (重要)直觀的看到apk中各個文件的大小(比如DEX,resource等等)。我們可根據文件大小信息,減小apk的大??;
- (重要)學習大企業app的命名規范和目錄架構規范,還可以查看大公司app使用了什么技術和第三方框架;
- 了解DEX文件的組成;
- 快速查看APK的版本信息(例如androidmanifest.xml等也可以看到);
- 直接比較兩個APK的信息,有對比才有傷害;
如何使用APK Analyzer
使用APK Analyzer有如下三種方式:
第一種,將需要分析的apk拖拽到Android studio中即可;
第二種,若是你項目中已經build apk,那么使用project視圖。打開整體project—>app—>bulid—>outputs—>apk—>[XXX].apk,雙擊[XXX].apk即可。其實,只要你的apk在項目中,雙擊即可;
雙擊方式
- 第三種,點擊Android studio菜單欄—>build—>Analyze apk,然后選擇apk即可;
菜單欄選擇方式
APK Analyzer的具體分析
下面,我用最新的知乎apk(4.17.1)演示一下。
APK Analyzer分析頁面
首先,圖中第一個紅框的地方,顯示了整個apk的包名,以及版本名。版本名
[XXX]
其實對應的是androidmanifest中的android:versionName="[XXX]"
。圖中第二個紅框,有兩個size。Raw File Size表示原文件大小,Download Size表示經過Google play處理壓縮后的apk大小。分析apk中文件或文件夾的占有比例也是相對于Download Size而言。
圖中第三個紅框,是整個apk的文件結構。我們熟悉的res,AndroidManifest.xml,assets,lib等都在這里。而[XXX].dex可以看到整個項目的目錄框架。
classes.dex
第二個紅框標出,我們可以查看dex文件中總共有多少個類,類里面有多少個方法,引用了多少個方法。
第三個紅框可以看出,知乎apk使用了混淆,我們看不到真正的方法名了。
總結
上述只是講了APK Analyzer的使用,還有很多可以深入的地方等待你去挖掘。
- 比如查看自己開發的apk文件,哪部分占用的比例較大,是否可以減小apk的體積;
- 比如compare with功能可以簡單比較兩個apk的大小比例。驗證你優化后的apk和未優化的apk,哪部分size減少了,哪部份size反而增大了;
- 通過包名,或者說路徑名,可以看看大公司的框架都封裝了哪些新的技術,然后選擇性的加到自己公司或個人的項目中。
- 看到某個apk的某個效果很贊,可以通過APK Analyzer查看資源文件res,文件夾名稱等窺探該apk是否用了第三方框架展現等等;
- ...