1. 程式人生 > >Android apk 分析工具:APK Analyzer

Android apk 分析工具:APK Analyzer

前言

Android studio 2.2 版本後自帶有一個分析工具:APK Analyzer。這是一個專門分析 apk 的神器,主要作用如下:
1. (重要) 直觀的看到 apk 中各個檔案的大小 (比如 DEX,resource 等等)。我們可根據檔案大小資訊,減小 apk 的大小;
2. (重要) 學習大企業 app 的命名規範和目錄架構規範,還可以檢視大公司 app 使用了什麼技術和第三方框架;
3. 瞭解 DEX 檔案的組成;
4. 快速檢視 APK 的版本資訊(例如 androidmanifest.xml 等也可以看到);
5. 直接比較兩個 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分析頁面

  1. 首先,圖中第一個紅框的地方,顯示了整個apk的包名,以及版本名。版本名[XXX]其實對應的是androidmanifest中的android:versionName="[XXX]"

  2. 圖中第二個紅框,有兩個size。Raw File Size表示原檔案大小,Download Size表示經過Google play處理壓縮後的apk大小。分析apk中檔案或資料夾的佔有比例也是相對於Download Size而言。

  3. 圖中第三個紅框,是整個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是否用了第三方框架展現等等;

推薦