應用 targetSdk 版本升級指導(二)

電信終端產業協會(TAF)發佈的《移動應用軟件高API等級預置與分發自律公約》要求,截止到2019年5月1日所有新發布的應用API必須為26或更高,2019年8月1日現有應用API必須升級為26或更高。

中已對Android8.0、Android9.0在targetSdk 版本變更方面做了詳細介紹,本文則將對Android7.0、Android6.0以及Android5.x及以下系統版本在 targetSdk 版本方面的變更進行介紹。

*應用 targetSdk 版本升級流程

應用 targetSdk 版本升級指導(二)

應用 targetSdk 版本升級流程

測試機準備

1.使用最新支持 Android 9.0 的手機測試:所有 EMUI 9.0 華為手機

2.Pixel刷機:https://developers.google.com/android/images

3.使用綠盟遠程真機:https://deveco.huawei.com/

4.使用模擬器

targetSdk 版本相關變更介紹

Android7.0

(一)相關變更

1.系統禁止鏈接到非 NDK 庫

從 Android 7.0 開始,系統將阻止應用動態鏈接非公開 NDK 庫,原因為NDK 庫可能會導致應用崩潰,此行為變更主要目的在為跨平臺更新和不同設備提供統一的應用體驗。即使應用中的代碼不會鏈接私有庫,但第三方靜態庫可能會進行鏈接,因此建議所有開發者都需進行相應檢查,確保應用不會在運行 Android 7.0 的設備上崩潰。如果應用使用的是原生代碼,則只能使用公開 NDK API。(https://developer.android.com/ndk/guides/stable_apis)


應用 targetSdk 版本升級指導(二)

2.低電耗模式DOZE(系統狀態)

進入條件:滅屏、未充電、靜止持續1小時

退出條件:亮屏或移動或充電

限制資源

• 限制應用訪問網絡

• 暫停應用的Sync任務

• 暫停應用的JobScheduler任務

• 忽略應用的wakelocks

• 標準Alarm推遲到維護窗口

• 不執行wifi掃描

應用 targetSdk 版本升級指導(二)

3.低電耗模式Lite Idle(系統狀態)

進入條件:滅屏、未充電持續5分鐘(Android P調整為3分鐘)

退出條件:亮屏或充電

限制資源

• 限制應用訪問網絡。

• 暫停應用運行Sync任務 。

• 暫停應用運行JobScheduler任務。

應用 targetSdk 版本升級指導(二)

4.AppStandby模式(應用狀態)

進入AppIdle條件:應用後臺空閒總時間>48小時且亮屏後臺空閒時間 > 12小時

排除&退出條件:前臺應用、有前臺服務的應用、通知欄或鎖屏通知消息的應用或進行充電

不限制的應用:系統應用UID<10000的,Persist常駐應用,電池優化白名單,系統關聯的其他應用

限制的資源

• 限制應用訪問網絡

• 暫停執行應用的Sync任務

• 暫停執行應用的JobScheduler任務

5.App Standby Bucket 應用待機分組模式( Android P特性)

應用待機分組模式是在Doze模式未生效時(亮屏或剛剛滅屏時),對運行在後臺的用戶不可感知應用的耗電管控擴展。

應用 targetSdk 版本升級指導(二)

(二)適配指導

低電耗模式和應用待機模式適配指導如下:

• 前臺服務

應用需要在後臺訪問網絡或者使用CPU時可以通過此方式。

• Doze白名單

查詢應用是不是在doze白名單:

應用 targetSdk 版本升級指導(二)

應用 targetSdk 版本升級指導(二)

Android6.0變更

(一)相關變更

運行時權限

此版本引入了一種新的權限模式,用戶可直接在運行時管理應用權限。這種模式讓用戶能夠更好地瞭解和控制權限,為安裝的應用分別授予或撤銷權限,同時為開發者精簡了安裝和自動更新過程。

對於以 Android 6.0(API 級別 23)或更高版本為目標平臺的應用,請務必在運行時檢查和請求權限。確定應用是否已被授予權限,可調用新增的 checkSelfPermission() 方法。請求權限,可調用新增的 requestPermissions() 方法。具體參考:

https://developer.android.google.cn/training/permissions/requesting

(二)適配指導

• 解釋需要權限的原因:系統在開發者調用 requestPermissions() 時顯示的權限對話框將說明應用需要的權限,但不會解釋為何需要這些權限。某些情況下,用戶可能會感到困惑,因此,建議在調用 requestPermissions() 之前向用戶解釋應用需要相應權限的原因。

• 僅申請應用真正需要的權限

• 如果應用在啟動之後一次要求用戶提供多項權限,用戶可能會感到無所適從並因此退出應用 。建議開發者應根據需要請求權限,對於某一些權限應用可以在真正需要使用的時候再嘗試申請用戶動態授權。

Android5.x(22-19)及以下版本變更

應用 targetSdk 版本升級指導(二)

安卓綠色聯盟會定期進行技術分享,歡迎關注!


分享到:


相關文章: