符合 Google Play's 目標 API 級別規定

您上傳的 APK 必須符合 Google Play 的目標 API 級別規定

以下規定自 2023 年 8 月 31 日起生效:

  • 新應用程式必須指定 Android 13 (API 級別 33) 以上版本為目標;Wear OS 應用程式不在此限,只須指定 Android 11 (API 級別 30) 與 Android 13 (API 級別 33) 之間的版本 (含首尾)。

  • 應用程式更新必須指定 Android 13 以上版本為目標,並依據 Android 13 的行為變更進行調整;Wear OS 應用程式則不在此限,只須指定 Android 11 為目標。

「永久性的私人應用程式」無須符合目標 API 級別規定。這類應用程式的定義如下:僅內部發行,只有特定機構的使用者能存取的應用程式。

為何要指定較新的 SDK?

每個新的 Android 版本都會推出變更,可提升安全性和效能,並改善 Android 使用者體驗。部分變更僅適用於透過 targetSdkVersion 資訊清單屬性 (又稱為目標 API 級別) 明確宣告支援的應用程式。

將應用程式的目標級別設為最新的 API 級別,可確保使用者享有這些改善帶來的好處,同時您的應用程式仍能在較舊版本的 Android 上執行。指定最新的 API 級別也有助於應用程式利用平台的最新功能,讓使用者用得開心。此外,自 Android 10 (API 級別 29) 起,如果應用程式指定 Android 5.1 (API 級別 22) 以下版本,使用者會在首次啟動應用程式時看到警告

本文件特別介紹更新目標 API 級別以滿足 Google Play 規定時,必須注意的重要事項。請根據您要遷移至哪個版本,參閱下列各節中的操作說明。

從 Android 12 (API 級別 31) 遷移至 Android 13 (API 級別 33)

如要將應用程式改為指定 Android 13,請參考行為變更清單進行更新。

從 Android 11 (API 級別 30) 遷移至 Android 12 (API 級別 31)

安全性和權限

使用者體驗

  • 自訂通知:含有自訂內容檢視畫面的通知將不再使用整個通知區域,系統會改為套用標準範本。這個範本可確保自訂通知與所有狀態下的其他通知採用相同的裝飾。這個行為與 Notification.DecoratedCustomViewStyle 的行為幾乎相同。
  • Android 應用程式連結驗證異動:使用 Android 應用程式連結驗證功能時,請確認您的意圖篩選器包含「BROWSABLE」類別,並支援 HTTPS 配置。

效能

  • 前景服務啟動限制:如果應用程式指定 Android 12 以上版本,當應用程式在背景執行時就無法啟動前景服務 (少數特殊情況除外)。如果應用程式嘗試在背景執行時啟動前景服務,就會發生例外狀況 (少數特殊情況除外)。

    在應用程式於背景執行時,建議您使用 WorkManager 安排及啟動加急作業。如要完成使用者要求且具時效性的操作,請在確切鬧鐘中啟動前景服務。

  • 通知彈跳床限制:使用者輕觸通知時,某些應用程式會啟動應用程式元件來回應使用者查看並互動的活動。這個應用程式元件稱為通知彈跳床。

    應用程式不得透過做為通知彈跳床的服務或廣播接收器啟動活動。使用者輕觸通知中的通知或動作按鈕後,應用程式就無法在服務或廣播接收器中呼叫 startActivity()

請查看這篇文章,瞭解會影響指定 Android 12 (API 級別 31) 的應用程式有哪些異動。

從 Android 11 以下版本 (API 級別 30) 遷移

請選取您要從哪一個 Android 版本遷移:

移轉至 Android 5 (API 級別 21)

請依據版本查看下方對應的「行為變更」網頁,以確認您的應用程式已將這些版本推出的變更納入考量:

請按照下一節的說明繼續操作。

移轉至 Android 6 (API 級別 23)

以下注意事項適用於鎖定 Android 6.0 及更高版本平台的應用程式:

  • 執行階段權限

    • 只能在執行階段中授予危險權限。您的 UI 操作流程必須提供授予這些權限的預設用途。

    • 請盡可能讓應用程式準備好處理權限要求遭拒的情況。舉例來說,如果使用者拒絕存取裝置 GPS 的請求,請確保您的應用程式能以其他方式繼續執行。

如需 Android 6.0 (API 級別 23) 推出變更的詳盡清單,請參閱該平台版本的行為變更網頁。

請按照下一節的說明繼續操作。

移轉至 Android 7 (API 級別 24)

以下注意事項適用於鎖定 Android 7.0 及更高的平台版本的應用程式:

  • 打盹和應用程式待命

    請參閱「針對打盹和應用程式待命進行最佳化」一文 (其中包含在多個平台版本推出的漸進式變更內容),根據當中所述行為設計應用程式。

    裝置處於打盹和應用程式待命模式時,系統的行為如下:

    • 限制網路存取權
    • 延後鬧鐘、同步處理作業及工作
    • 限制 GPS 和 Wi-Fi 掃描
    • 限制一般優先順序 Firebase 雲端通訊訊息。
  • 權限變更

    • 系統限制存取應用程式的不公開目錄。
    • 在應用程式以外顯示 file:// URI 會觸發 FileUriExposedException。如果必須在在應用程式以外分享檔案,請執行 FileProvider
  • 系統禁止連結至非 NDK 程式庫。

如需 Android 7.0 (API 級別 24) 推出變更的詳盡清單,請參閱該平台版本的行為變更網頁。

請按照下一節的說明繼續操作。

移轉至 Android 8 (API 級別 26)

以下注意事項適用於鎖定 Android 8.0 及更高版本平台的應用程式:

如需 Android 8.0 (API 級別 26) 推出變更的詳盡清單,請參閱該平台版本的行為變更網頁。

從 Android 8 (API 26) 遷移至 Android 9 (API 28)

如需 Android 9.0 (API 級別 28) 推出變更的詳盡清單,請參閱行為變更

從 Android 9 (API 級別 28) 遷移至 Android 10 (API 級別 29)

從 Android 10 (API 級別 29) 遷移至 Android 11 (API 級別 30)

如需 Android 11 (API 級別 30) 推出變更的詳盡清單,請參閱「行為變更」頁面。

請按照上一節的操作說明繼續更新至 API 31。

翻新應用程式

在為應用程式更新到目標 API 級別時,請考慮透過最新平台功能更新應用程式,讓使用者享有愉快的使用體驗。

查看並更新您的 SDK 和程式庫

請確認第三方 SDK 依附元件支援 API 31:有些 SDK 供應商會在資訊清單中發布這項資訊,否則需要另外調查。如果您使用的 SDK 不支援 API 31,請與 SDK 供應商合作,優先解決這個問題。

另請注意,應用程式或遊戲的 targetSdkVersion 可能會限制對不公開 Android 平台程式庫的存取權,詳情請參閱「連結至平台程式庫的 NDK 應用程式」。

此外,您也應確認您目前使用的 Android 支援資料庫版本中可能存在的所有限制。一如以往,您必須確保 Android 支援資料庫主要版本與應用程式的 compileSdkVersion 之間具有相容性。

建議您不要選擇小於或等於支援資料庫主要版本的 targetSdkVersion。您最好更新至最新的相容支援資料庫,以便使用最新的相容性功能和錯誤修正。

測試應用程式

正確更新應用程式的 API 級別和功能後,請測試部分核心用途。以下僅列舉部分建議,以引導您進行測試。我們建議您測試以下項目:

  • 您的應用程式已編譯為 API 29,且沒有出現錯誤或警告。
  • 您的應用程式對使用者拒絕權限要求的情況已有應對策略,且會要求使用者提供權限。方法如下:

    • 前往應用程式的「應用程式資訊」畫面,停用所有權限。
    • 開啟應用程式,並確認不會發生當機情形。
      • 執行核心用途測試,並確認系統會再次要求提供必要權限。
  • 「打盹」模式可呈現預期結果,且不會發生錯誤。

    • 使用 ADB,在應用程式執行期間將測試裝置放入「打盹」模式。
      • 測試所有會觸發 Firebase 雲端通訊訊息的用途。
      • 測試所有使用鬧鐘或工作的用途。
      • 清除背景服務的所有依附元件。
    • 將應用程式設為「應用程式待命」模式
      • 測試所有會觸發 Firebase 雲端通訊訊息的用途。
      • 測試所有使用鬧鐘的用途。
  • 處理拍攝的新相片 / 影片

  • 處理與其他應用程式分享檔案的用途 - 測試所有與其他應用程式共用檔案資料的用途 (包括同一開發人員的其他應用程式)

    • 測試其他應用程式可以看到內容且不會觸發當機情形。

其他資訊

在 Google Play 管理中心訂閱電子郵件,即可接收 Android 和 Google Play 的重要最新消息和公告,包括我們的每月合作夥伴電子報。