Google Play:縮減免安裝應(yīng)用的大小

來源: Google Developers
作者:Google Developers
時間:2020-12-09
16721
Google Play免安裝應(yīng)用可以提供豐富的原生體驗,只要點按網(wǎng)頁鏈接即可使用。用戶無需事先安裝即可體驗應(yīng)用,提高了互動水平和質(zhì)量。不過,為了讓免安裝應(yīng)用能夠像普通移動網(wǎng)頁一樣快速加載,您需要創(chuàng)建一個結(jié)構(gòu)良好、運行高效的免安裝應(yīng)用。

show_EfERX5cG8YiV31frL_f33wszf5Jtx6Eu_bAO_zqh-P8.jpg

Google Play免安裝應(yīng)用可以提供豐富的原生體驗,只要點按網(wǎng)頁鏈接即可使用。用戶無需事先安裝即可體驗應(yīng)用,提高了互動水平和質(zhì)量。不過,為了讓免安裝應(yīng)用能夠像普通移動網(wǎng)頁一樣快速加載,您需要創(chuàng)建一個結(jié)構(gòu)良好、運行高效的免安裝應(yīng)用。免安裝應(yīng)用的二進(jìn)制文件越小,加載速度越快,用戶體驗越流暢。

本文檔介紹了在管理應(yīng)用結(jié)構(gòu)和二進(jìn)制文件大小時應(yīng)遵循的最佳做法,以幫助您實現(xiàn)流暢的免安裝應(yīng)用體驗。您也可以采用相同的做法來改進(jìn)您的安裝式應(yīng)用。

重構(gòu)為多個功能模塊

將應(yīng)用重構(gòu)為多個功能模塊,可以最大程度地縮減應(yīng)用二進(jìn)制文件的大小。先從基礎(chǔ)功能模塊開始,然后將主題相關(guān)的工作流提取到各自的功能模塊中。為每個功能模塊分配一個啟動Activity和唯一網(wǎng)址,以便用戶能夠成功完成該模塊的工作流。

創(chuàng)建功能模塊時,應(yīng)盡可能縮減基礎(chǔ)功能模塊的大小,尤其要注意應(yīng)用中需要訪問依賴庫的部分。如果某個特定的庫只供一個功能模塊使用,應(yīng)將該庫導(dǎo)入功能模塊本身,而非基礎(chǔ)功能模塊。請注意,要為特定功能模塊發(fā)布免安裝應(yīng)用,該功能模塊和基礎(chǔ)功能模塊的總大小必須小于15 MB。

注意:如果您的免安裝應(yīng)用包含的方法數(shù)目超過DEX限制(65536個方法),您仍可啟用Multidex并發(fā)布免安裝體驗,前提是應(yīng)用滿足總大小上限。

最佳做法

在重構(gòu)您的應(yīng)用時,請牢記以下最佳做法:

兩種應(yīng)用類型均使用相同的代碼庫

使用相同的模塊化代碼庫創(chuàng)建安裝式應(yīng)用和免安裝應(yīng)用,可以簡化應(yīng)用的項目管理流程。

采用多個功能模塊的設(shè)計

即使您的應(yīng)用目前只有一個工作流且只需要一個功能模塊,也最好采用多個功能模塊設(shè)計。這樣一來,在應(yīng)用中添加現(xiàn)有模塊就不會影響原始功能模塊的大小。

一開始不要關(guān)注功能模塊大小限制

功能模塊大小限制不適用于本地構(gòu)建的二進(jìn)制文件。您也可以通過內(nèi)部測試軌道發(fā)布免安裝應(yīng)用,該軌道會對功能模塊大小實行15 MB的限制。只有Alpha和正式版軌道會實行15 MB的限制。

更新應(yīng)用資源

某些應(yīng)用(尤其是代碼庫歷史較長的應(yīng)用)包含應(yīng)用二進(jìn)制文件不再使用的資源。要設(shè)法縮小應(yīng)用模塊,可考慮以下常見的多余代碼來源。

縮減圖片的文件大小

您可以使用WebP文件格式代替PNG格式,從而大幅縮減應(yīng)用的可繪制對象的總大小。Google Play免安裝體驗提供完整的WebP支持,包括透明度和無損壓縮,因此圖片質(zhì)量會保持不變。

注意:此規(guī)則的一個例外是應(yīng)用的啟動器圖標(biāo):該圖標(biāo)必須使用PNG格式。不過,此規(guī)則對應(yīng)用總大小的影響極小,因為大多數(shù)項目都將啟動器圖標(biāo)存儲在mipmap目錄中。

如果可能,請移除對使用其他PNG圖片的所有向后兼容性要求。如果您必須使用PNG圖片,請將它們放在用于構(gòu)建和安裝應(yīng)用的模塊中。

注意:將應(yīng)用的圖片轉(zhuǎn)換為矢量可繪制對象可以節(jié)省更多空間。不過,不同于從PNG轉(zhuǎn)換到WebP,您需要將應(yīng)用代碼更改為使用矢量可繪制對象。

移除未使用的語言

如果您的應(yīng)用支持多種語言,請盡可能減少本地化資源的數(shù)量。如果您使用“app compat”庫(例如android.support.v7.appcompat),這一步就特別有用。此庫包含多種語言的消息,其中一些可能不受您的應(yīng)用支持。

要了解詳情,請查看如何移除未使用的備用資源(尤其是未使用的語言)。

移除多余文件

您的應(yīng)用可能不再使用已導(dǎo)入到項目中的部分資源。為幫助移除這些資源,Android Studio針對這種特定情況提供了Lint檢查。要使用該工具,請完成以下步驟:

按Control+Alt+Shift+I(在Mac OS上按Command+Alt+Shift+I)。

在顯示的對話框中,輸入"unused resources"。

選擇Unused resources選項,啟動資源使用情況檢查流程。

如果應(yīng)用中仍存在大型資源,請考慮是否可以從應(yīng)用軟件包中移走這些資源,并在用戶開始與應(yīng)用互動之后將其作為獨立文件下載下來。這種圖片加載延遲通常需要更改代碼,但由于這種方式只會下載用戶明確請求的資源,因此可以大幅縮減免安裝應(yīng)用的文件大小。

移除未使用的庫

隨著應(yīng)用范圍的擴大,其采用的依賴項數(shù)量可能會非常驚人,特別是以下類型之一:

原生庫:包含免安裝應(yīng)用從不運行的原生代碼的庫。

傳遞依賴項:應(yīng)用中已導(dǎo)入的庫所依賴的庫。

Android Studio提供了幾個有用的工具,用于識別應(yīng)用項目中的任何無關(guān)依賴項:

外部庫

Android Studio的Project視圖包含一個External Libraries部分。

此部分包含您的應(yīng)用使用的所有庫,包括原生代碼和所有傳遞依賴項。在此視圖中,查找應(yīng)用不需要的未使用或重復(fù)的庫。

APK分析器

您可以使用APK分析器工具比較不同的build,包括免安裝應(yīng)用build。

在確定您的應(yīng)用不需要的庫之后,請在Gradle構(gòu)建文件中添加如下所示的代碼行來排除它們:

<feature_module&gt;/build.gradle

dependencies{

implementation('some-important-but-large-library'){

exclude group:'com.example.imgtools',module:'native'

}

}

有關(guān)縮減應(yīng)用依賴項的總導(dǎo)入大小的詳情,請參閱Gradle的依賴項管理指南。

實現(xiàn)資源云端分發(fā)

如果您需要進(jìn)一步縮減應(yīng)用大小,可能需要利用資源的云端分發(fā)。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Google Developers,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家