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
- Hybrid App開發實戰APP
- iphone app開發實戰很重要:《iPhone App開發實戰手冊》讀後感iPhoneAPP
- APP開發實戰119-APP程式碼優化APP優化
- 實戰:使用 Flutter 仿開眼視訊AppFlutterAPP
- Appium iOS 測試指令碼開發實戰APPiOS指令碼
- APP開發實戰172-統計APP啟動時間的方法APP
- AI開發實戰1-App Inventor的編譯AIAPP編譯
- 直播類 APP 專案開發實戰(原理篇)APP
- 使用duxapp開發 React Native App 事半功倍UXAPPReact Native
- 使用 Flutter 開發 macOS AppFlutterMacAPP
- APP開發實戰170-ABI管理和SO檔案的使用簡介APP
- 美容APP開發的功能需求分析APP
- 即拼商城APP開發(開發APP)APP
- 多端開發之uniapp開發appAPP
- Flutter混合App實戰FlutterAPP
- 混合開發實戰:App里拉起一個小程式(IOS篇)APPiOS
- APP開發實戰66-功能級別的BaseActivity設計APP
- APP跨平臺開發技術分析APP
- 分析海鮮商城app開發的功能需求APP
- 招聘類app開發的功能需求分析APP
- uni-app&H5&Android混合開發二 || 使用Android Studio打包應用APKAPPH5AndroidAPK
- APP開發實戰174-Android7.0的螢幕縮放功能對APP的影響APPAndroid
- 全面超越Appium,使用Airtest超快速開發App爬蟲APPAI爬蟲
- 使用uniapp開發APP時的除錯/安卓打包等APP除錯安卓
- App資料分析之App使用者留存率分析APP
- angular 版 IM 聊天室|仿微信 App 介面|angular 實戰開發AngularAPP
- Vue2.5去哪兒網App開發實戰(一) - 簡介VueAPP
- 《HTML5移動網站與App開發實戰》簡介HTML網站APP
- APP開發實戰173-ActionBar資原始檔的生成工具APP
- 商城dapp系統開發技術分析丨商城dapp開發案例及原始碼APP原始碼
- DAPP開發流程 | DAPP智慧合約開發APP
- 線上課堂APP開發的功能需求分析APP
- 民宿酒店類APP開發功能需求分析APP
- 分析商城app開發的功能、模式、技術APP模式
- 分析:Redux的電視APP戰略ReduxAPP
- 安卓實用小技巧:將App提取為Apk檔案安卓APPAPK
- 佛家app開發APP