使用带有 Firebase 身份验证的 ProGuard 构建 Flutter 崩溃
Posted
技术标签:
【中文标题】使用带有 Firebase 身份验证的 ProGuard 构建 Flutter 崩溃【英文标题】:Flutter build crashes using ProGuard with Firebase Auth 【发布时间】:2019-01-25 11:37:51 【问题描述】:我关注了these instructions on adding ProGuard to Flutter,现在在启动应用程序时看到了这个异常:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/auth/internal/zzae;
这显然与 Firebase Auth 有关。上述说明还说明了以下内容:
任何其他库(例如 Firebase)都需要添加自己的规则。
但是,我确实没有找到任何资源显示我需要将哪些语句附加到proguard-rules.pro
。
我可以想象其他 Firebase 组件在 Auth 组件修复后也会类似崩溃,所以我想知道 “例如 Firebase” 的含义是什么,即是否每个组件都有规则,或者如果我只需要为 Firebase 身份验证解决此问题。
【问题讨论】:
你可以试试-keep class com.google.firebase.** *;
试试com.google.android.**
@RichardHeap 谢谢,现在这工作正常。我想知道是否有一个更优化的解决方案。
【参考方案1】:
包括
-keep class com.google.firebase.** *;
Proguard 为您提供了几个功能:删除死代码、通过将类成员和包名称重命名为短字符串来减少代码大小,并且通过重命名使代码更难阅读,从而进行逆向工程。
通过保持整个 com.google.firebase
树完好无损,您不会从尺寸减小中受益。我想在这种情况下混淆是无关紧要的,因为它是一个开源库。
您可以尝试只使用keep
ing 您使用的*** API 类(如果不阅读 firebase 插件实现,您可能无法分辨它们是什么)以实现尺寸减小,但这是很多工作以实现可能的 APK 大小减小,并且可能会引入一些脆弱性。
不,它不是“最佳”,但它很简单。
【讨论】:
以上是关于使用带有 Firebase 身份验证的 ProGuard 构建 Flutter 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
带有 WebView 的 Flutter 应用中的 Firebase 身份验证
带有 Firebase 身份验证的 Nuxt s-s-r 身份验证防护
使用带有 Firebase 身份验证的 ProGuard 构建 Flutter 崩溃
使用带有 Redux 和 Firebase 身份验证的 React-Navigation v5