在启用 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之间的冲突造成的数据绑定 http://developer.android.com/tools/data-binding/guide.html和番石榴。我的应用程序依赖于 Guava (com.google.guava:guava:18.0) 并启用了数据绑定。它appears https://code.google.com/p/android/issues/detail?id=177343数据绑定对 Guava 有某种内部依赖,这导致了 ProGuard 的问题。
我正在运行最新的 gradle beta 版本(2.0.0-beta5),所以问题可能与此有关。
所以我可以通过将其添加到 proguard 来构建:
-dontwarn android.databinding.**
-keep class android.databinding.** { *; }
我认为忽略这些类并不完全是正确的解决方案,但我认为我们可能只需要等待谷歌的更新。将其添加到 proguard 后,我能够构建一个发布 apk,但它崩溃了,我认为它仍然是 proguard,但在我的代码中发现了其他错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)