如要準備發布應用程式,必須設定、建構及測試應用程式的發布版本。設定工作包含基本的程式碼清理和修改工作,這些工作有助於最佳化應用程式。建構程序與偵錯建構程序相似,可透過 JDK 和 Android SDK 工具完成。
測試工作為最後一道檢查程序,可確保應用程式能夠在實際環境下正常運作。Firebase 透過 Firebase Test Lab 提供大量實體和虛擬測試裝置,可用於改善應用程式品質。
完成應用程式的發布準備工作後,您會有一份已簽署的 APK 檔案,可直接提供給使用者,或透過 Google Play 等應用程式市集發布。
本文總結了您在準備發布應用程式之前需要執行的主要工作。本頁說明的工作適用於所有 Android 應用程式,不論應用程式是以何種方式發布或發行給使用者都一樣。如果您要透過 Google Play 發布應用程式,請參閱「安心發布產品」一文。
注意:在執行本頁所列工作之前,請確保您的應用程式符合功能、效能以及穩定性方面的所有發布條件。
![顯示準備程序如何配合開發程序](https://developer.android.com/static/images/publishing/publishing_overview_prep.png?authuser=0000&hl=zh-tw)
圖 1:發布前的準備是必要的開發工作,也是發布程序的第一步。
發布準備工作
如要向使用者發布應用程式,您需要先建立可發布的套件,供使用者在他們的 Android 裝置上安裝並執行。可發布的套件包含與偵錯 APK 檔案相同的元件,例如經過編譯的原始碼、資源以及資訊清單檔案等等,而且兩者是以相同的建構工具建構而成。不過與偵錯 APK 檔案不同的是,可發布的 APK 檔是以您自己的憑證簽署,並且已使用 zipalign
工具進行最佳化。
![準備發布應用程式應執行的五項工作](https://developer.android.com/static/images/publishing/publishing_preparing.png?authuser=0000&hl=zh-tw)
圖 2:準備發布應用程式有五項主要工作。
如果您是透過 Android Studio 建構應用程式,則通常可以順利執行簽署和最佳化工作。舉例來說,您可以搭配使用 Android Studio 和 Gradle 建構檔案,同時完成應用程式的編譯、簽署和最佳化作業。透過指令列建構應用程式時,您也可以設定 Gradle 建構檔案執行相同工作。如要進一步瞭解如何使用 Gradle 建構檔案,請參閱「建構設定」一文。
一般來說,準備要發布的應用程式需要執行五項主要工作,如圖 2 所示。每個主要工作可能會包含一個或多個較細的工作,視應用程式的發布方式而定。例如,如果要透過 Google Play 發布應用程式,在設定要發布的應用程式時,您可能會想在資訊清單中加入特殊的篩選規則。或者,為了符合 Google Play 發布指南中的規定,您在蒐集發布相關資料時可能需要準備螢幕擷圖以及建立宣傳文字。
您通常會在確實完成應用程式的偵錯和測試程序後,執行圖 2 所列的工作。Android SDK 包含多項工具,協助您對 Android 應用程式進行測試及偵錯。詳情請參閱「為應用程式進行偵錯」和「測試應用程式」這兩篇文章。
蒐集相關資料及資源
如要準備發布應用程式,您必須蒐集一些相關資料。這些資料至少應該包含用來簽署應用程式的加密編譯金鑰以及應用程式圖示。您可能也會想要提供一份《使用者授權協議》。
加密編譯金鑰
Android 要求所有 APK 都必須經過數位憑證簽署,才能安裝到裝置上或進行更新。如果是透過 Google Play 商店發布,凡是 2021 年 8 月以後建立的應用程式都必須使用 Play 應用程式簽署功能。但是將 AAB 上傳至 Play 管理中心時,您仍然必須使用自己的開發人員憑證進行簽署。舊版應用程式仍可自行簽署,但無論是使用 Play 應用程式簽署還是自行簽署,都必須先簽署應用程式才能上傳。
如要瞭解憑證相關規定,請參閱「簽署應用程式」一文。
重要事項:應用程式必須以加密編譯金鑰簽署,此金鑰的有效期限須在 2033 年 10 月 22 日以後。
如果應用程式要存取某項服務,或者使用的第三方資料庫需要以您私密金鑰為基礎的金鑰,您也需要取得其他發布金鑰。
應用程式圖示
應用程式圖示能幫助使用者在裝置主畫面和「啟動器」視窗中識別您的應用程式。應用程式圖示也會出現在「管理應用程式」、「我的下載」以及其他位置。另外,發布服務平台 (如 Google Play) 也會向使用者顯示您的應用程式圖示。請務必提供應用程式圖示,並確保其符合我們的圖示建議規範。
注意:如果您要在 Google Play 發布應用程式,必須製作一個高解析度的圖示版本。詳情請參閱「新增預覽資源以展示您的應用程式」一文。
使用者授權協議
建議您為應用程式準備一份《使用者授權協議》(EULA)。《使用者授權協議》能保護您個人、機構以及智慧財產,我們建議您為應用程式準備一份這樣的協議。
其他相關資料
您可能也要準備用來介紹應用程式的宣傳及行銷相關資料。舉例來說,如果要在 Google Play 發布應用程式,就需要準備一些宣傳文字以及製作應用程式的螢幕截圖。詳情請參閱「新增預覽資源以展示您的應用程式」一文。
設定要發布的應用程式
相關資料蒐集完畢後,即可開始設定即將發布的應用程式。本節總結了我們建議您在發布應用程式前進行的設定調整,包括原始碼、資源檔案以及應用程式資訊清單。
儘管本節所列的大多數內容都是選擇性的設定調整,但這些都是編寫程式的好做法,因此我們建議您依循執行。在某些情況下,您可能已於開發過程中完成這些設定調整。
選擇合適的應用程式 ID
請務必選擇能在應用程式效期內全程適用的應用程式 ID。向使用者發布應用程式後,您就無法再變更應用程式 ID。您可使用模組層級 build.gradle
或 build.gradle.kts
檔案中的 applicationId
屬性進行設定。詳情請參閱「設定應用程式 ID」相關說明。
關閉偵錯功能
如要設定 APK 是否可進行偵錯,請使用 Groovy 的debuggable
旗標或 Kotlin 指令碼的 isDebuggable
旗標:
Kotlin
android { ... buildTypes { release { isDebuggable = false ... } debug { isDebuggable = true ... } } ... }
Groovy
android { ... buildTypes { release { debuggable false ... } debug { debuggable true ... } } ... }
啟用及設定應用程式縮減功能
您可以為發布子版本啟用縮減功能,讓系統自動執行以下多數最佳化作業。例如,您可以新增用來移除記錄陳述式的 ProGuard 規則,而縮減器則會識別並移除未使用的程式碼和資源。此外,縮減器也可以將類別和變數名稱替換成較短的名稱,進一步縮減 DEX 大小。
關閉記錄功能
建構要發布的應用程式前,請先停用記錄功能。只要在來源檔案中移除對 Log
方法的呼叫,即可停用記錄功能。您也必須移除所有在專案中建立的記錄檔或是靜態測試檔。
此外,請移除所有已加至程式碼的 Debug
追蹤呼叫,例如 startMethodTracing()
和 stopMethodTracing()
方法呼叫。
重要事項:由於偵錯功能可讓使用者透過 Chrome 開發人員工具插入指令碼及擷取內容,因此如果您使用 WebView
顯示付費內容或是使用 JavaScript 介面,請務必停用應用程式的偵錯功能。如要停用偵錯功能,請使用 WebView.setWebContentsDebuggingEnabled()
方法。
整理專案目錄
請清理您的專案,確保專案符合「專案總覽」一文所述的目錄結構。 如果專案中殘留有未歸位的檔案或孤立檔案,應用程式便無法進行編譯,且會導致應用程式運作異常。您至少需執行下列清理工作:
- 檢閱
cpp/
、lib/
和src/
目錄的內容。cpp/
目錄只能包含與 Android NDK 相關聯的來源檔案,例如 C 或 C++ 來源檔案、標頭檔案或 makefile。lib/
目錄只能包含第三方資料庫檔案或私人資料庫檔案,包括預先建立的共有和靜態資料庫。src/
目錄只能包含應用程式的來源檔案 (Java、Kotlin 和 AIDL 檔案)。src/
目錄不得含有任何 JAR 檔案。 - 找出專案中應用程式未使用的私人或專屬資料檔案,並將其移除。例如,在專案中的
res/
目錄找出不再使用的舊有可繪項目檔案、版面配置檔案和數值檔案,並將其刪除。 - 在
lib/
目錄中找出應用程式不再使用的測試資料庫,並將其移除。 - 檢閱
assets/
和res/raw/
目錄的內容,找出需要在發布應用程式前更新或移除的原始資產檔案和靜態檔案。
檢視及更新資訊清單和 Gradle 版本設定
確認下列資訊清單和建構檔案項目的設定正確無誤:
<uses-permission>
元素僅指定與應用程式相關且必要的權限。
android:icon
和android:label
屬性您必須指定這些屬性的值,這些屬性位於
<application>
元素中。versionCode
和versionName
屬性建議您指定這些屬性的值,這些屬性位於應用程式模組層級
build.gradle
或build.gradle.kts
檔案中。詳情請參閱「管理應用程式版本」一文。
如果要在 Google Play 發布應用程式,可以設定其他建構檔案元素。例如,位於應用程式模組層級 build.gradle
或 build.gradle.kts
檔案中的 minSdk
和 targetSdk
屬性。如要進一步瞭解上述設定以及其他 Google Play 設定,請參閱「Google Play 篩選器」一文。
解決相容性問題
Android 提供了多項工具和技術,讓您的應用程式與多種裝置相容。建議您執行下列動作,讓您的應用程式可供最多使用者使用:
- 新增對多螢幕設定的支援功能。
- 請確保您符合支援多螢幕的最佳做法。透過支援多螢幕設定,您建立的應用程式可在 Android 支援的任何尺寸螢幕上正常運作,並且提供了良好的視覺效果。
- 針對大型螢幕最佳化應用程式。
- 您可以執行最佳化作業,讓應用程式在平板電腦和折疊式裝置等具有大螢幕的裝置上順利運作。舉例來說,清單詳細資料版面配置可以提高在大螢幕上的可用性。
- 建議您使用 Jetpack 程式庫。
- Jetpack 包含一系列程式庫,可協助開發人員遵循最佳做法、減少樣板程式碼,以及編寫在各種 Android 版本和裝置中運作方式都能維持一致的程式碼。
更新伺服器和服務的網址
如果應用程式會存取遠端伺服器或服務,請務必使用該伺服器或服務的實際執行網址或路徑,而非測試的網址或路徑。
為 Google Play 實作授權
如果您是透過 Google Play 發布付費應用程式,建議您新增對 Google Play 授權的支援功能。藉由授權,您可以根據目前使用者的購買狀態控管應用程式的存取權。即使您是透過 Google Play 發布應用程式,還是可以選擇是否要使用 Google Play 授權。
如要進一步瞭解 Google Play 授權服務以及如何在應用程式中使用,請參閱「應用程式授權」一文。
建構要發布的應用程式
應用程式設定完成後,您可以將其建構為已簽署、已最佳化並可發布的 APK 檔。JDK 含有簽署 APK 檔的工具 (Keytool 和 Jarsigner);Android SDK 則包含編譯及最佳化 APK 檔的工具。如果您使用的是 Android Studio,或是透過指令列使用 Gradle 建構系統,則可自動執行整個建構程序。如要進一步瞭解如何設定 Gradle 建構作業,請參閱「設定建構變數」一文。
如果您使用持續整合系統,可以設定自動執行發布程序的工作。這不限於建構要發布的 APK 或 AAB,您也可以設定將各種建構構件自動上傳至 Play 管理中心。
使用 Android Studio 建構應用程式
您可以使用與 Android Studio 整合的 Gradle 建構系統,建構已使用您的私密金鑰簽署且完成最佳化的可發布 APK 檔案。如要瞭解如何透過 Android Studio 設定及執行建構作業,請參閱「建構並執行應用程式」一文。
建構程序會假設您具備可用來簽署應用程式的憑證和私密金鑰。如果您沒有適用的憑證和私密金鑰,Android Studio 可以協助您產生一組。如要進一步瞭解簽署程序,請參閱「簽署應用程式」一文。
外部伺服器和資源的準備工作
如果您的應用程式需要使用遠端伺服器,請確保該伺服器安全無虞且設定為可實際上線使用,如果應用程式要實作應用程式內結帳功能,並且會在遠端伺服器上執行簽名驗證步驟,這一點特別重要。
另外,如果應用程式會從遠端伺服器或即時服務 (例如內容資訊提供) 擷取內容,請確保您提供的是最新內容且該內容可實際上線使用。
測試要發布的應用程式
測試應用程式的發布版本,可確保應用程式在實際裝置和網路條件下正常運作。建議您至少在一部手機尺寸和一部平板電腦尺寸的裝置上測試應用程式,確認使用者介面元素大小正確無誤,且應用程式和電池效能都在可接受範圍內。Firebase Test Lab 也可用於在多種不同的裝置和 Android 作業系統版本中進行測試。
開始測試時,請參閱「核心應用程式品質」一文。當您測試完成,且對應用程式發布版本的正常運作情況感到滿意,就可以向使用者發布應用程式。詳情請參閱「向使用者發布應用程式」一文。