縮減免安裝應用程式的大小

警告:Google Play 免安裝應用程式將停止提供服務。2025 年 12 月起,您無法透過 Google Play 發布免安裝應用程式,且所有 Google Play 服務免安裝 API 都將停止運作。Play 不會再透過任何機制向使用者提供免安裝應用程式。

我們根據開發人員的意見,並持續投入資源改善 Google Play Instant 推出後的生態系統,做出這項變更。

如要持續促進使用人數成長,建議開發人員使用深層連結,將使用者導向標準版應用程式或遊戲,並在適當情況下將他們重新導向至特定路徑或功能。

「Google Play 免安裝」技術是以網頁連結做為媒介,提供豐富多元、全面整合的體驗方式。使用者可以在不下載應用程式的情況下體驗應用程式內容,有效提升參與度和使用體驗品質。不過,如要讓免安裝應用程式的載入速度與一般行動網頁一樣快,您必須建立架構完善且有效率的免安裝應用程式。免安裝應用程式的二進位檔越小,載入速度就越快,使用者體驗也越流暢。

本文將說明管理應用程式結構和二進位大小的最佳做法,確保免安裝應用程式體驗流暢無礙。您也可以運用這些做法,提升可安裝應用程式的成效。

重構為多個功能模組

將應用程式重構為多個功能模組,可大幅縮減應用程式的二進位檔大小。先從基本功能模組開始,然後將主題相關的工作流程擷取至專屬的功能模組。為每個功能模組指派起始活動和專屬網址,讓使用者順利完成模組的工作流程。

建立功能模組時,請盡可能縮小基礎功能模組。特別是需要存取依附程式庫的應用程式部分。如果只有一個功能模組使用特定程式庫,請在該功能模組中匯入程式庫,而不是在基本功能模組中匯入。請注意,如要發布特定功能模組的免安裝應用程式,該功能模組和基礎功能模組的大小必須小於 15 MB

最佳做法

重構應用程式時,請注意下列最佳做法:

兩種應用程式類型使用相同的程式碼集
您可以透過相同的模組化程式碼集建立已安裝的應用程式和免安裝應用程式,簡化應用程式的專案管理程序。
設計多個功能模組
即使應用程式目前只有一個工作流程,且只需要單一功能模組,還是建議您設計多個功能模組。這樣一來,您就能將現有模組加入應用程式,而不會影響原始功能模組的大小。
一開始請勿著重於功能模組大小限制
功能模組大小限制不適用於本機建構的二進位檔。您也可以透過內部測試群組發布免安裝應用程式,但功能模組大小不得超過 15 MB。只有 Alpha 版正式版測試群組會強制執行 15 MB 的限制。

更新應用程式資源

部分應用程式 (尤其是程式碼集歷史記錄較長的應用程式) 含有應用程式二進位檔不再使用的資源。尋找縮減應用程式模組大小的方法時,請考慮下列常見的不必要程式碼來源。

縮減圖片檔案大小

使用 WebP 檔案格式 (而非 PNG),可大幅縮減應用程式可繪項目總大小。Google Play 免安裝應用程式完全支援 WebP,包括透明度和無損壓縮,因此圖片品質不會改變。

如有可能,請移除使用其他 PNG 圖片的所有回溯相容性需求。如果必須使用 PNG 圖片,請將圖片放在用於建構及安裝應用程式的模組中。

移除未使用的語言

如果應用程式支援多種語言,請盡量減少本地化資源。如果您使用「應用程式相容性」程式庫 (例如 android.support.v7.appcompat),完成這個步驟就特別實用。這個程式庫包含多種語言的訊息,其中有些語言可能不支援您的應用程式。

如要瞭解詳情,請參閱「移除未使用的額外資源」,特別是未使用的語言。

移除多餘的檔案

您的應用程式可能不再使用您匯入專案的部分資源。為協助移除這些資源,Android Studio 針對這種特定情況提供 Lint 檢查。如要使用這項工具,請完成下列步驟:

  1. 按下 Ctrl+Alt+Shift+I 鍵 (在 Mac OS 上按下 Command+Alt+Shift+I 鍵)。
  2. 在隨即顯示的對話方塊中輸入 "unused resources"
  3. 選取「未使用的資源」選項,即可開始檢查資源用量。

如果應用程式中仍有大型資源,請考慮是否能從應用程式中取消封裝這些資源,並在使用者開始與應用程式互動後,將資源下載為獨立檔案。這種圖片載入延遲通常需要變更程式碼,但只要下載使用者明確要求的資源,就能大幅縮減即時應用程式的檔案大小。

移除未使用的程式庫

隨著應用程式的範圍擴大,可能會出現數量驚人的依附元件,尤其是下列類型的依附元件:

  • 原生程式庫:含有即時應用程式從未執行的原生程式碼。
  • 遞移依附元件:應用程式匯入的程式庫所依附的程式庫。

Android Studio 提供多種實用工具,可識別應用程式專案中的任何多餘依附元件:

外部程式庫

Android Studio 的「Project」檢視畫面包含「External Libraries」部分。

這個部分包含應用程式使用的所有程式庫,包括原生程式碼和所有遞移依附元件。在這個檢視畫面中,找出應用程式不需要的未使用或重複程式庫。

APK 分析工具

您可以使用 APK 分析工具比較不同版本,包括免安裝應用程式版本。

判斷應用程式不需要哪些程式庫後,請在 Gradle 建構檔案中新增類似下列的程式碼行,排除這些程式庫:

<feature_module>/build.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 的依附元件管理指南。

導入雲端資產提供服務

如要進一步縮減大小,可能需要透過雲端傳送資產