Android 權限提供的控件可提高用戶意識並限制應用訪問敏感數據。在 Android 8.0 及更低版本上配置權限包括列入許可名單,否則將禁用特權應用程序,即使它們位於priv-app
路徑中也是如此。在 Android 9 及更高版本上,嘗試使用未正確列入許可名單的應用的設備將無法啟動。
Android 10 引入了角色的概念,即係統內與特定要求和權限相關聯的唯一名稱。為應用分配角色以授予其特定用途的權限,並使用平台配置資源配置默認角色。
針對潛在有害應用程序(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 引入了 Native Libraries 的命名空間。這將系統庫與應用程序庫分開,設備製造商可以添加自己的本地庫。
從 Android 10 開始,應用必須同時擁有簽名權限和用戶同意才能訪問設備的屏幕內容。依賴靜默捕獲功能的特權應用程序(例如截屏)應改用MediaProjection類。
透明度和隱私
在 Android 6.0 及更高版本中,設備出廠 MAC 地址受到保護,不會被 Wi-Fi 服務提供商和數據包分析器訪問。自 Android 10 起的其他限制限制應用訪問不可變設備標識符 (ID) ,除非它們被列入特權許可名單。 (連接部分提供了有關設備標識符的相關討論,因為這會影響運營商。)
在 Android 9 及更低版本上,用戶在授予應用位置訪問權限時會做出持久的選擇。從 Android 10 開始,三態位置權限功能為用戶提供了三個選項來允許應用訪問設備的位置。無論目標 SDK 是什麼,這些權限要求都適用於 Android 10 中的應用。
從 Android 10 開始配置其他透明度和隱私功能的權限
- 當應用在後台使用
ACCESS_FINE_LOCATION
權限訪問其設備位置時,後台訪問位置提醒會向用戶顯示。 - 由 Contacts Provider 組件管理的聯繫人關聯性相關數據的訪問方式不同:應用程序無法寫入或讀取數據庫中的聯繫人關聯性數據。這會影響調用者相關的 API 。
流線型配置
已針對 Android 6.0 及更高版本簡化了權限配置。
- 由
init
啟動的服務的環境功能將服務配置的所有方面保存在單個.rc
文件中。為init
未啟動的服務設置功能時,請改用fs_config.c
配置文件系統功能。 - Android 7.x 及更低版本擴展了 Android ID (AID) 機制,使用特定於設備的
android_filesystem_config.h
文件來指定文件系統功能和/或自定義設備製造商 AID。 Android 8.0 及更高版本支持一種擴展文件系統功能的新方法。 - 在 Android 8.0 中,處理 USB 命令已從特定於設備的
init
腳本(替代 HAL 層)移到本機 USB 守護程序中。 USB HAL接口必須在每台搭載 Android 8.0 及更高版本的設備上實現。