使用 Firebase 配置 Proguard 规则

Posted

技术标签:

【中文标题】使用 Firebase 配置 Proguard 规则【英文标题】:Configure Proguard-rules with Firebase 【发布时间】:2018-10-21 20:37:25 【问题描述】:

我有这个项目,我使用 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'
    

我做错了什么?

【问题讨论】:

【参考方案1】:

对于将由 firebase 序列化/反序列化的类,您应该 -keep,否则将无法对这些类使用反射。 -keepclassmembers 只会保留成员并混淆类的名称,如果您的库使用反射,这是您绝对不想做的事情。尝试将这些类的 -keepclassmembers 替换为 -keep

-keep class persistence.** 
  *;

【讨论】:

好的!现在看来可以了……但是验证电话的代码(通过 Firebase auth)没有到达 未到是什么意思? 当您使用 Firebase 进行身份验证时,应该会收到验证码 这可能与proguard根本没有关系,你检查你是否没有收到错误?此外,如果您最近进行了身份验证,您将不会收到新代码【参考方案2】:
-keep class persistence.**  
*;

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

【讨论】:

这个答案似乎没有添加其他answer未涵盖的任何信息。

以上是关于使用 Firebase 配置 Proguard 规则的主要内容,如果未能解决你的问题,请参考以下文章

Firebase-UI 库的 Proguard 配置

Firebase + Proguard/R8

Firebase 11.4.2 Proguard 错误

使用带有 Firebase 身份验证的 ProGuard 构建 Flutter 崩溃

Firebase 的 ProGuard 规则是啥?

无法在 Firebase 上上传 proguard 映射文件