The Story
我有一个Android应用程序,它严重依赖Firebase实时数据库 . 到目前为止,我使用它没有任何问题 .
但我需要在数据库中存储一些高度敏感的用户数据,我不想以纯文本形式进行 .
所以,我在将数据存储到数据库之前加密了数据 . 我可以在Firebase控制台中看到加密的字符串 .
The Problem
我需要检查并验证我的本地设备中Firebase数据库如何在内部表示数据,因为我也在数据库中存储加密密钥 .
我的数据库有 setPersistenceEnabled()
,因此Firebase将这些数据本地存储在用户设备中 . 没有人提到Firebase内部如何做到这一点 . 它是将它存储为JSON文件还是SQLite数据库(最有可能) .
My Attempt
为了深入研究这个问题,我尝试从我的应用程序中提取数据库 .
我用了,
"adb -d shell "run-as com.yourpackge.name ls /data/data/com.yourpackge.name/databases/"
在我的终端中获取我的应用程序的所有数据库名称列表,这就是我得到的,
app-debug-xxxx.firebaseio.com_default
app-debug-xxxx.firebaseio.com_default-journal
crash_reports
crash_reports-journal
那么,这些是我的数据库吗?它们是常规的SQLite数据库吗?我假设它们是SQLite数据库,我无法从这些文件中读取数据 .
我个人认为,了解数据如何在Android内部表示非常重要,这样我们就可以做出更好的决策来存储我们的数据 .
任何帮助将受到高度赞赏?
1 回答
在检查了你提到的文件之后,是的,它确实是一个SQLite数据库文件(
app.firebaseio.com_default
) .数据保存在
serverCache
表中,它包含2列:path
(TEXT)和value
(BLOB) .path
是firebase数据库中数据的路径,类似于/users/-KOasdbcde
,value
是该路径的JSON值 .EDIT
这是该表的结构