Proguard 和 Preference 数据存储
Posted
技术标签:
【中文标题】Proguard 和 Preference 数据存储【英文标题】:Proguard and Preference DataStore 【发布时间】:2021-01-13 02:32:35 【问题描述】:我在使用 android DataStore 的项目中使用 proguard。没有proguard,它工作得很好。但是当它被proguard混淆时,会出现以下错误:
java.lang.RuntimeException: Field preferences_ for f.k.k.h not found. Known fields are [public f.k.k.l.k0 f.k.k.h.i, public static final f.k.k.h f.k.k.h.j, public static volatile f.k.k.l.x0 f.k.k.h.k]
at f.k.k.l.s0.K(Unknown Source:62)
at f.k.k.l.s0.y(:6)
at f.k.k.l.s0.x(Unknown Source:12)
at f.k.k.l.a1.a(:32)
at f.k.k.l.a1.b(Unknown Source:4)
at f.k.k.l.x.r(:4)
at f.k.k.h.s(:2)
at f.k.k.k.b(:2)
at f.k.i.e(Unknown Source:48)
at f.k.i.f(:2)
at f.k.i.d(:4)
at f.k.i$b.e(:4)
at i.n.j.a.a.l(:2)
at d.a.p0.run(:4)
at d.a.f2.a.u(Unknown Source:0)
at d.a.f2.a$a.run(:7)
官方文档中没有提到proguard规则。我应该在我的项目中添加一些规则来防止 DataStore 被混淆吗?
【问题讨论】:
【参考方案1】:当我将以下规则添加到我的项目时解决了:
-keep class androidx.datastore.*.** *;
我已经向google举报了,你可以去那里关注:
https://issuetracker.google.com/issues/168580258
【讨论】:
以上是关于Proguard 和 Preference 数据存储的主要内容,如果未能解决你的问题,请参考以下文章
IOS 偏好设置数据 存 取(Preferences文件夹)
在 Android 中使用 R8 和 Proguard 时如何保护数据模型类免受逆向工程的影响?