降低APK大小一直是過去一年的熱門話題。有很多原因可以解釋:無論您是建立數十億還是在昂貴且不可靠的網路上覆蓋功能較弱的裝置的使用者,或者您只是嘗試優化您的應用,每個人都可以享受較小的APK尺寸,更快的下載速度和更短的安裝時間倍。
與您的應用大小相關的費用有所不同:
- 您上傳到Google Play的檔案大小(原始APK大小)
- 初始下載大小
- 裝置安裝尺寸
- 更新下載大小
我們釋出了很多指南,解釋瞭如何減少初始和裝置上的APK大小,包括新的文件頁面,我的I / O談話和文章,它們解釋瞭如何優化資源,縮小程式碼並定製APK到使用者的交付'使用Multi APK等技術的裝置。
這一切都很棒,但使用者通常會在每個裝置上安裝一次應用程式,然後通過Play商店下載定期更新,這就是優化應用更新大小同樣重要的原因。
針對應用更新尺寸進行優化
關於使應用程式更新更小的最好的部分是它自動發生了很多。由於Android Studio打包APK的方式有所改進,以使後續版本儘可能相似,Play商店可以計算出較小的增量更新。此外,在Play商店中引入新演算法(例如最近的逐個檔案修補)有助於將應用更新大小平均降低65%。
要記住的重要一點是不要干擾Android Studio和Play中的機制。
如果您使用最新的(至少2.2+)Android Studio / Android Gradle外掛來構建您的釋出APK,並且之後不進行修改,那麼您應該很高興。
不要使用自定義ZIP編碼器設定壓縮APK,也不要使用Zopfli重新壓縮您的APK,否則您將錯過File-by-File更新帶來的巨大節省。
跟蹤APK和更新大小
既然您知道為什麼以及如何做正確的事情,是否有一種簡單的方法來跟蹤您的APK大小?您可以更改應用程式,修復錯誤並引入新功能,在此過程中新增資產和庫,這是正常的。如何預測下次更新對使用者的影響程度?
我們以幾種方式表達這些資訊。首先,這也是使用者會看到的內容,Play Store 會在Android上的應用程式列表頁面上顯示下載大小,這將成為已安裝應用程式的使用者的更新大小。
APK補丁大小估算器
對於開發人員而言,在釋出之前能夠看到該數字會更為理想,這就是為什麼我們開源了一個名為APK patch size estimator的工具。
它是一個命令列工具,因此您可以將其整合到Continuous Integration伺服器中並解析輸出以包含在報告中,或通過為其提供兩個這樣的APK來手動呼叫它:
python apk_patch_size_estimator.py --old-file old.apk --new-file new.apk
複製程式碼
這是輸出的一個例子:
磁碟上的新APK大小:18,271,850位元組[17.4MB]
估計新安裝的下載大小:
全新APK(gzip)大小:16,339,603位元組[15.6MB]
估計舊APK的更新下載大小,使用Bsdiff:
Bsdiff補丁(gzip)大小:2,989,691位元組[2.85MB]
估計舊APK的更新下載大小,
使用逐個檔案:
逐個檔案修補程式(gzip)大小:1,912,751位元組[1.82MB]
複製程式碼
APK補丁大小估算器實現了Play商店使用的當前壓縮和增量演算法,並且可以估算新安裝的初始APK下載大小(它與原始APK大小不同,因為Play商店可能會應用額外的壓縮)和delta補丁下載大小。我們最近更新了該工具以支援新的File-by-File更新,因此您也可以對此進行估算。
為什麼估計而不是確切數字?Play商店不斷髮展,我們經常測試可能為使用者儲存資料的新壓縮方法。我們的目標是在完全推廣到生產後,使用任何新方法使APK補丁大小估算器保持最新。
順便提一下,值得一提的是,對於想要了解應用程式的哪些部分在版本之間增長(或縮小)的開發人員,還有一個互動式“比較”工具,作為Android Studio中APK Analyzer的一部分提供。
在Android Studio 3.0中,我們更新了此工具,以選擇性地顯示逐個檔案的更新大小。