
降低APK大小一直是過去一年的熱門話題。有很多原因可以解釋:無論您是建立數(shù)十億還是在昂貴且不可靠的網(wǎng)絡(luò)上覆蓋功能較弱的設(shè)備的用戶,或者您只是嘗試優(yōu)化您的應(yīng)用,每個人都可以享受較小的APK尺寸,更快的下載速度和更短的安裝時間倍。
與您的應(yīng)用大小相關(guān)的費用有所不同:
- 您上傳到Google Play的文件大?。ㄔ糀PK大?。?/li>
- 初始下載大小
- 設(shè)備安裝尺寸
- 更新下載大小
我們發(fā)布了很多指南,解釋了如何減少初始和設(shè)備上的APK大小,包括新的文檔頁面,我的I / O談話和文章,它們解釋了如何優(yōu)化資源,縮小代碼并定制APK到用戶的交付'使用Multi APK等技術(shù)的設(shè)備。
這一切都很棒,但用戶通常會在每個設(shè)備上安裝一次應(yīng)用程序,然后通過Play商店下載定期更新,這就是優(yōu)化應(yīng)用更新大小同樣重要的原因。
針對應(yīng)用更新尺寸進行優(yōu)化
關(guān)于使應(yīng)用程序更新更小的最好的部分是它自動發(fā)生了很多。由于Android Studio打包APK的方式有所改進,以使后續(xù)版本盡可能相似,Play商店可以計算出較小的增量更新。此外,在Play商店中引入新算法(例如最近的逐個文件修補)有助于將應(yīng)用更新大小平均降低65%。
要記住的重要一點是不要干擾Android Studio和Play中的機制。
如果您使用最新的(至少2.2+)Android Studio / Android Gradle插件來構(gòu)建您的發(fā)布APK,并且之后不進行修改,那么您應(yīng)該很高興。
不要使用自定義ZIP編碼器設(shè)置壓縮APK,也不要使用Zopfli重新壓縮您的APK,否則您將錯過File-by-File更新帶來的巨大節(jié)省。
跟蹤APK和更新大小
既然您知道為什么以及如何做正確的事情,是否有一種簡單的方法來跟蹤您的APK大小?您可以更改應(yīng)用程序,修復(fù)錯誤并引入新功能,在此過程中添加資產(chǎn)和庫,這是正常的。如何預(yù)測下次更新對用戶的影響程度?

我們以幾種方式表達這些信息。首先,這也是用戶會看到的內(nèi)容,Play Store 會在Android上的應(yīng)用程序列表頁面上顯示下載大小,這將成為已安裝應(yīng)用程序的用戶的更新大小。
APK補丁大小估算器
對于開發(fā)人員而言,在發(fā)布之前能夠看到該數(shù)字會更為理想,這就是為什么我們開源了一個名為APK patch size estimator的工具。
它是一個命令行工具,因此您可以將其集成到Continuous Integration服務(wù)器中并解析輸出以包含在報告中,或通過為其提供兩個這樣的APK來手動調(diào)用它:
python apk_patch_size_estimator.py --old-file old.apk --new-file new.apk
這是輸出的一個例子:
磁盤上的新APK大?。?8,271,850字節(jié)[17.4MB]
估計新安裝的下載大?。? 全新APK(gzip)大?。?6,339,603字節(jié)[15.6MB]
估計舊APK的更新下載大小,使用Bsdiff:
Bsdiff補?。╣zip)大小:2,989,691字節(jié)[2.85MB]
估計舊APK的更新下載大小,
使用逐個文件:
逐個文件修補程序(gzip)大小:1,912,751字節(jié)[1.82MB]
APK補丁大小估算器實現(xiàn)了Play商店使用的當前壓縮和增量算法,并且可以估算新安裝的初始APK下載大小(它與原始APK大小不同,因為Play商店可能會應(yīng)用額外的壓縮)和delta補丁下載大小。我們最近更新了該工具以支持新的File-by-File更新,因此您也可以對此進行估算。
為什么估計而不是確切數(shù)字?Play商店不斷發(fā)展,我們經(jīng)常測試可能為用戶保存數(shù)據(jù)的新壓縮方法。我們的目標是在完全推廣到生產(chǎn)后,使用任何新方法使APK補丁大小估算器保持最新。
順便提一下,值得一提的是,對于想要了解應(yīng)用程序的哪些部分在版本之間增長(或縮?。┑拈_發(fā)人員,還有一個交互式“比較”工具,作為Android Studio中APK Analyzer的一部分提供。

在Android Studio 3.0中,我們更新了此工具,以選擇性地顯示逐個文件的更新大小。

