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 引入了本機庫的命名空間。這將系統庫與應用程式庫分開,設備製造商可以添加自己的本機庫。
從 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 ID (AID) 機制,使用特定於裝置的
android_filesystem_config.h
檔案來指定檔案系統功能和/或自訂裝置製造商 AID。 Android 8.0 及更高版本支援擴充檔案系統功能的新方法。 - 在 Android 8.0 中,處理 USB 指令從裝置特定的
init
腳本(HAL 層的替代)移出並移至本機 USB 守護程式中。 USB HAL介面必須在運行 Android 8.0 及更高版本的每個裝置上實現。