使用 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/