0

我正在为我的 Android 项目使用 Firestore,并且我正在使用以下代码将获取的文档转换为自定义数据类

val userData = user.toObject(UserData::class.java)!!

现在,当没有发生代码混淆时,此行可以完美运行,但是,使用混淆后,此行不会失败,而是不会将user文档数据复制到userData. 所以我认为问题可能与 Firestore 和代码混淆有关。

以前有没有其他人遇到过这个问题?

4

1 回答 1

2

toObject()UserData方法使用反射从用户文档中填充您的模型。现在您的UserData类被混淆了,Firestore 无法将文档中的值映射到模型类。

要解决此问题,您需要对您在 Firebase 中使用的所有数据模型禁用代码混淆。

最简单的解决方法是向@Keep数据类添加注释。

@Keep
data class UserData(...)

如果你有很多这样的模型,你可以通过向你的proguard-rules.pro.

例如,此语句将model在代码收缩和混淆时保持包内所有类的完整性:

-keep class com.example.app.data.models.** { *; }

查看文档以获取更多此类规则。

于 2021-11-18T07:59:19.533 回答