只需輕觸網頁連結,「Google Play 免安裝」就能提供豐富的原生體驗。使用者不必先行安裝就能體驗應用程式,提升參與度和品質。不過,如果想讓免安裝應用程式載入速度就跟一般行動網頁一樣快,您必須建立結構良好且高效的免安裝應用程式。免安裝應用程式的二進位檔越小,就能越快載入,且使用者體驗也更流暢。
本文件說明管理應用程式結構和二進位檔大小的最佳做法,以提供流暢的免安裝應用程式體驗。您也可以套用相同做法,對可安裝應用程式帶來助益。
重構為多個功能模組
將應用程式重構為多個功能模組時,應用程式二進位檔大小獲得最大改善。從基本功能模組開始,然後將主題相關工作流程擷取至專屬的功能模組。為每個功能模組指派起始活動和專屬網址,讓使用者順利完成模組工作流程。
建立功能模組時,請盡可能縮小基本功能模組。請特別留意應用程式中需要存取依附元件程式庫的部分。如果只有一個功能模組使用指定的程式庫,請將其匯入功能模組本身,而非基本功能模組。請注意,如要針對特定功能模組發布免安裝應用程式,該功能模組和基本功能模組的「總」大小必須小於 15 MB。
最佳做法
重構應用程式時,請注意下列最佳做法:
- 針對這兩種應用程式類型使用相同的程式碼集
- 您可以使用相同的模組程式碼集,「同時」建立安裝版應用程式和免安裝應用程式,藉此簡化應用程式的專案管理流程。
- 設計多個功能模組
- 即使您的應用程式目前只有一個工作流程,且只需要一個功能模組,仍建議您設計多個功能模組。這樣一來,您就可以在不影響原始功能模組大小的情況下,將現有模組加入應用程式。
- 不要在一開始就聚焦於功能模組大小限制
- 功能模組大小限制不適用於本機建構的二進位檔。您也可以透過內部測試測試群組發布免安裝應用程式,強制限制功能模組大小 15 MB。只有「Alpha 版」和「正式版」測試群組會強制執行 15 MB 的限制。
更新應用程式資源
部分應用程式 (尤其是大型程式碼集記錄的應用程式) 包含應用程式二進位檔已不再使用的資源。在尋找縮減應用程式模組的方式時,請考慮下列非必要程式碼的常見來源。
縮減圖片檔案大小
您可以使用 WebP 檔案格式 (而非 PNG) 大幅縮減應用程式可繪項目的總大小。Google Play 免安裝功能提供 WebP 的完整支援,包括透明度和無損壓縮,因此圖片品質維持不變。
請盡可能移除使用其他 PNG 圖片所需的所有回溯相容性要求。如果必須使用 PNG 圖片,請將其放在用來建構及安裝應用程式的模組中。
移除不支援的語言
如果您的應用程式支援多種語言,請盡可能減少本地化資源。如果您使用「應用程式相容性」程式庫 (例如 android.support.v7.appcompat
),這個步驟就能派上用場。這個程式庫內含許多語言的訊息,其中有些應用程式可能不支援。
詳情請參閱如何移除未使用的額外資源,特別是未使用的語言。
移除額外檔案
應用程式可能不再使用已匯入專案的部分資源。為了協助移除這些資源,Android Studio 會對這個特定情況執行 Lint 檢查。如要使用這項工具,請完成下列步驟:
- 按下 Control + Alt + Shift + I 鍵 (在 Mac OS 上為 Command + Alt + Shift + I 鍵)。
- 在隨即顯示的對話方塊中,輸入
"unused resources"
。 - 選取「Unused resources」選項,啟動資源用量檢查程序。
如果應用程式中有任何大型資源,請考量是否該能在使用者開始與應用程式互動後,將其從應用程式解除封裝並下載為獨立檔案。這類圖片載入延遲做法通常需要變更程式碼,但只要下載使用者明確要求的資源,就能大幅縮減免安裝應用程式的檔案大小。
移除未使用的程式庫
隨著應用程式的範圍擴大,可能會面臨過多的依附元件,尤其是以下其中一種類型:
- 原生程式庫:包含免安裝應用程式一律不會執行的原生程式碼的程式庫。
- 遞移依附元件:應用程式匯入程式庫所依附的程式庫。
Android Studio 提供多種實用工具,可用於找出應用程式專案中任何不必要的依附元件:
- 外部程式庫
Android Studio 的「Project」檢視畫麵包含「External Libraries」部分。
本節包含應用程式使用的所有程式庫,包括原生程式碼和所有遞移依附元件。在這個檢視畫面中,找出未使用或製作應用程式不需要的程式庫。
- APK 分析工具
您可以使用 APK 分析工具比較不同版本,包括免安裝應用程式版本。
確定應用程式不需要哪些程式庫後,請在 Gradle 建構檔案中加入類似以下幾行,將程式庫排除:
Groovy
dependencies { implementation('some-important-but-large-library') { exclude group: 'com.example.imgtools', module: 'native' } }
Kotlin
dependencies { implementation('some-important-but-large-library') { exclude(group = "com.example.imgtools", module = "native") } }
如要進一步瞭解如何減少應用程式依附元件的總匯入大小,請參閱 Gradle 的依附元件管理指南。
導入雲端資產提供服務
如要進一步縮減大小,可能要依據雲端資產提供機制。