Closed rayzeng0221 closed 1 year ago
你使用了SerializeHook自定义?
var token: String? by serialLazy() 判断登录状态 就只是简单存储了 Token 不覆盖安装都没有问题的 就是 比如从1.1 升级到 1.2 之后 就全没了 包括其他的 状态值
重启app不会丢失数据是吗?我说的杀死任务那种
我是直接上传了两个版本到蒲公英 然后用浏览器把低版本和高版本分别下载到本地 然后先安装 低版本,进行登录和其他一些操作之后,保证那些状态值都被改变,包括登录的用户名密码也保存了 ,然后再安装高版本,然后安装成功之后,就啥也没了,保存的 用户名密码,Token 都没了
是的 ,杀进程 啥的 重启是没有任何问题的
就是 版本升级 覆盖安装就这样了
能用本仓库demo复现问题吗?
跟我的 多Module 开发 会有影响吗 那我晚上 回去试一下你的 Demo
你用的框架什么版本
1.3.2
完全无法复现你的问题, 我推测你可能为调用了token = null
导致删除了本地数据
建议多检查下代码
另外推荐使用2.0.0版本的SerializeHook
并且使用kotlin.serialization
来处理序列化(参考示例项目), 可以避免存储对象时字段增删导致无法正确读取数据
我刚刚发现了一个很奇怪的事情,版本之间 设计存储的字段基本没有新增也没有改动,但是好像项目代码有更新,就会出现这个情况,昨天那一份同样的代码,只是版本号不一样,打了两个版本测试升级就是正常的,但是跟之前的版本如果代码上有改动去升级 就会出现了。实在是太奇怪了。而且你说的Token的问题 除了退出登录的时候 是直接把Token=”“,而且升级也不会有地方去改变这个值的
我刚刚发现了一个很奇怪的事情,版本之间 设计存储的字段基本没有新增也没有改动,但是好像项目代码有更新,就会出现这个情况,昨天那一份同样的代码,只是版本号不一样,打了两个版本测试升级就是正常的,但是跟之前的版本如果代码上有改动去升级 就会出现了。实在是太奇怪了。而且你说的Token的问题 除了退出登录的时候 是直接把Token=”“,而且升级也不会有地方去改变这个值的
demo你也无法复现此问题是吧? 那我建议你直接使用mmkv的方法读写一个字段试试
嗯,后续我再跟进一下,等我修复一些Bug后 在打包一个版本看看是不是代码更新就会导致这个问题
难道是MMKV.initlizae()
你指定的目录问题吗?
你可以看下Serialize源码, 这个框架文档都比源码多, 本质上只是一些简单的mmkv封装, 委托属性的应用示例, 旨在简化读写和对象存储
我就只是集成了你这个库,没有设置过MMKV的任何方法呢。然后 数据线直接代码运行 安装 去升级也是没有问题的 安装release版本就会这样
我使用demo的release包复现不出来此问题, 而且这个也不止你我一个人使用
你看下是否是这个问题 Duplicate of #14, 但是我看你的数据类型为String应该不至于
标错了, 可能重复问题是 #14
我除了用户信息 是用了实体保存,其他的 全是 基础数据类型。然后我昨天修改一些Bug之后,升级又是正常的了 ,我真不知道 前面那几个版本到底是怎么回事 ,真的是很郁闷啊 。
可能是移动了字段类所在的文件路径
最新版本添加@SerializeConfig
注解解决类重命名问题
@SerializeConfig(mmapID = "app_config") // 指定mmapID可以避免重命名当前类名或者改变包名导致无法读取旧值
object AppConfig {
var userId: String by serialLazy(name="user_id") // 指定name可以避免重命名当前字段导致无法读取旧值
}
长时间没有复现问题本issues将被关闭
开始我还以为 是我代码问题,反复确认了好多遍问题还是出在 这个本地存储上,我的登录状态是是用这个来保存的 但是版本升级覆盖安装后,好像所有保存的值全没了,本来登录过了,覆盖安装后又重新进入了登录页面