В общем, вы должны убедиться, что все поля, которые используются для генерации JSON путем отражения, охватываются правилом хранения. В противном случае имя в JSON может измениться от сборки к сборке. Также R8 использует свойство, которое среды выполнения JVM и Android позволяют полям разных типов иметь одно и то же имя, вы можете оказаться в ситуации, описанной здесь.
Один вариант может заключаться в аннотировании всех классов, которые сериализовать и использовать правило хранения следующим образом:
-keep class @MyAnnotation ** {
<fields>;
}
или, если все эти классы находятся в отдельном пакете:
-keep class com.example.mypackage.serialized_classes.** {
<fields>;
}