繁体   English   中英

如何从ProGuard中排除注释处理器依赖项

[英]How to exclude an annotation processor dependency from ProGuard

在尝试创建我的Android项目版本时,我收到了ProGuard警告,该版本阻止了构建成功完成。

警告:库类com.google.googlejavaformat.java.filer.FormattingJavaFileObject $ 1 $ 1扩展或实现程序类com.google.common.io.CharSink

经过一些挖掘和运行gradlew :app:dependencies ,我发现已经包含了google-java-format,因为它最近被添加到项目中的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.1

AutoFactory只作为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删除未使用的代码而不执行任何混淆。

// Auto factory for Assisted Injection
annotationProcessor "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"
provided "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"

在使用Android 3.0.0 Gradle插件和Gradle 4.1升级到Android Studio 3.0后,我们重新审视了此问题。 现在看来,将以下内容添加到proguard-rules.pro可以解决问题:

-dontwarn com.google.googlejavaformat.**
-dontwarn com.google.common.**

看看我原来的问题,我们可能会在最初尝试解决此问题时错误地输入com.google.googlejavaformat的命名空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM