【问题标题】:Conflict between Android data binding and Guava causes ProGuard errorAndroid数据绑定和Guava冲突导致ProGuard报错
【发布时间】:2016-02-18 03:13:05
【问题描述】:

在启用 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 之间的冲突引起的。我的应用程序依赖于 Guava (com.google.guava:guava:18.0) 并启用了数据绑定。 appears 数据绑定对 Guava 有某种内部依赖,这导致 ProGuard 出现问题。

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

【问题讨论】:

  • 我遇到了同样的问题!!!!与上面相同的日志输出并使用相同版本的 gradle。好郁闷

标签: android android-gradle-plugin proguard


【解决方案1】:

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

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

【讨论】:

  • 我只需将-dontwarn android.databinding.tool.util.** 添加到我的 ProGuard 文件中即可。
猜你喜欢
  • 2017-06-17
  • 2016-11-05
  • 2016-02-08
  • 2017-05-24
  • 2016-12-31
  • 2015-04-19
  • 2012-05-24
  • 2019-10-29
  • 1970-01-01
相关资源
最近更新 更多