Proguard 和首选项数据存储
Proguard and Preference DataStore
我在我的项目中使用了混淆器android DataStore。没有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 混淆?
当我将以下规则添加到我的项目时,问题得到解决:
-keep class androidx.datastore.*.** {*;}
我已经报告给 google,你可以在那里关注它:
就我而言,我在实现存储对象的数据存储原型时遇到了问题。
对我来说,它是这样解决的:
我的build.gradle(模块)看起来像这样
// DataStore Proto
implementation "androidx.datastore:datastore-core:1.0.0"
implementation "com.google.protobuf:protobuf-javalite:3.14.0"
implementation "androidx.datastore:datastore-preferences:1.0.0"
proguard-rules.pro
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite* {
<fields>;
}
我在我的项目中使用了混淆器android DataStore。没有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 混淆?
当我将以下规则添加到我的项目时,问题得到解决:
-keep class androidx.datastore.*.** {*;}
我已经报告给 google,你可以在那里关注它:
就我而言,我在实现存储对象的数据存储原型时遇到了问题。 对我来说,它是这样解决的:
我的build.gradle(模块)看起来像这样
// DataStore Proto
implementation "androidx.datastore:datastore-core:1.0.0"
implementation "com.google.protobuf:protobuf-javalite:3.14.0"
implementation "androidx.datastore:datastore-preferences:1.0.0"
proguard-rules.pro
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite* {
<fields>;
}