Android權限提供了一些控件,這些控件可以提高用戶的意識並限制應用程序對敏感數據的訪問。在Android 8.0及更低版本上配置權限包括白名單,如果特權應用程序不在priv-app
路徑中,則白名單將被禁用。在Android 9及更高版本上,嘗試使用未正確列入白名單的應用的設備將無法啟動。
增強的針對潛在有害應用程序(PHA)的保護
- 透明化為潛在有害的應用行為。
- 用戶控制應用行為。
- 應用開發人員在使用私有數據時會自行決定,並受權限保護。
軟件包安裝和許可
在Android 9及更低版本中,軟件包安裝和權限控制功能包含在PackageInstaller
軟件包( //packages/apps/PackageInstaller
)中。在Android 10及更高版本中,權限控制功能駐留在單獨的包PermissionController
( //packages/apps/PermissionController
)中。圖1說明了這兩個軟件包在Android 10中的位置。

白名單和訪問
在Android 6.0及更高版本中,應用在運行時請求訪問危險權限。 Android 10添加了活動識別(AR)運行時權限,該權限提示用戶修改或允許危險權限。
Android 8.0要求您在/etc/permissions
目錄的系統配置XML文件中將特權應用明確列入白名單。在Android 9及更高版本中,特權權限必須列入白名單,否則設備將無法啟動。
為了限制內部API的可見性並防止應用意外訪問平台庫,Android 7.0引入了本機庫命名空間。這樣可以將系統庫與應用程序庫分開,設備製造商可以添加自己的本機庫。
從Android 10開始,應用必須同時具有簽名權限和用戶許可才能訪問設備的屏幕內容。依賴靜默捕獲功能的特權應用程序(例如截屏)應改為使用MediaProjection類。
透明度和隱私
在Android 6.0及更高版本中,設備出廠MAC地址受到保護,以防止Wi-Fi服務提供商和數據包分析器訪問。自Android 10起,其他限制限制了應用訪問不可更改的設備標識符(ID)的權限,除非將其列入特權權限的白名單中。 (“連接性”部分提供了有關設備標識符的相關討論,因為這會影響運營商。)
在Android 9及更低版本上,用戶在向應用授予位置訪問權限時會做出永久選擇。從Android 10開始,三態位置權限功能為用戶提供了三個選項,以允許應用訪問設備的位置。無論目標SDK是什麼,這些權限要求都適用於Android 10中的應用。
從Android 10開始配置其他透明度和隱私功能的權限
- 後台訪問位置提醒會在應用使用
ACCESS_FINE_LOCATION
權限訪問其設備位置時向用戶顯示。 - 由聯繫人提供程序組件管理的與聯繫人親和力相關的數據的訪問方式有所不同:應用程序無法寫入數據庫中的聯繫人親和力數據或從中讀取數據。這會影響與調用者相關的API 。
簡化的配置
對於Android 6.0及更高版本,權限配置已得到簡化。
- 由
init
啟動的服務的環境功能將服務配置的所有方面都保存在單個.rc
文件中。為不是由init
啟動的服務設置功能時,請改用fs_config.c
配置文件系統功能。 - Android 7.x及更低版本通過使用設備特定的
android_filesystem_config.h
文件來指定文件系統功能和/或自定義設備製造商AID來擴展Android ID(AID)機制。 Android 8.0及更高版本支持擴展文件系統功能的新方法。 - 在Android 8.0中,處理USB命令已從設備專用的
init
腳本(代替HAL層)中移出,並移入了本地USB守護程序。必須在Android 8.0及更高版本上啟動的每台設備上都實現USB HAL接口。