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

「Google Play 免安裝」提供豐富且原生體驗,只要輕觸一下網站就能體驗 連結。使用者不需安裝即可體驗應用程式, 可以提升參與度和參與度加快免安裝應用程式的載入速度 與一般行動網頁相同,但您必須建立結構完善的 最有效率的免安裝應用程式免安裝應用程式的二進位檔越小,速度就越快 並讓使用者體驗更順暢。

本文件將說明應用程式結構和 二進位檔大小,藉此提供流暢的免安裝應用程式體驗。您也可以 安裝您的應用程式,進而從中獲益

重構為多個功能模組

在重構 多個功能模組從基本功能著手 模組, 然後將主題相關工作流程擷取到各自的功能模組中。 為每個功能模組指派起始活動和專屬網址,讓使用者 才能順利完成模組的工作流程

建立功能模組時,請盡量讓基本功能模組 請特別留意應用程式的哪些部分 必須存取相依程式庫如果只有一個功能模組使用 將程式庫匯入功能模組本身,而非基礎程式庫 功能模組。提醒您,如要發布 特定功能模組的總計大小 模組和基本功能模組必須小於 15 MB

最佳做法

重構應用程式時,請將下列最佳做法謹記在心:

兩種應用程式類型使用相同的程式碼集
如果想簡化應用程式的專案管理流程 模組程式碼集,用於建立安裝版應用程式和免安裝應用程式。
針對多個功能模組進行設計
即使應用程式只有一個工作流程且只需要一項功能 模組,但我們仍建議您設計多個功能模組。 這樣一來,您就可以在應用程式中加入現有模組,而不會影響 原始功能模組的大小
請勿一開始將重心放在功能模組的大小限制
功能模組的大小限制不適用於本機建構的二進位檔。你可以 並透過內部測試群組測試群組發布免安裝應用程式,強制在測試群組中發布 功能模組的大小限制為 15 MB。只有 alpha正式版群組會強制執行 15 MB 的限制。

更新應用程式資源

有些應用程式 (尤其是程式碼集歷史記錄較長) 包含 資源。尋找合適的方法 縮減應用程式模組的大小,請考慮下列不必要的常見來源 再也不是件繁重乏味的工作

縮減圖片檔案大小

如要大幅縮減應用程式可繪項目的總大小,您可以使用 WebP 而不是 PNG 檔案Google Play 免安裝技術提供完善的支援 ,包括透明度和無損壓縮,所以影像品質 保持不變

盡可能移除使用其他 PNG 檔案的所有回溯相容性需求 所以映像檔較小如果您必須使用 PNG 圖片,請將圖片放在用於 建構及安裝應用程式

移除未使用的語言

如果您的應用程式支援多種語言,請盡量減少本地化資源數量, 。如果您使用「應用程式」 compat程式庫,例如 android.support.v7.appcompat。 這個程式庫內含多種語言的訊息,其中部分語言可能為應用程式 不支援。

如要瞭解詳情,請參閱移除未使用的替代項目 資源 未使用的語言。

移除多餘的檔案

您的應用程式可能不會再使用您匯入的部分資源 。為了協助移除這些資源,Android Studio 提供 Lint 檢查功能 有別於此情況如要使用這項工具,請完成下列步驟:

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

如果應用程式仍保留任何大型資源,請思考該配額是否可 並將這些元件從應用程式中取消封裝,並在隨後下載為獨立檔案 使用者開始與您的應用程式互動這類圖片會延後載入 通常需要修改程式碼,但這麼做可以大幅降低 限制應用程式的檔案大小 (例如下載使用者明確擁有的資源) 要求。

移除未使用的程式庫

隨著應用程式涵蓋範圍擴增,可能會產生意想不到的依附元件 尤其是以下其中一種類型:

  • 原生程式庫:包含即時程式碼的程式庫 應用程式就無法執行
  • 遞移依附元件:應用程式匯入的程式庫 程式庫的依附元件

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 的依附元件指南 管理

導入雲端資產提供服務

如果需要進一步縮減大小,可能需要透過雲端提供資產服務。