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文件夹)

ios数据持久化 - preference(偏好设置)

数据序列化以及偏好设置

在 Android 中使用 R8 和 Proguard 时如何保护数据模型类免受逆向工程的影响?

Android 上的 ProGuard 和 Gson (ClassCastException)

如何为android数据绑定点击监听器编写proguard规则?