您上傳的APK需要符合Google Play的目標(biāo)API級別要求。新應(yīng)用和應(yīng)用更新(Wear OS除外)必須以Android 10(API級別29)或更高版本為目標(biāo)平臺。
自2021年8月起,新應(yīng)用需要:
使用Android App Bundle格式發(fā)布。
使用Play Asset Delivery或Play Feature Delivery提交下載大小超過150MB的資產(chǎn)或功能。對于新應(yīng)用,擴展文件(OBB)將不再受支持。
以API級別30(Android 11)或更高版本為目標(biāo)平臺,并針對行為變更進行調(diào)整。
從2021年11月開始,應(yīng)用更新必須以API級別30或更高版本為目標(biāo)平臺,并針對Android 11中的行為變更進行調(diào)整。未收到更新的現(xiàn)有應(yīng)用不會受到影響,用戶可以繼續(xù)從Play商店下載。
改用Android App Bundle發(fā)布方式也會影響使用舊版免安裝應(yīng)用ZIP格式的免安裝體驗。自2021年8月起,如果開發(fā)者要發(fā)布新的免安裝應(yīng)用或更新現(xiàn)有免安裝應(yīng)用,必須發(fā)布支持免安裝體驗的App Bundle。
為何要以較新的SDK為目標(biāo)平臺?
每個新的Android版本都會發(fā)生變更,帶來安全性和性能方面的重大改進,并提升Android的整體用戶體驗。部分變更只會影響通過targetSdkVersion清單屬性(也稱為目標(biāo)API級別)明確聲明支持這些變更的應(yīng)用。
將您的應(yīng)用配置為使用新近的API級別可確保用戶享受這些改進帶來的好處,同時您的應(yīng)用仍然可以在較低版本的Android上運行。支持最新的API級別還有助于讓您的應(yīng)用利用平臺的最新功能,為用戶提供愉悅的體驗。此外,從Android 10(API級別29)開始,如果應(yīng)用的目標(biāo)平臺為Android 5.1(API級別22)或更低版本,則用戶首次啟動應(yīng)用時會看到警告。
本文重點介紹了有關(guān)更新目標(biāo)API級別的重要須知,以便您滿足Google Play的要求。
注意:如果您的Gradle文件包含清單條目,您可以按照配置您的build中的說明,確認(rèn)或更改應(yīng)用的Gradle文件中當(dāng)前的targetSdkVersion值?;蛘?,您也可以按照<uses-sdk>清單元素文檔中的說明,使用清單文件中的android:targetSdkVersion屬性。
從Android 10(API級別29)遷移到Android 11(API級別30)
隱私權(quán)
強制執(zhí)行分區(qū)存儲:應(yīng)用應(yīng)使用分區(qū)存儲模式,將特定于應(yīng)用的文件、媒體文件以及其他類型的文件保存到專用位置,并通過這些位置訪問這些文件。
自動重置權(quán)限:如果用戶幾個月未與應(yīng)用互動,系統(tǒng)會自動重置應(yīng)用的敏感權(quán)限。此設(shè)置不會影響大多數(shù)應(yīng)用。如果您的應(yīng)用主要在后臺運行,無需用戶與之互動,您可以考慮請求用戶停用自動重置功能。
后臺位置信息訪問權(quán)限:針對前臺位置信息獲取權(quán)限和后臺位置信息獲取權(quán)限,應(yīng)用必須分開進行請求。用戶只能在應(yīng)用設(shè)置中授予后臺位置信息獲取權(quán)限,而不是通過運行時權(quán)限對話框授予該權(quán)限。
軟件包可見性:當(dāng)應(yīng)用查詢設(shè)備上已安裝應(yīng)用和服務(wù)的列表時,系統(tǒng)會過濾返回的列表。
如果您使用文字轉(zhuǎn)語音或語音識別服務(wù),則需在清單文件中為這些服務(wù)添加<queries>元素。
安全性
壓縮的resource.arsc文件不再受支持。
現(xiàn)在需要使用APK簽名方案v2。為實現(xiàn)向后兼容性,開發(fā)者還應(yīng)繼續(xù)使用APK簽名方案v1簽名。
限制非SDK接口。對于以API級別30為目標(biāo)平臺的應(yīng)用,建議不要使用非SDK接口,因為其中一些接口現(xiàn)已被屏蔽。如需查看已屏蔽的非SDK接口的完整列表,請參閱目前在Android 11中被屏蔽的非SDK接口。
如需查看Android 11(API級別30)所推出變更的詳盡列表,請參閱行為變更頁面。
從低于Android 10(API級別29)的版本遷移
翻新您的應(yīng)用
更新應(yīng)用的目標(biāo)API級別時,不妨考慮采用最新的平臺功能翻新應(yīng)用,為用戶提供愉悅的體驗。
考慮使用Beta版CameraX充分發(fā)揮相機功能。
使用Jetpack組件可以幫助您遵循最佳做法、省去編寫樣板代碼的工作并簡化復(fù)雜任務(wù),以便集中精力編寫重要的代碼。
使用Kotlin,通過更少的代碼更快地編寫出更優(yōu)秀的應(yīng)用。
確保您遵循隱私保護要求和最佳做法。
為您的應(yīng)用添加深色主題支持。
為您的應(yīng)用添加手勢導(dǎo)航支持。
將您的應(yīng)用從Google Cloud Messaging(GCM)遷移至最新版Firebase Cloud Messaging。
利用高級窗口管理。
支持更大的寬高比(大于16:9),以便利用硬件方面的最新發(fā)展成果。請確保您的應(yīng)用可調(diào)整大小以填充可用的屏幕空間。只在萬不得已時聲明最大寬高比。如需詳細(xì)了解最大寬高比,請參閱聲明受限屏幕支持。
添加多窗口支持,以幫助應(yīng)用提高工作效率以及管理多個顯示器。
如果出色的最小化應(yīng)用體驗?zāi)軌蛱嵘脩趔w驗,則添加對畫中畫功能的支持。
針對配備劉海屏的設(shè)備進行優(yōu)化。
請勿假定狀態(tài)欄高度,而應(yīng)使用WindowInsets和View.OnApplyWindowInsetsListener。如需了解這樣做的原因,請觀看此視頻。
請勿假定應(yīng)用會占滿整個窗口,而應(yīng)使用View.getLocationInWindow()來確認(rèn)它的位置,切勿使用View.getLocationOnScreen()。
處理MotionEvent時,請使用MotionEvent.getX()和MotionEvent.getY()(而非MotionEvent.getRawX()和MotionEvent.getRawY())。
檢查及更新您的SDK和庫
請確保您的第三方SDK依賴項支持API 29:部分SDK提供商會在清單中發(fā)布這項信息;而對于其他SDK提供商,則需要再進行調(diào)查。如果您使用的SDK不支持API 29,請與SDK提供商合作,優(yōu)先解決該問題。
另請注意,您的應(yīng)用或游戲的targetSdkVersion可能會限制對私有Android平臺庫的訪問;如需了解詳情,請參閱NDK應(yīng)用鏈接至平臺庫。
您還應(yīng)確認(rèn)正在使用的Android支持庫版本中存在哪些限制。與以往一樣,您必須確保Android支持庫的主要版本與您的應(yīng)用的compileSdkVersion兼容。
我們建議您選擇不高于支持庫主要版本的targetSdkVersion。您最好更新至最新的兼容支持庫,以便利用最新的兼容性功能和問題修復(fù)程序。
測試您的應(yīng)用
適當(dāng)更新應(yīng)用的API級別和功能后,您應(yīng)測試部分核心用例。下面僅列舉部分建議,旨在引導(dǎo)您進行測試。我們建議您針對以下方面進行測試:
您的應(yīng)用已編譯為API 29,且沒有出現(xiàn)錯誤或警告。
您的應(yīng)用對用戶拒絕權(quán)限請求的情況已有應(yīng)對策略,且會提示用戶授予權(quán)限。測試方法如下:
轉(zhuǎn)到應(yīng)用的“應(yīng)用信息”屏幕,然后停用所有權(quán)限。
打開應(yīng)用,確保不會出現(xiàn)崩潰問題。
執(zhí)行核心用例測試,并確保系統(tǒng)會再次提示用戶授予所需權(quán)限。
低電耗模式可呈現(xiàn)預(yù)期效果,且不會出現(xiàn)錯誤。
使用adb,讓測試設(shè)備在您的應(yīng)用正在運行時進入低電耗模式。
測試所有會觸發(fā)Firebase云消息傳遞消息的用例。
測試所有使用鬧鐘或作業(yè)的用例。
消除后臺服務(wù)的所有依賴項。
將您的應(yīng)用設(shè)為應(yīng)用待機模式
測試所有會觸發(fā)Firebase云消息傳遞消息的用例。
測試所有使用鬧鐘的用例。
處理拍攝的新照片/視頻
確認(rèn)您的應(yīng)用能正確處理受限的ACTION_NEW_PICTURE和ACTION_NEW_VIDEO廣播(即移動至JobScheduler作業(yè))。
確保所有依賴于此類事件的重大用例都能正常運行。
處理將文件共享給其他應(yīng)用的操作
測試所有將文件數(shù)據(jù)共享給任何其他應(yīng)用(甚至是同一開發(fā)者推出的其他應(yīng)用)的用例
測試內(nèi)容是否在其他應(yīng)用中可見而不會觸發(fā)崩潰。