APP開發實戰171-使用APK Analyzer分析APP
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。然後就會出現下圖所示的對話方塊,顯示兩個版本的檔案大小差異:
相關文章
- PhoneGap Hybrid APP 開發實戰(1):第一個 Android APKAPPAndroidAPK
- 實戰:使用 Flutter 仿開眼視訊AppFlutterAPP
- uni-app&H5&Android混合開發二 || 使用Android Studio打包應用APKAPPH5AndroidAPK
- 使用 Flutter 開發 macOS AppFlutterMacAPP
- 即拼商城APP開發(開發APP)APP
- 美容APP開發的功能需求分析APP
- Flutter混合App實戰FlutterAPP
- app實戰運用APP
- APP跨平臺開發技術分析APP
- 招聘類app開發的功能需求分析APP
- 混合開發實戰:App里拉起一個小程式(IOS篇)APPiOS
- 使用duxapp開發 React Native App 事半功倍UXAPPReact Native
- 如何開發APP:使用免費無程式碼製作APP工具APP
- Android解決The APK file app-debug.apk does not exist on disk.AndroidAPKAPP
- 民宿酒店類APP開發功能需求分析APP
- 分析海鮮商城app開發的功能需求APP
- 分析商城app開發的功能、模式、技術APP模式
- 佛家app開發APP
- Vue2.5去哪兒網App開發實戰(一) - 簡介VueAPP
- 《HTML5移動網站與App開發實戰》簡介HTML網站APP
- 教育APP開發_教育培訓APP開發解決方案APP
- 使用Kotlin高效地開發Android App(二)KotlinAndroidAPP
- 使用Kotlin高效地開發Android App(四)KotlinAndroidAPP
- 使用Kotlin高效地開發Android App(三)KotlinAndroidAPP
- 使用Kotlin高效地開發Android App(一)KotlinAndroidAPP
- user 版本如何安裝 app-uiautomator 和 app-uiautomator-test.apk 呢APPUIAPK
- 多個APP合併為一個APP開發的實現方案APP
- Hybrid App從概念到實戰APP
- Flutter Scheme 使用(瀏覽器開啟App,App內開啟另一個App)FlutterScheme瀏覽器APP
- 線上課堂APP開發的功能需求分析APP
- 手牽手,使用uni-app從零開發一款視訊小程式 (系列下 開發實戰篇)APP
- angular 版 IM 聊天室|仿微信 App 介面|angular 實戰開發AngularAPP
- Hybrid 混合App開發APP
- App 開發語言APP
- 得物App H5秒開優化實戰APPH5優化
- 使用Flutter開發一款電影APPFlutterAPP
- 開發一款APP需要多少錢?APP開發需要投入多少?APP
- 直播APP開發公司是如何開發一套完整直播APP?APP
- 推送開發實戰:APP如何實現跟隨使用者不同場景,實現不同的內容推薦APP