簡體   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