繁体   English   中英

如何打开 jetpack DataStore 文件 (.preferences_pb)

[英]How to open jetpack DataStore file (.preferences_pb)

我正在尝试新的 jetpack DataStore库。 我使用库保存了数据。 这在应用数据目录(/data/data/my.package.name/files/datastore/settings.preferences_pb)中创建了一个文件settings.preferences_pb setting是我给的文件名。 使用文本查看器无法正确显示数据。 我可以找出键名,但值是垃圾。 如何打开并查看此文件?

这是文件settings.preferences_pb的驱动器链接

这是首选项_pb 文件的当前格式: 链接

您可以使用此模式解析文件并在需要时将其打印出来。

或者,您可以只在 Preferences 对象上使用 toString() 方法,您应该会得到一个很好的可读输出。

读取preferences_pd文件 我使用了十六进制编辑器(macOS 为“Hex Fiend”),这似乎可以理解。

你可以参考这里的preferences.proto (感谢@rohit-sathyanarayana)

二进制文件是 <string, value> 对的映射。

每对以0x0A和长度(以字节为单位)开头。 例如0x26表示接下来的 38 个字节。

名称字段以0x0A和长度(以字节为单位)开头。 例如, 0x04代表“名称”, 0x05代表“令牌”。

值字段以0x12和长度(以字节为单位)开头。 例如0x1E = 接下来的 30 个字节。

第一个字节可能表示字段类型。 例如0x2A = 字符串字段。

第二个字节是值的长度。 例如0x1C = 28 个字节。

由于0x0A与换行符相同,如果您的大多数字段都是字符串格式,您可以将首选项数据库作为文本打开。

参考: https : //medium.com/swlh/get-your-hand-dirty-with-jetpack-datastore-b1f1dfb0a5c1


protobuf 文件将位于 /data/data/{application.package}/files/datastore/ 中。 这些是 protobuf 格式的文件,所以我们不能用普通的编辑器读取它们。 要解码文件,我们可以使用protoc命令行。

为了能够使用 protoc 命令,我们必须使用 adb 命令将这些文件拉到我们的工作站空间

对于偏好数据存储

protoc --decode_raw < app_name.preferences_pb

结果将与此类似:

1 {
    1: "app_name"
    2 {
        5: "Datastore sample"
    }
}
1 {
    1: "is_demo_mode"
    2 {
        1: 1
    }
}

注意:is_demo_mode 的值 1 代表一个真

代码

我从数据存储源代码中找到了一种解决方法。 只需将 pbFile 更改为 File(filesDir, "datastore/settings.preferences_pb")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM