我关注了these instructions on adding ProGuard to Flutter现在在启动应用程序时看到此异常:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/auth/internal/zzae;
这显然与 Firebase Auth 有关。上述说明还说明了以下内容:
Any additional libraries (for example, Firebase) require their own rules to be added.
但是,我确实没有找到任何资源显示我需要将哪些语句附加到 proguard-rules.pro
。
我可以想象在 Auth 组件修复后其他 Firebase 组件会同样崩溃,所以我想知道 “例如 Firebase” 的含义是什么,即是否每个组件都有规则,或者如果我只需要为 Firebase 身份验证解决此问题。
最佳答案
包括
-keep class com.google.firebase.** { *; }
Proguard 为您提供了多项功能:删除死代码、通过将类成员和包名称重命名为短字符串来减少代码大小,并且通过重命名使代码更难阅读,从而进行逆向工程。
通过保持整个 com.google.firebase
树完好无损,您不会从尺寸减小中受益。我想在这种情况下混淆是无关紧要的,因为它是一个开源库。
您可以尝试仅保持
使用您使用的顶级 API 类(如果不阅读 firebase 插件实现,您可能无法分辨它们是什么)以减小大小,但是要尽可能减小 APK 大小需要做大量工作,并且可能会引入一些脆弱性。
不,它不是“最佳”,但它很简单。
关于android - Flutter 使用 ProGuard 和 Firebase Auth 构建崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51912130/