'Proguard and Preference DataStore

I use proguard on my project which is used android DataStore. It worked fine without proguard. But when it is obfuscated with proguard the following error occured:

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)

There is no proguard rule mentioned in the official document. Should I add some rules to my project to prevent DataStore from obfuscation?



Solution 1:[1]

In my case, I had problems when implementing the datastore proto, which stores objects. For me it solved like this:

my build.gradle(Module) looks like this

 //  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>;
}
 

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 AllanRibas