我遵循了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身份验证修复此问题即可。
答案 0 :(得分:8)
包含
-keep class com.google.firebase.** { *; }
Proguard为您提供了以下功能:删除死代码,通过将类成员和程序包名称重命名为短字符串来减少代码大小,以及通过重命名使代码更难以阅读,从而进行反向工程。
通过保持完整的com.google.firebase
树是完整的,您不会从减小大小中受益。我猜混淆在这种情况下是没有关系的,因为它是一个开源库。
您可以尝试keep
来使用所使用的顶级API类(如果不阅读firebase插件实现,您可能无法知道它们是什么)来达到减小尺寸的目的,但是这很多可能会减少APK大小的工作,并且可能会引入一些脆弱性。
不,它不是“最佳”的,但是很简单。