Android開發之MMKV的不足以及線下除錯工具

2021-10-12 16:16:53 字數 1434 閱讀 8123

先來介紹下mmkv的儲存結構,分了兩個檔案,乙個資料檔案,儲存結構如下:

乙個校驗檔案,crc結尾,儲存結構如下:

(新版本擴充套件了一些位元組,圖是老的)

這種設計最直接問題就是占用空間變大了很多,如下面的例子,只儲存了乙個字段,但是為了方便mmap對映,磁碟直接占用了8k的儲存,官方宣稱的protobuf儲存(可變長整型) 也省不回這個大小

mmkv都是按位元組進行儲存的,實際寫入檔案把型別擦除了,這也是mmkv不支援getall的原因,雖然說getall用的不多問題不大,但是mmkv因此就不具備匯出和遷移的能力了,比如說,以後出了更優秀的儲存框架,是沒有辦法直接從mmkv批量遷移到新框架的,除非**裡面寫死乙個個key遷移

我覺得比較好的方案是每次儲存,多用乙個位元組來儲存資料型別,這樣占用的空間也不會大很多,但是具備了更好的可擴充套件性

官方目前支援了5個平台,android、ios、win、macos、python,但是沒有提供解析資料的工具,資料檔案和crc都是位元組碼,除了中文能看出一些內容,直接檢視還是存在大量亂碼。比如線上出了問題,把使用者的儲存檔案撈上來,還得替換到系統目錄裡,通過**斷點去看,這也太不方便了。

敝人開發了乙個mac的工具(為什麼不支援win? 只有mac本,也沒精力維護多端)來除錯mmkv的檔案,支援以上五個平台產生的資料檔案,使用也很簡單,直接拖入資料檔案和crc檔案就行。

介面預覽

載入完成後還需要自己手動選擇下型別,還是型別擦除的問題,不能直接讀取出結果

看到這裡,你是不是明白了這篇文章的重點。_

希望各位大佬 star支援一下,能貢獻**就更棒了

推薦

mmkv框架原理解密,mmkv如何利用mmap函式實現儲存優化100倍

mmkv原理解析之路

ZUI易入門Android之 MMKV

今天我們主要從這幾個方面來解釋一下mmkv boolean intlong float double string set集合 byte陣列 可序列化物件 依賴注入 dependencies初始化 設定初始化的根目錄 string dir getfilesdir getabsolutepath mm...

Android開發之簡訊

1.sms主要結構 id 簡訊序號,如100 thread id 對話的序號,如100,與同乙個手機號互發的簡訊,其序號是相同的 person 發件人,如果發件人在通訊錄中則為具體姓名,陌生人為null date 日期,long型,如1346988516,可以對日期顯示格式進行設定 protocol...

Android開發之SparseArray簡介

1 定義 sparsearray,即稀疏陣列,這個物件和hashmap類似,也是乙個容器,但是它的key是整數型別。2 特點 sparsearray不需要對key和value進行auto boxing 將原始型別封裝為物件型別,比如把int型別封裝成integer型別 結構比hashmap簡單 sp...