如何使用APK 分析器分析你的APK
文章推薦指數: 80 %
APK 分析器是Android Studio 自帶的一個APK 分析工具,你可以使用它分析APK 的組成詳情。
APK 分析器在我們開發當中最常見的使用場景是定位APK 組成 ...
MdEditor
如何使用APK分析器分析你的APK
語言:CN/TW/HK
時間 2020-07-2920:15:27
Rickon
主題:
AndroidStudio
APK分析器是AndroidStudio自帶的一個APK分析工具,你可以使用它分析APK的組成詳情。
APK分析器在我們開發當中最常見的使用場景是定位APK組成情況從而減小APK的大小。
除此之外,還可以使用它減少除錯應用的DEX檔案和資源相關問題所用的時間。
下面結合我的使用實踐介紹一下APK分析器的功能和使用方法。
一行配置導致APK變大7倍
前不久,我開發新專案藍芽音樂的過程中,編譯APK完成後突然發現只有一個介面的藍芽音樂APK包竟然有9M。
嚇得我直接開啟build/output/apks/,雙擊APK,開啟APK分析器介面如下。
我發現異常檔案classes2.dex和classes3.dex,可以看到dex檔案下全都是AndroidSDK的內容,WTF?為什麼這些內容會被打包進APK?莫非我build.gradle配置有問題?於是我又仔細檢查了一下build.gradle內容,果然發現了罪魁禍首。
我在已經將framework.jar加入僅編譯的情況下,沒有刪除開頭的這一句配置,導致framework.jar包被打包進APK。
我熟練地刪除這一行,然後迅速進行了sync、CleanProject、BuildAPK這一連環操作。
稍等一會,會看到AndroidStudio貼心的提醒。
點選analyze,我看到了APK終於回到了正常大小:1.3M!
介紹一下APK的這幾個部分:
classes.dex:Java檔案編譯生成的可執行檔案,用於在Dalvik虛擬機器上執行。
res資料夾:資原始檔
resources.arsc:Android編譯後生成的產物,主要是用來建立資源對映關係
AndroidManifest.xml:資源清單檔案
META-INF:簡單說就是一個配置檔案
檢視檔案和大小資訊
在上面的圖中,可以看到:APK分析器會顯示每個實體的原始檔案大小和下載檔案大小值,如圖1所示。
RawFileSize表示實體在磁碟上未經壓縮時的大小,而DownloadSize則表示實體由GooglePlay提供時的壓縮後大小的估計值。
%ofTotalDownloadSize表示實體佔APK總下載大小的百分比。
我的APK並沒有經過GooglePlay壓縮,所以兩個SIZE看起來差不多大。
開啟res/drawable你能看到每個圖片資源佔據的大小,如果你發現有些圖尺寸太大,則可以考慮對其進行優化:比如將png資源換成SVG向量圖或者webp。
檢視DEX檔案
DEX檔案檢視器中提供了類、軟體包、總引用和宣告計數,這有助於決定是否使用MultiDex或如何移除依賴項以避免超出64KDEX限制。
所謂64KDEX限制大致介紹一下,就是單個DEX檔案可被引用的方法總數被限制為65536,如果超過這個數,就會無法編譯。
DefinedMethods和ReferencedMethods列中列出了DEX檔案中每個軟體包、類和方法的相關計數。
ReferencedMethods列會統計DEX檔案引用的所有方法。
這通常包括程式碼和依賴項庫中定義的方法,以及在程式碼使用的標準Java和Android軟體包中定義的方法-這些方法計入每個DEX檔案中的64k方法限制。
DefinedMethods列僅統計在某一個DEX檔案中定義的方法,所以此數字是ReferencedMethods的子集。
請注意,如果將某個依賴項打包在APK中,這兩個方法計數都會加上在該依賴項中定義的方法。
比較兩個APK
這個功能可以讓你比較直觀的看到某個APK變大或者變小了,從而方便進行進一步的優化。
選擇上圖中右上角的CompareWithpreviousAPK
可以看到,我這次實踐中apk的減小完全來自dex的縮小。
總結
APK分析器可以幫助你完成以下操作:
檢視APK中的檔案(如DEX和Android資原始檔)的絕對大小和相對大小。
瞭解DEX檔案的組成。
檢視APK中的檔案(如AndroidManifest.xml檔案)。
對兩個APK進行並排比較。
參考資料:
developer.android.com/studio/buil…
medium.com/androiddeve…
「其他文章」
如何使用APK分析器分析你的APK
「AndroidStudio」
Flutter開發技巧:AndroidStudio快速生成Dart檔案
AndroidStudio實現學生資訊管理系統,基礎入門專案
如何基於ZEGOSDK實現Android一對一音影片聊天應用
藉助MaterialYou動態配色豐富您的應用
歡迎體驗|Android13開發者預覽版2
okhttp檔案上傳失敗,居然是AndroidStudio背鍋?太難了~
超簡單整合HMSMLKit實現最大臉微笑抓拍
androidstudio程式碼爆紅
HMSCore挑戰賽故事:鞋、街景、手辦、玩具,原來這些都可以3D建模
macJava多版本切換和AndroidStudio新版必須支援Java11
延伸文章資訊
- 1如何使用APK 分析器分析你的APK - 掘金
APK 分析器是Android Studio 自带的一个APK 分析工具,你可以使用它分析APK 的组成详情。APK 分析器在我们开发当中最常见的使用场景是定位APK 组成 ...
- 2Android 逆向之旅:静态分析技术来破解Apk - 开发者头条
下面就来看看我们如何通过静态分析来破解apk. 第一、静态分析的流程. 1、使用apktool来反编译apk. 在这个过程中,我们 ...
- 3有什么apk分析工具? - 知乎
GDA (国内第一款交互式反编译器),最轻便简洁快速的android分析工具, 不需要安装,也不需要Java环境,直接拖拉apk文件就可以分析,绝对是最快速的apk分析工具,可以 ...
- 4ApkToolPlus 是一个apk 逆向分析工具(a apk analysis tools)。
ApkToolPlus 是一个apk 逆向分析工具(a apk analysis tools)。. Contribute to linchaolong/ApkToolPlus developme...
- 5APK 文件分析 - 简书
APK 文件分析. 概述. 我们通过Android studio APK Analyze 可以展开一个APK文件. image. META-INF; res. anim; color; draw...