如何从 ProGuard 中排除注解处理器依赖
How to exclude an annotation processor dependency from ProGuard
我在尝试创建我的 Android 项目的版本时收到 ProGuard 警告,阻止构建成功完成。
Warning: library class com.google.googlejavaformat.java.filer.FormattingJavaFileObject extends or implements program class com.google.common.io.CharSink
经过一些挖掘和 运行 gradlew :app:dependencies
,我发现 google-java-format has been included because it is used by 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 仅作为注释处理器包含在我的 build.gradle
文件中,所以我不明白为什么它甚至被 ProGuard 处理。
provided "com.google.auto.factory:auto-factory:1.0-beta5"
annotationProcessor "com.google.auto.factory:auto-factory:1.0-beta5"
我尝试在我的 ProGuard 配置文件中添加一个 -dontwarn com.google.gooogleformat.**
来确定该库仅在代码生成期间使用,实际上并不需要发布。这没有效果。
我也查看了 online help,但我不清楚如何按照建议将此依赖项指定为 -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
的命名空间。
我在尝试创建我的 Android 项目的版本时收到 ProGuard 警告,阻止构建成功完成。
Warning: library class com.google.googlejavaformat.java.filer.FormattingJavaFileObject extends or implements program class com.google.common.io.CharSink
经过一些挖掘和 运行 gradlew :app:dependencies
,我发现 google-java-format has been included because it is used by 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 仅作为注释处理器包含在我的 build.gradle
文件中,所以我不明白为什么它甚至被 ProGuard 处理。
provided "com.google.auto.factory:auto-factory:1.0-beta5"
annotationProcessor "com.google.auto.factory:auto-factory:1.0-beta5"
我尝试在我的 ProGuard 配置文件中添加一个 -dontwarn com.google.gooogleformat.**
来确定该库仅在代码生成期间使用,实际上并不需要发布。这没有效果。
我也查看了 online help,但我不清楚如何按照建议将此依赖项指定为 -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
的命名空间。