近期,Google 發佈了 Android 11的平臺穩定版本。Android 11 將在確保用戶隱私安全的前提下,更好地讓用戶暢享最新科技。android
下圖是 Android 11 發佈總體流程的時間線:
安全
個推深耕開發者領域,一直緊跟行業發展趨勢,對Android 11的有關更新展開了深刻研究。本文將從分區存儲、應用包可見性、權限變化和新功能四個方面來談談 Android 11 新特性,以幫助開發者更快速、更便捷地上手適配Android新系統。
app
做者| 個推高級安卓開發工程師 一七性能
Android 10以前,外部存儲區的內容主要以兩種形式存在,一種是由應用的包名命名,歸屬於特定應用目錄下的內容,另外一種是存儲在公共存儲區域的內容。優化
在Android 10 中,Google首次引入了分區存儲,將公共區域劃分紅了不一樣的集合,而且在媒體文件和其餘文檔之間創建了清楚的分割。通過劃分以後應用不能夠隨意訪問外部存儲區中的文件,而只能訪問媒體文件。若是想訪問包含更多細節數據的其餘文檔,應用專門向用戶申請有關文檔的訪問權限。
spa
分區存儲是須要以 Android 10 爲目標平臺的,系統默認強制執行。若是在 AndroidManifest 中添加了 requestLegacyExternalStorage=true 標誌,就能夠不受此限制。可是當 target API 更新爲 30 後,系統會忽略該配置。blog
若是有數據須要遷移,能夠在 AndroidManifest 中將 preserveLegacyExternalStorage 屬性設爲 true ,當用戶升級到以 Android 11 爲目標平臺時,這個配置就會生效。具體而言,這個配置在用戶從新安裝該應用前都是有效的。
遊戲
針對以 Android 11 爲目標平臺的應用 (targetSdkVersion = 30) ,WRITEEXTENRNALSTORAGE 和 WRITEMEDIASTORAGE 再也不提供其餘任何訪問權限 。進程
某些應用的核心功能可能須要訪問大量的文件,例如文件管理操做、備份和恢復操做等等,此時就須要申請 MANAGEEXTERNALSTORAGE 權限。咱們能夠經過使用 ACTIONMANAGEALLFILESACCESS_PERMISSION intent 操做將用戶引導至一個系統設置頁面,讓用戶爲應用授予全部文件的管理權限。開發
在 Android 11 以前,咱們能夠經過 PackageManager.getInstalledPackages(0) 獲取其餘全部應用的包名等信息。
Android 11 爲了增長安全性,更好地保護用戶的隱私,對應用包的可見性作出了一些改動。
當 targetSdkVersion 爲 30 時,若是咱們用getPackageInfo(「another.app」,0) 獲取其餘應用包信息時 ,會出現 NameNotFoundException 的異常。
咱們能夠在 AndroidMainfest 中添加 <queries>來適配特定的使用場景:(該配置至關因而添加應用白名單)
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
在 Android 11 中,系統爲用戶的私人數據提供了更多可供選擇的受權方式,應用也加大了後臺對位置的訪問權限限制。
對應攝像頭、位置信息和麥克風這幾個數據類型,用戶能夠授予一次性的臨時訪問權限。
只要是在Android 11 上,該限制都會生效,以下圖:
這個一次性權限的生效週期指的是:
在Android10 以前,咱們經過ACCESSCOARRSELOCATION 或 ACCESSFINELOCATION(精確位置) 配置便可申請先後臺位置權限。
Android 11將位置權限分爲前臺和後臺兩種權限。前文說的主要是前臺權限,受權方式沒有變化。應用想要申請後臺權限,除了須要在清單文件中額外添加 ACCESSBACKGROUNDLOCATION 權限外,還須要應用主動引導用戶到指定頁面受權。
增長應用退出緣由功能
在Android 11以前,咱們想要了解應用退出的緣由以及狀態,都比較費勁。現 Android 11 引入了 方法:ActivityManager.getHistoricalProcessExitReasons() ,
可讓咱們清楚地瞭解到應用退出的緣由。
應用和遊戲如今能夠爲其窗口設置首選幀率。大多數 Android 設備以 60Hz 的刷新率更新屏幕,可是某些設備支持多種刷新率,例如 90Hz 和 60Hz,並可在運行時切換。在這些設備上,系統會基於首選幀率來爲應用選擇最佳刷新率。
以上主要介紹了Android 11 對分區存儲、應用包可見性和權限變化等模塊的更新介紹。Google 在力求讓用戶更加便捷地使用Android系統的基礎上,也但願用戶數據的隱私和安全性能在最大程度上受到保護。
個推致力於爲開發者提供好用的SDK。爲了提高SDK的穩定性、兼容性,個推也對Android 11 的新特性進行了深刻研究,並即將針對旗下產品推出全新的適配方案,以知足開發者不一樣的使用場景。此外,咱們但願能與更多開發者交流探索Android新技術,優化用戶體驗,一同打造更好的安卓開發生態圈。