Android 9 Pie 兼容性常見問題及注意事項


640?wx_fmt=png

應用不兼容的常見原因

使用了系統的 ClassLoader 加載 org.apache.http.* 的庫

Android M 就已經開始移除對 Apache HTTP client 的支持。而 Android P 的系統 ClassLoader 已經不支持加載 org.apache.http.*包 (拋出 NoClassDefFoundError),應用必須用自定義的 ClassLoader 來加載,同時確保 org.apache.http.* 的路徑包含在應用 classpath 上。

 

應用不應該再使用 org.apache.http.legacy 庫,如果實在必須,可以將它打包進自己的 APK,同時改名以防止與運行時的版本沖突。

 

沒有使用兼容 Android 9 的加固服務

部分加固服務可能尚未兼容 Android 9。開發者應該使用兼容 Android 9 的加固服務。

 

直接調用 dex2oat

從一開始,dex2oat 就被設計為系統內部使用的編譯部署工具,Android 從來都未支持過開發者直接調用 dex2oat 的場景。

 

如果您需要從內存中加載 dex 文件,而不願在存儲中留下痕跡,請使用 Android O 中新增的加載器 InMemoryDexClassLoader。

 

相關的 dex / so 文件亦不應直接操作或篡改,干擾或篡改系統內部加載 dex 的邏輯很可能會導致兼容性問題。

 

使用了非 SDK 接口

非 SDK 接口在每次版本更新中都有可能被改動,開發者應只使用 SDK 接口。

 

使用了不兼容的第三方的庫

如果您使用的第三方庫尚不支持 Android P 版本,請報告給其提供商,幫助推動它解決兼容性問題。

 

 

非 SDK 接口的限制名單

 

凹口屏幕 Display Cutout

 

屏幕旋轉鎖定

在 Android P 上,不論是自動旋轉或旋轉鎖定 (rotation lock),應用界面皆可以為縱向或橫向,這取決於最上層可見 Activity 的 screenOrientation 設置。請不要再假設設備在旋轉鎖定時必定為縱向。

 

 

Inline 函數調用檢查

在 Android P 中,如果調用某個 inline 方法的類與 inline 方法所在的類由不同的 ClassLoader 加載, 就會主動發起 abort (inline 不允許跨 dex 文件),導致應用 crash。請盡量避免用不同的 ClassLoader 來加載相關的 (有互相調用可能) 類,因為被調用類的方法可能已經被 inline 了。

 

 

空閑應用無法訪問麥克風、攝像頭和傳感器

為了更好地保證隱私,Android P 限制所有處於空閑狀態的應用對麥克風、攝像頭和所有 SensorManager 傳感器的訪問。當一個應用的 UID 空閑時,麥克風將會報告系統 “無音頻信號”,傳感器將會停止報告事件。應用使用的攝像頭也會斷開連接,如果應用嘗試使用它們,則會生成錯誤。在大多數情況下,這些限制不會為現有應用帶來新的問題,但我們仍然建議您從應用中移除此類傳感器請求。

 

 

前台服務權限

應用 target 到 P 版本后,在使用前台服務時必須申請 FOREGROUND_SERVICE 權限。這是一個一般性權限,應用只需在 manifest 中聲明,系統會自動授予而無需詢問用戶。但若無此權限即運行前台服務,系統會拋出 SecurityException。

 

 

后台服務限制

自 Oreo 起,Target SDK >=26 的應用若沒有在前台顯示,它的后台服務將受到系統限制。需長期運行的服務應遷移至前台服務,並讓使用者注意到服務正在運行;經典電影或改用排程作業,例如 WorkManager 或 JobScheduler。

 

 

Google Play targetSdkVersion 政策

為了推動應用獲得 Android 新版本提供的安全和性能提升,Google Play 應用市場要求其上的應用必須:

 

 

?點擊屏末?|?閱讀原文?|?"我們願意更好地傾聽您的聲音 "

 

640?wx_fmt=jpeg

 

推薦閱讀

·?Android 安全更新的發展與沿革

·?Android Jetpack: Room | 中文教學視頻

·?Google Play Console 新增獲客分析功能,幫您深入洞察用戶行為

 


文章來源:https://blog.csdn.net/jILRvRTrc/article/details/82598481


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM