在gradle中启用Proguard后FCM无法正常工作

时间:2019-06-26 06:05:19

标签: android firebase push-notification firebase-cloud-messaging proguard

我已连接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

所有人都收到推送消息,但只有我的测试电话没有收到proguard已启用的消息。我将data模型转换为Serialize格式。但是现在这个问题正在发生。

如何使用FCM或其他Firebase功能,例如Remote ConfigCrashlystics

1 个答案:

答案 0 :(得分:1)

混淆处理重命名了Kotlin data class中的变量而没有@SerializedName,结果Json未解析到模型类。 为防止这种情况,您可以使用@Keep批注

@Keep
data class MyClass(...)

或将@SerializedName设置为所有值