使用了系統的 ClassLoader 加載 org.apache.http.* 的庫apache
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 的加固服務。性能
直接調用 dex2oatgoogle
從一開始,dex2oat 就被設計爲系統內部使用的編譯部署工具,Android 歷來都未支持過開發者直接調用 dex2oat 的場景。編碼
若是您須要從內存中加載 dex 文件,而不肯在存儲中留下痕跡,請使用 Android O 中新增的加載器 InMemoryDexClassLoader。spa
相關的 dex / so 文件亦不該直接操做或篡改,干擾或篡改系統內部加載 dex 的邏輯極可能會致使兼容性問題。設計
使用了非 SDK 接口3d
非 SDK 接口在每次版本更新中都有可能被改動,開發者應只使用 SDK 接口。
使用了不兼容的第三方的庫
若是您使用的第三方庫尚不支持 Android P 版本,請報告給其提供商,幫助推進它解決兼容性問題。
白名單
Android SDK 自己
沒有任何限制
黑名單
只能被 Android 系統及系統應用使用
不管 targetSdkVersion 都禁止使用
對應用開發者來講,至關於沒有這些接口
深灰名單
沒有發現應用在使用,但咱們以爲有潛在的可能性
當 targetSdkVersion < P 時容許使用
當 targetSdkVersion >= P 時禁止使用 (至關於黑名單)
淺灰名單
已有應用在使用的非 SDK 接口,仍然能夠繼續使用
未來會考慮提供相應的 SDK 接口
當 targetSdkVersion >= P 時系統提示警告
在 Android P 上,不管是自動旋轉或旋轉鎖定 (rotation lock),應用界面皆能夠爲縱向或橫向,這取決於最上層可見 Activity 的 screenOrientation 設置。請不要再假設設備在旋轉鎖定時一定爲縱向。
在 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。
爲了推進應用得到 Android 新版本提供的安全和性能提高,Google Play 應用市場要求其上的應用必須:
點擊這裏 "咱們願意更好地傾聽您的聲音 "