APP開發實戰171-使用APK Analyzer分析APP

xjbclz發表於2017-05-14

27.1.4 使用APK Analyzer分析APP

27.1.4.1 APK Analyzer簡介

Android Studio自帶了一個APK分析工具:APK Analyzer,可以使用它檢視編譯後的APK檔案的組成,可用於解決APP中的DEX檔案和資原始檔問題,也有助於減少APK的所佔的儲存空間。

使用APK Analyzer,開發人員可以:

    檢視APK中包含的檔案的絕對和相對大小(相對大小指的是該檔案佔整個APK大小的百分比)

    檢視DEX檔案的組成

    檢視檔案的最終版本(如AndroidManifest.xml檔案)

    比較兩個APK中包含的檔案大小

    有三種方式啟動APK Analyzer:

    直接把APK拖到Android Studio的編輯視窗

    切換工程到Project檢視,然後雙擊build/output/apks/路徑下的APK檔案

    選擇Build->Analyze APK選單,然後選擇要分析的APK

注意:Build APK的時候,如果開啟了Instant Run選項,則不能使用APK Analyzer對生成的APK進行分析。(APK中如包含instant-run.zip,則是開啟了Instant Run選項生成的APK)

27.1.4.2 檢視檔案和大小資訊

APK檔案是ZIP格式的壓縮檔案,APK Analyzer把APK中的每個檔案或資料夾作為一個實體,選中一個APK後,APK Analyzer會按樹形結構顯示APK裡的檔案和資料夾,如下所示:

   Raw File Size:APK解壓後的其中的實體大小

    DownloadSize:實體被Google Play壓縮後的大小

    %of Total Download Size:每個實體的Download Size所佔的總Download Size的百分比。

27.1.4.3 檢視AndroidManifest.xml

如果工程中包含了多個AndroidManifest.xml檔案或包含的庫中有manifest檔案,在編譯成APK的時候,這些manifest檔案會被合併成一個檔案。這個manifest檔案是在APK中是一個二進位制檔案,但使用APK Analyzer中,能夠以XML檔案的形式檢視檔案內容,可以使開發者瞭解在編譯的過程中,發生了哪些變化。如可以看到庫檔案中的AndroidManifest.xml檔案是怎樣被合併到最終的AndroidManifest.xml檔案中的,而且如果AndroidManifest.xml檔案中有錯,在APK Analyzer介面的右上角會顯示提示圖示。如下所示:

27.1.4.4 檢視程式碼和資源實體

    使用APK Analyzer還可以檢視程式碼和資原始檔,點選res資料夾中的每個檔案,在視窗的下方會顯示檔案的具體內容,包括圖片,如下所示:

APK Analyzer也能顯示文字和二進位制檔案的內容,如顯示resources.arsc

中的字串資源內容:

27.1.4.5 檢視DEX檔案

    APKAnalyzer可以檢視DEX檔案的資訊,能看到類、包、總的引用和宣告個數,這些資訊能夠幫助開發人員決定是否使用multi-dex特性、或者移除依賴使得滿足64K方法數限制。

如下圖所示,每個包、類、方法都列有Defined Method和Referenced Method。Referenced Method列是DEX檔案中引用的全部方法,它包含了定義的方法、依賴的library、定義在標準Java和Android包中的方法。Defined Method列只包含了定義在DEX檔案中方法,因此它是Referenced Method方法的子集。

注意:當引入一個依賴時,在依賴中定義的方法會包含在Defined Method和Referenced Method中。

27.1.4.6 比較APK檔案

    APKAnalyzer也能對兩個APK檔案進行比較,這有助於開發人員瞭解當前版本和之前版本相比,APK中的檔案大小有什麼變化。

在APK Analyzer中匯入一個APK,然後在APKAnalyzer視窗的右上角點選CompareWith,選擇另一個版本的APK,點選OK。然後就會出現下圖所示的對話方塊,顯示兩個版本的檔案大小差異:


相關文章