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

8

我在启用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 数据绑定 和Guava之间的冲突引起的。我的应用程序依赖于Guava(com.google.guava:guava:18.0)并启用了数据绑定。似乎数据绑定对Guava有某种内部依赖,这导致了ProGuard的问题。
我正在运行最新的gradle beta版本(2.0.0-beta5),所以问题可能与此相关。

1
我遇到了完全相同的问题!!!与上述相同的日志输出,使用相同版本的Gradle。非常令人沮丧。 - Brando Madden
1个回答

13

因此,我通过将以下内容添加到proguard中来构建:

-dontwarn android.databinding.** -keep class android.databinding.** { *; }

我认为这并不完全是正确的解决方案,只是忽略那些类,但我认为我们可能需要等待Google的更新。在将其添加到proguard后,我能够构建一个发布的apk,但它会崩溃,我以为这仍然是proguard的问题,但在我的代码中发现了其他错误。


2
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Jade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接