Не найдены свойства для сериализации в классе UserProfile в отладочной сборке - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь получить документ 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 дает сбой только для отладочной сборки.

...