当我试图创建一个阻止构建成功完成的Android项目发布时,我收到了一个ProGuard警告。
警告:库类com.google.googlejavaformat.java.filer.FormattingJavaFileObject$1$1扩展或实现了程序类com.google.common.io.CharSink
在稍微挖掘和运行了gradlew :app:dependencies之后,我发现google-java格式已经被包含了,因为它被AutoFactory使用了,它最近被添加到了项目中。
+--- com.google.auto.factory:auto-factory:1.0-beta5
| +--- com.google.auto:auto-common:0.6 (*)
| +--- com.google.auto.value:auto-value:1.1 -> 1.3
| +--- com.google.googlejavaformat:google-java-format:1.1AutoFactory只作为一个annotationProcessor包含在我的build.gradle文件中,所以我不明白为什么ProGuard会处理它。
provided "com.google.auto.factory:auto-factory:1.0-beta5"
annotationProcessor "com.google.auto.factory:auto-factory:1.0-beta5"我尝试将一个-dontwarn com.google.gooogleformat.**添加到我的ProGuard配置文件中,指出库只在代码生成过程中使用,而实际上并不是发行版所必需的。这没有效果。
我还查看了在线帮助,但不清楚如何按照建议将该依赖项指定为-libraryjars文件。
如何配置应用程序的ProGuard配置文件或build.gradle文件以防止ProGuard被此库阻塞?如果这很重要,我只是使用ProGuard删除未使用的代码,而不执行任何混淆操作。
发布于 2017-11-14 15:08:25
在使用Android3.0.0 Gradle插件和Gradle 4.1升级到AndroidStudio3.0之后,我们重新讨论了这个问题。现在看来,在proguard-rules.pro中添加以下内容可以解决这个问题:
-dontwarn com.google.googlejavaformat.**
-dontwarn com.google.common.**考虑到我最初的问题,似乎在最初试图解决这个问题时,我们可能将名称空间错误地输入为com.google.googlejavaformat。
发布于 2017-11-02 03:26:12
// Auto factory for Assisted Injection
annotationProcessor "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"
provided "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"https://stackoverflow.com/questions/46438502
复制相似问题