android - Flutter 使用 ProGuard 和 Firebase Auth 构建崩溃

标签 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 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/

相关文章:

Android : java. lang.NoSuchMethodError : org. apache.commons.codec.binary.Base64.encodeBase64String in android

java - 使用 android 软键盘更改键入的字符

javascript - 世博会: "auth/operation-not-supported-in-this-enviroment"

java - 获取巨大的 Firebase 访问 token

android - 如何通过在android中编辑文本来搜索 ListView 项

Android:操作栏中的动画不适用于异步任务

java - 将多节点 ArrayList 添加到 Firebase 实时数据库

swift - 如何快速从 Firebase 中获取子项计数?

swift - 如何在 Firebase 上查询带有时间戳的项目?

javascript - AngularJS 中的奇怪重定向