【问题标题】:FCM 15.0.2 cannot make token in release build with DexguardFCM 15.0.2 无法使用 Dexguard 在发布版本中制作令牌
【发布时间】:2018-05-14 01:23:42
【问题描述】:

我将 FCM 与 Dexguard 一起使用。 FCM 无法在发布版本中制作令牌。 但是,它在调试版本中运行良好。

我的毕业设置

classpath 'com.google.gms:google-services:3.2.1'
compile 'com.google.android.gms:play-services-base:15.0.2'
compile 'com.google.android.gms:play-services-analytics:15.0.2'
compile 'com.google.firebase:firebase-core:15.0.2'
compile 'com.google.firebase:firebase-messaging:15.0.2'

还有,ShrinkResources = false 并通过 Dexguard 优化 5time

gradle version : 4.1 android gradle plugin : 2.3.3

dexguardFile 中与 FCM 相关的选项

-keep public class com.google.firebase.** { *; }
-keep public class com.google.firebase.iid.FirebaseInstanceId { public *;}

【问题讨论】:

  • 您可以尝试最新版本的插件:com.google.gms:google-services:3.3.1com.android.tools.build:gradle:3.1.0
  • 好的,我试试
  • @KyeongraeCho:你解决了这个问题吗?我也有完全一样的问题。 FirebaseInstanceIdService 的 onTokenRefresh() 方法不会在带有 dexguard 的发布版本中调用,仅在调试版本中调用。所有库都是最新的。
  • @user2082415 我还不能修复它。

标签: android firebase firebase-cloud-messaging dexguard


【解决方案1】:

Firebase 15+ 需要一些额外的规则。例如,最新的 DexGuard 版本 8.2.09 包括所有必要的配置。

【讨论】:

    【解决方案2】:

    添加以下 dexguard 规则来解决问题:

    -keep class com.google.firebase** { *; }
    -dontshrink
    

    似乎 dexguard 删除了所有未在代码中直接引用的类。因此,如果允许收缩,则在混淆过程中将删除诸如获取 firebase 令牌 (FirebaseInstanceIdService) 的服务类等入口点。

    【讨论】:

    • 自从第一个带有 dexguard 的项目以来,我一直在使用 firebase。只有 15.x firebase 有问题
    【解决方案3】:

    我在 Firebase 分析中遇到了类似的问题,它适用于调试构建但不适用于发布构建,这要感谢上面 T. Neidhart 的 answer 我从 Dexguard 8.4.13 示例中找到了这个块 - samples/advanced/ GooglePlayServices/AdMob/dexguard-project.txt 它为我解决了问题。

    -keep public class !**.internal.**, com.google.** {
        public protected *;
    }
    # We can repackage all obfuscated classes in a new internal package.
    -repackageclasses com.google.internal
    

    【讨论】:

      猜你喜欢
      • 2017-07-07
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多