【问题标题】:How to open jetpack DataStore file (.preferences_pb)如何打开 jetpack DataStore 文件 (.preferences_pb)
【发布时间】:2020-12-31 07:36:29
【问题描述】:

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

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

【问题讨论】:

  • 目前似乎没有查看此类数据的选项。它将需要解析器来了解其内部存储方式。 Android Studio 4.1 将附带 Database Inspector(经过这么多年:P),但不要认为通过 IDE 会有任何用于 Datastore 的功能。目前唯一的选择是以编程方式检索并检查或编写测试用例以检查基础知识。
  • 这有什么更新吗?就像这个文件格式到底是什么 - .preferences_pb?这像 .pb 格式的变体吗?以及如何打开这个?
  • @KashishMalhotra 没有得到任何信息,
  • @Manohar 请检查我的答案。

标签: android android-jetpack android-jetpack-datastore


【解决方案1】:

参考: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 表示为真

【讨论】:

    【解决方案2】:

    这是preferences_pb 文件的当前格式:link

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

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

    【讨论】:

      【解决方案3】:

      我使用了一个十六进制编辑器(macOS 的“Hex Fiend”),这似乎可以理解。

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

      二进制文件是 对的映射。

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

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

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

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

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

      由于0x0A 与换行符相同,如果您的大部分字段都是字符串格式,您可以将preferences_db 作为文本打开。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-09
        • 2021-01-26
        • 2023-02-15
        • 1970-01-01
        • 2011-02-11
        • 2011-01-23
        • 2013-11-20
        • 2015-01-30
        相关资源
        最近更新 更多