使用ProGuard和Firebase Auth进行Flutter构建时会崩溃

时间:2018-08-18 20:00:21

标签: android firebase firebase-authentication flutter

我遵循了these instructions on adding ProGuard to Flutter,现在在启动应用程序时看到此异常:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/auth/internal/zzae;

这显然与 Firebase身份验证有关。提到的说明还指出以下内容:

  

任何其他库(例如Firebase)都需要添加自己的规则。

但是,我没有找到任何资源,这些资源显示了我需要在proguard-rules.pro 后面附加哪些语句。
我可以想象在Auth组件修复后,其他Firebase组件也会类似崩溃,因此我想知道“例如Firebase” 的含义是什么,即是否每个组件都有规则,或者我只需要为Firebase身份验证修复此问题即可。

1 个答案:

答案 0 :(得分:8)

包含

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

Proguard为您提供了以下功能:删除死代码,通过将类成员和程序包名称重命名为短字符串来减少代码大小,以及通过重命名使代码更难以阅读,从而进行反向工程。

通过保持完整的com.google.firebase树是完整的,您不会从减小大小中受益。我猜混淆在这种情况下是没有关系的,因为它是一个开源库。

您可以尝试keep来使用所使用的顶级API类(如果不阅读firebase插件实现,您可能无法知道它们是什么)来达到减小尺寸的目的,但是这很多可能会减少APK大小的工作,并且可能会引入一些脆弱性。

不,它不是“最佳”的,但是很简单。