Android数据绑定和Guava之间的冲突导致ProGuard错误

时间:2016-02-18 03:13:06

标签: android android-gradle proguard

在启用ProGuard的情况下编译我的Android应用时出现以下错误。

Warning: library class android.databinding.tool.util.SourceCodeEscapers$1 
    extends or implements program class com.google.common.escape.CharEscaper
Warning: library class android.databinding.tool.util.SourceCodeEscapers$JavaCharEscaper 
    extends or implements program class com.google.common.escape.ArrayBasedCharEscaper
Warning: library class android.databinding.tool.util.SourceCodeEscapers$JavaCharEscaperWithOctal 
    extends or implements program class com.google.common.escape.ArrayBasedCharEscaper
Warning: there were 3 instances of library classes depending on program classes.
         You must avoid such dependencies, since the program classes will
         be processed, while the library classes will remain unchanged.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#dependency)

这似乎是由Android data binding和番石榴之间的冲突引起的。我的应用程序依赖于Guava(com.google.guava:guava:18.0)并启用了数据绑定。它appears数据绑定对Guava有某种内部依赖,导致ProGuard出现问题。

我正在运行最新的gradle测试版(2.0.0-beta5),所以问题可能与此有关。

1 个答案:

答案 0 :(得分:13)

所以我可以通过将它添加到proguard来构建: -dontwarn android.databinding.** -keep class android.databinding.** { *; }

我认为完全没有理由忽略这些课程,但我认为我们可能只需要等待谷歌的更新。将它添加到proguard之后我能够构建一个版本apk但是它崩溃了,我认为它仍然是proguard但在我的代码中发现了其他错误。