Я пытаюсь получить документ UserProfile
из Firebase Firestore для класса UserProfile.kt
, но я получаю следующую ошибку только в отладочной сборке. Все работает как положено в сборке релиза для определения класса, приведенного ниже.
Stack Trace []:
Fatal Exception: java.lang.RuntimeException
No properties to serialize found on class com.pune.dance.fitness.api.user.models.UserProfile
com.google.firebase.firestore.DocumentSnapshot.toObject (com.google.firebase:firebase-firestore@@21.4.1:187)
com.google.firebase.firestore.DocumentSnapshot.toObject (com.google.firebase:firebase-firestore@@21.4.1:165)
com.pune.dance.fitness.api.user.UserApiManager$getUserProfile$1$1.onSuccess (UserApiManager.kt:44)
Вот так выглядит мой UserProfile.kt:
@IgnoreExtraProperties
@RealmClass
open class UserProfile : RealmModel {
@get:Exclude
@PropertyName("user_id")
@PrimaryKey
var userId: String = ""
@get:Exclude
@PropertyName("name")
var displayName: String = ""
@get:Exclude
@PropertyName("mobile_number")
var mobileNo: String = ""
@get:Exclude
@PropertyName("fitness_session_id")
var fitness_session_id: String = ""
@get:Exclude
@PropertyName("session_timing_id")
var session_timing_id: String = ""
@get:Exclude
@PropertyName("diet_plan_id")
var dietPlanId: String = ""
}
Когда я использую аннотации, как написано ниже, для каждого поля, то firestore создает 2 записи в базе данных для каждого поля. Здесь user_id
& userId
, эти 2 записи и сделаны в базе данных firestore только в сборке релиза, но в отладочной сборке такие дубликаты не выполняются.
@set:PropertyName("user_id")
@get:PropertyName("user_id")
var userId: String = ""
И ниже, я даю свой релиз 7 отладочных определений сборки вместе с правилом Proguard:
buildTypes {
debug {
debuggable true
applicationIdSuffix ".debug"
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
Правила Proguard:
#To preserve the info Crashlytics needs for readable crash reports
-keepattributes Signature
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
#Source: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=android
#For faster builds with ProGuard, exclude Crashlytics
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
# Keep custom model classes
-keepclassmembers class com.pune.dance.fitness.api.*.models.** { *; }
Я не могу понять это странное поведение. Я перепробовал почти все возможные комбинации аннотаций, и мне нужно понять, почему указанное выше определение UserProfile.kt
дает сбой только для отладочной сборки.