AccountManager 数据库存储位置

不怎么写技术博客的人,开始是一件比较难的事情;还有一开始可能写的不是很有营养,都是工作遇到的问题,
然后查问google现整理如下,方便自己以后查阅

前两天有同事问我关于android 7.0 及以上版本AccountManager的存储问题,问我为何会有ce和de两个目录,分别是用什么加密之类的问题(android7.0刚发布的时候调查过,现重新调查整理下来必备后需)

由于android7.0引入了FBE(File-Based Encryption):可以使用不同的密钥对不同的文件进行加密,并且可以对这些文件进行单独解密(具体参考文档:https://source.android.com/security/encryption/file-based)
在启用了FBE的设备,每个用户都有两个可供应用使用的存储位置:

  1. CE(credential encryption)凭据加密存储空间:默认存储空间,只有在用户解锁设备后才可用
  2. DE(device encryption)设备加密存储空间:在direct root模式下以及用户解锁设备后均可用

注:direct root表示当前设备已经开机但用户尚未解锁设备,android N版本引入此安全模式;如果您的应用需要在direct root模式下运行时需要访问数据,则使用DE存储。DE存储包含使用密钥加密数据,仅在设备已成功执行验证启动后密钥才可用。
直接启动(direct root)模式官方参考文档:https://developer.android.com/training/articles/direct-boot.html?hl=zh-cn

android 7.0上AccountManager的存储也引入了此特性,对应存储位置为:

  1. /data/system_ce/0/accounts_ce.db
  2. /data/system_de/0/accounts_de.db

另:android 7.0之前版本的存储位置: /data/system/users/0/accounts.db

你可能感兴趣的:(android)