我正在为我的 Android 项目使用 Firestore,并且我正在使用以下代码将获取的文档转换为自定义数据类
val userData = user.toObject(UserData::class.java)!!
现在,当没有发生代码混淆时,此行可以完美运行,但是,使用混淆后,此行不会失败,而是不会将user
文档数据复制到userData
. 所以我认为问题可能与 Firestore 和代码混淆有关。
以前有没有其他人遇到过这个问题?
我正在为我的 Android 项目使用 Firestore,并且我正在使用以下代码将获取的文档转换为自定义数据类
val userData = user.toObject(UserData::class.java)!!
现在,当没有发生代码混淆时,此行可以完美运行,但是,使用混淆后,此行不会失败,而是不会将user
文档数据复制到userData
. 所以我认为问题可能与 Firestore 和代码混淆有关。
以前有没有其他人遇到过这个问题?
toObject()
UserData
方法使用反射从用户文档中填充您的模型。现在您的UserData
类被混淆了,Firestore 无法将文档中的值映射到模型类。
要解决此问题,您需要对您在 Firebase 中使用的所有数据模型禁用代码混淆。
最简单的解决方法是向@Keep
数据类添加注释。
@Keep
data class UserData(...)
如果你有很多这样的模型,你可以通过向你的proguard-rules.pro
.
例如,此语句将model
在代码收缩和混淆时保持包内所有类的完整性:
-keep class com.example.app.data.models.** { *; }
查看文档以获取更多此类规则。