Tencent / MMKV

An efficient, small mobile key-value storage framework developed by WeChat. Works on Android, iOS, macOS, Windows, and POSIX.
Other
17.2k stars 1.89k forks source link

MMKV组件升级,双版本数据校验不匹配 #1259

Closed zhang8615050 closed 4 months ago

zhang8615050 commented 4 months ago

我们的项目因为历史原因MMKV的版本停留在v1.0.22 我想针对MMKV进行升级到V1.2.16版本,但为了考虑线上的风险。 决定采用双版本(本地化1.2.16版本只修改类名和库名做测试)同时在一个APP中使能,每次get的时候,针对返回的Value值进行校验匹配 发现双版本同时使能的场景下,新版本的key大概率写不进去。 3-26 17:01:19.228 656 656 I APP-KV: loading [config_develop_mmkv] with 10 size in total, file size is 4096 03-26 17:01:19.228 656 656 I APP-KV: loading [config_develop_mmkv] with crc 1803101477 sequence 2 03-26 17:01:19.228 656 656 I APP-KV: loaded [config_develop_mmkv] with 1 values 03-26 17:01:19.228 656 656 I MMKV : open fd[0x8a], /data/user/0/com.android.demo/files/mmkv2/config_develop_mmkv 03-26 17:01:19.228 656 656 I MMKV : open fd[0x8b], /data/user/0/com.android.demo/files/mmkv2/config_develop_mmkv.crc 03-26 17:01:19.228 656 656 I MMKV : loading [config_develop_mmkv] with 0 actual size, file size 4096, InterProcess 1, meta info version:0 03-26 17:01:19.228 656 656 I MMKV : loaded [config_develop_mmkv] with 0 key-values

请问你知道是什么原因吗?

lingol commented 4 months ago

Don't use multiple versions of MMKV in a single App.

lingol commented 4 months ago

And why don't you upgrade to v1.3.4 instead of v1.2.16?

zhang8615050 commented 4 months ago

看了下微信目前使用的是V1.2.15版本,就决定升级1.2.16版本 双版本使能的话,都是不同的路径例如mmkv /mmkv2 同时写两个文件

lingol commented 4 months ago

No you can't.