符合 Google Play 的目標 API 級別規定

您上傳的 APK 必須符合 Google Play 的鎖定 API 級別規定。新應用程式和應用程式更新必須鎖定 Android 10(API 級別 29)或更高版本;而 Wear OS 應用程式則必須鎖定 API 級別 28 或更高級別。

自 2021 年 8 月起,新應用程式必須:

  • 使用 Android App Bundle 格式發布。
  • 使用 Play Asset DeliveryPlay Feature Delivery 傳送下載大小超過 150 MB 的素材資源或功能。系統將不再支援新應用程式使用擴充檔案 (OBB)。
  • 請鎖定 API 級別 30 (Android 11) 或更高級別,並針對行為變更進行調整;至於 Wear OS 應用程式則必須繼續鎖定 API 級別 28 或更高級別。

自 2021 年 11 月 1 日起,應用程式更新必須鎖定 API 級別 30 或更高級別,並根據 Android 11 針對行為變更進行調整。未收到更新的現有應用程式不會受到影響,仍可繼續透過 Play 商店下載。Wear OS 應用程式必須持續鎖定 API 級別 28 或更高級別。

若改爲使用 Android App Bundle 傳輸,也會影響使用舊版免安裝應用程式 ZIP 格式的免安裝體驗。自 2021 年 8 月起,新的免安裝體驗和現有免安裝體驗的更新都必須發布免安裝即用的應用程式套件

爲何要鎖定較新的 SDK?

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

當您設定讓應用程式支援最新的 API 級別,就能讓使用者享受到這些提升的效益,同時可繼續讓您的應用程式在較舊版本的 Android 上正常運作。鎖定最新的 API 級別也有助於讓您的應用程式充分發揮平台的最新功能,讓使用者用得更加愉快。此外,從 Android 10(API 級別 29)開始,如果應用程式以 Android 5.1(API 級別 22)或更低版本為目標,使用者在首次啟動應用程式時會看到警告

這份文件特別強調了您在更新目標 API 級別以滿足 Google Play 規定時的重要事項。

注意:如果您的 Gradle 檔案含有資訊清單項目,您可以依照設定您的版本中所述,確認或變更應用程式 Gradle 檔案中目前的 targetSdkVersion 值。或者您也可以依照 <uses-sdk> 資訊清單元件說明文件中的指示,使用資訊清單檔案中的 android:targetSdkVersion 屬性。

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

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

從 Android 10 以下版本(API 級別 29)移轉

請選擇要自哪一個 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)

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

翻新您的應用程式

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

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

請確認您的第三方 SDK 依附元件支援 API 29:部分 SDK 提供者會在資訊清單中發布這項資訊,其他則必須再進一步研究。如果您使用的是不支援 API 29 的 SDK,請與 SDK 提供者合作,優先處理解決這個問題。

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

另外請確認您目前使用的 Android 支援資料庫版本中有哪些限制。一如既往,您必須確認 Android 支援資料庫主要版本和應用程式 compileSdkVersion 之間的相容性。

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

測試應用程式

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

  • 您的應用程式已編譯為 API 29,且沒有出現錯誤或警告。
  • 您的應用程式對使用者拒絕權限要求的情況已有所因應,且會要求使用者提供權限。方法如下:
    • 前往您應用程式的「應用程式資訊」畫面,然後停用所有權限。
    • 開啟應用程式,確認不會發生當機狀況。
    • 執行核心用途測試,並確認系統會再次要求提供必要權限。

  • 「休眠」模式可呈現預期結果,且不會發生錯誤。
    • 使用 adb,讓執行中的應用程式進入「休眠」模式。
      • 測試所有會觸發 Firebase 雲端通訊訊息的用途。
      • 測試所有使用鬧鐘或工作的用途。
      • 清除背景服務的所有依附元件。
    • 將您的應用程式設為「應用程式待命」模式
      • 測試所有會觸發 Firebase 雲端通訊訊息的用途。
      • 測試所有使用鬧鐘的用途。

  • 處理拍攝的新相片/影片
    • 檢查您的應用程式是否正確處理受限的 ACTION_NEW_PICTUREACTION_NEW_VIDEO 廣播(也就是移至 JobScheduler 作業)。
    • 確認所有依賴這些事件的重大用途都能正常運作。
  • 處理和其他應用程式共用檔案的作業
    • 測試所有和其他應用程式共用檔案資料的用途(甚至是由相同開發人員開發的其他應用程式)
    • 測試其他應用程式是否能看到內容而不會導致當機。

其他資訊

在 Google Play 管理中心選擇接收電子郵件,以便接收我們傳送給您的重大 Android 及 Google Play 最新資訊與公告,其中包含我們每個月的合作夥伴電子報。