FCM не работает после включения Proguard в Gradle - PullRequest
0 голосов
/ 26 июня 2019

Я подключил FCM и тестировал раньше. И все работало нормально.

Однако я готов опубликовать свое приложение и включил proguard в build.gradle

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt')
            proguardFile 'proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt')
            proguardFile 'proguard-rules.pro'
//            proguardFile 'proguard_debug.pro'
        }
    }

И применил это в proguard-rules.pro:

-keep class com.firebase.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.w3c.dom.**
-dontwarn org.joda.time.**
-dontwarn org.shaded.apache.**
-dontwarn org.ietf.jgss.**
-dontwarn com.firebase.**
-dontnote com.firebase.client.core.GaePlatform

Все получают push-сообщения, но только мой тестовый телефон не получает их, для которых включена proguard. Я конвертировал свои data модели в Serialize формат. Но сейчас эта проблема происходит.

Как я могу использовать FCM или другие функции Firebase, такие как Remote Config или Crashlystics?

1 Ответ

1 голос
/ 26 июня 2019

Обфускация переименовывает переменные в Kotlin data class без @SerializedName и в результате Json не анализируется в классе модели. Для предотвращения этого вы можете использовать @Keep аннотацию

@Keep
data class MyClass(...)

или установите @SerializedName для всех значений

...