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

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

show_EfERX5cG8YiV31frL_f33wszf5Jtx6Eu_bAO_zqh-P8.jpg

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

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

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

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

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

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

最佳做法

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

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

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

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

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

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

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

更新應(yīng)用資源

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

縮減圖片的文件大小

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

注意:此規(guī)則的一個(gè)例外是應(yīng)用的啟動(dòng)器圖標(biāo):該圖標(biāo)必須使用PNG格式。不過(guò),此規(guī)則對(duì)應(yīng)用總大小的影響極小,因?yàn)榇蠖鄶?shù)項(xiàng)目都將啟動(dòng)器圖標(biāo)存儲(chǔ)在mipmap目錄中。

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

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

移除未使用的語(yǔ)言

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

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

移除多余文件

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

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

在顯示的對(duì)話框中,輸入"unused resources"。

選擇Unused resources選項(xiàng),啟動(dòng)資源使用情況檢查流程。

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

移除未使用的庫(kù)

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

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

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

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

外部庫(kù)

Android Studio的Project視圖包含一個(gè)External Libraries部分。

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

APK分析器

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

在確定您的應(yīng)用不需要的庫(kù)之后,請(qǐng)?jiān)贕radle構(gòu)建文件中添加如下所示的代碼行來(lái)排除它們:

<feature_module&gt;/build.gradle

dependencies{

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

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

}

}

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

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

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

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