使用 Firebase 配置 Proguard 规则

Configure Proguard-rules with Firebase

我有这个项目并且我使用 Firebase 实时数据库。

写这个proguard规则是对的吗?

-keepattributes Signature

-keepclassmembers class activity.** {
  *;
}
-keepclassmembers class adapter.** {
   *;
}
-keepclassmembers class fragment.** {
  *;
}
-keepclassmembers class persistence.** {
  *;
}
-keepclassmembers class services.** {
   *;
}

该应用程序运行良好,但当我在 PlayStore 上发布时,查询似乎不起作用。在我的 gradle 我添加了

release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
    }

我做错了什么?

您应该 -keep 用于将被 firebase serialized/deserialized 的 class es,否则它将无法在那些 classes 上使用反射。 -keepclassmembers 只会保留成员并混淆 class 的名称,如果您的库使用反射,这是您绝对不想做的事情。尝试用 -keep 替换 -keepclassmembers 那些 classes.

-keep class persistence.** {
  *;
}
-keep class persistence.**  {
*;
}

这里的**表示每个文件都包含在下面的包中