android - Android 上的 Firebase 需要什么 ProGuard 配置?

标签 android firebase proguard

使用 Firebase 时适用于 Android 应用程序的 SDK,我不断收到此类警告和错误(在 Eclipse 中):

Warning ... can't find referenced class ...
Warning: there were ... unresolved references to classes or interfaces ...
You may need to specify additional library jars (using '-libraryjars') ...

很遗憾,Firebase 没有任何关于其与 ProGuard 一起使用的官方文档。

在使用 ProGuard 进行混淆时,我的应用需要哪些指令才能使用 Firebase 成功编译版本?

最佳答案

根据我的个人测试,事实证明,使用 ProGuard 编译 Firebase 增强的 Android 应用程序需要遵循这些原则。

无论如何,你必须添加 -keepnames class com.my.package.beans.** { *; } 如果您在 Firebase 中使用自定义对象,即 bean 或 POJO。

Firebase SDK 1.0.18:

-keepnames class com.firebase.** { *; }
-keepnames class com.shaded.fasterxml.jackson.** { *; }
-keepnames class org.shaded.apache.** { *; }
-keepnames class javax.servlet.** { *; }
-dontwarn org.w3c.dom.**
-dontwarn org.joda.time.**
-dontwarn org.shaded.apache.commons.logging.impl.**

Firebase SDK 1.1.1:

-keep class com.firebase.** { *; }
-keep class org.shaded.apache.** { *; }
-keepnames class com.shaded.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.w3c.dom.**
-dontwarn org.joda.time.**
-dontwarn org.shaded.apache.**
-dontwarn org.ietf.jgss.**

Firebase SDK 2.0.0:

-keep class com.firebase.** { *; }
-keep class org.apache.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.w3c.dom.**
-dontwarn org.joda.time.**
-dontwarn org.shaded.apache.**
-dontwarn org.ietf.jgss.**

# Only necessary if you downloaded the SDK jar directly instead of from maven.
-keep class com.shaded.fasterxml.jackson.** { *; }

不得已:

-keep class !com.my.package.** { *; }

注意事项:

欢迎任何官方指南。 -dontwarn 指令显然很危险,代码可能会在我没有测试过的地方中断。此外,上述规则相当宽松,其他规则可能会更好地优化您的 APK。

关于android - Android 上的 Firebase 需要什么 ProGuard 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26273929/

相关文章:

java - 使用 NDK 应用在 gradle 中不起作用的插件

android - 如何在 Android 上使用混淆(使用 ProGuard)应用程序进行调试?

maven - ProGuard + Spring Boot + Maven 插件

java - Android-如何消除这些gradle/proguard警告?

android - ./gradlew assembleRelease 更新以将 native 59.8 和 gradle react 为 5.1 时构建失败

java - 在操作栏中添加第二个按钮

android - 我需要你的帮助,让 android studio 解决 gradle 错误

javascript - 有没有办法为 Firebase 设置密码强度?

javascript - 如何从密码字段中隐藏除一个字符以外的所有字符

android - 使用 jni 包装 C++ 库