![](/img/trans.png)
[英]Calligraphy font not getting applied In release build of Android app with dexguard
[英]FCM 15.0.2 cannot make token in release build with Dexguard
我正在使用 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 优化 5 次
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 *;}
Firebase 15+ 需要一些额外的规则。 例如,最新的 DexGuard 版本 8.2.09 包括所有必要的配置。
添加以下 dexguard 规则以解决问题:
-keep class com.google.firebase** { *; }
-dontshrink
似乎 dexguard 删除了所有未在代码中直接引用的类。 因此,如果允许缩小,那么在混淆过程中将删除诸如服务类以获取 firebase 令牌 (FirebaseInstanceIdService) 的入口点。
由于 T. Neidhart 上面的回答,我在 Firebase 分析中遇到了类似的问题,它适用于调试版本,但不适用于发布版本,我从 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.