Android的directBootAware
屬性允許應用在設備啟動時,甚至在用戶解鎖之前運行。然而,這種功能并非沒有限制,主要包括以下幾點:
主要限制
- 數據訪問限制:在Direct Boot模式下,應用無法訪問憑據加密存儲空間(CE存儲空間),該空間包含需要用戶解鎖才能訪問的數據。應用只能訪問設備加密存儲空間(DE存儲空間),該空間在設備啟動時即可訪問。
- 性能影響:雖然
directBootAware
本身不會直接影響設備性能,但如果應用在設備啟動時執行大量操作,可能會對性能產生一定影響。
- 兼容性限制:并非所有Android版本都支持Direct Boot模式。例如,Android 13完全移除了對FDE加密機制的支持,這可能間接影響到Direct Boot模式的可用性。
- 應用啟動順序:在Android 7.0中,為了支持Direct Boot模式,系統在啟動Launcher之前會先啟動一個FallbackHome,這可能會導致啟動Launcher的流程變慢。
安全和隱私考慮
- 數據加密:Direct Boot模式確保了在設備未解鎖時,敏感數據(如用戶憑證)仍然受到保護,因為這些數據存儲在CE存儲空間中,只有在用戶解鎖后才能訪問。
- 用戶解鎖后的行為:一旦用戶解鎖設備,所有應用都可以訪問CE存儲空間,這意味著應用可以立即獲取到用戶解鎖后的狀態。
如何正確使用
- 注冊組件:應用需要在AndroidManifest.xml中將組件標記為
directBootAware="true"
,以便在設備啟動時接收ACTION_LOCKED_BOOT_COMPLETED
廣播消息。
- 訪問設備加密存儲空間:應用應使用
Context.createDeviceProtectedStorageContext()
來訪問DE存儲空間,確保在Direct Boot模式下可以執行必要的操作。
通過了解directBootAware
屬性的限制和正確使用方法,開發者可以更好地利用這一功能,同時確保應用的安全性和性能。