Android上的Firebase需要什么ProGuard配置? [英] What ProGuard configuration do I need for Firebase on Android?
问题描述
使用适用于Android应用的 Firebase SDK时,我不断收到类似下面的警告和错误(在Eclipse中):
警告...找不到引用的类...
警告:有未解析的对类或接口的引用...
您可能需要指定额外的库jar(使用'-libraryjars')...
不幸的是,Firebase没有任何有关ProGuard使用的官方文档。
当我的应用程序使用Firebase成功编译版本时,需要什么指令使用ProGuard进行混淆?
基于我的个人测试,结果发现Firebase增强的Android应用使用ProGuard进行编译。
无论如何,您必须添加 -keepnames class com.my.package.beans。** {*; }
如果您在Firebase中使用自定义对象,即bean或POJO。
$ b
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。**
#只有在您直接下载SDK jar而不是maven时才需要。
-keep class com.shaded.fasterxml.jackson。** {*; }
最后的手段:
-keep class!com.my.package。** {*; }
注意:
任何官方指引将受到欢迎。 -dontwarn
指令显然是危险的,代码可能在我没有测试的地方断开。此外,上述规则是相当宽容的,其他规则可能会更好地优化您的APK。
When using the Firebase SDK for Android apps, I keep getting warnings and errors like these (in 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') ...
Unfortunately, Firebase doesn't have any official documentation about its use with ProGuard.
What directives do I need for my apps to successfully compile releases with Firebase when obfuscated with ProGuard?
Based on my personal tests, it turned out something along these lines is necessary for Firebase-enhanced Android apps to compile with ProGuard.
In any case, you have to add -keepnames class com.my.package.beans.** { *; }
if you are using custom objects in your Firebase, i.e. beans or POJOs.
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.** { *; }
Last resort:
-keep class !com.my.package.** { *; }
Notes:
Any official guideline would be welcome. The -dontwarn
directives are obviously dangerous, code may break at points that I have not tested. Furthermore, the above rules are quite permissive and other rules may better optimize your APKs.
这篇关于Android上的Firebase需要什么ProGuard配置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!