我在尝试创建阻止构建成功完成的 Android 项目版本时收到 ProGuard 警告。
Warning: library class com.google.googlejavaformat.java.filer.FormattingJavaFileObject$1$1 extends or implements program class 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 配置文件中,以确保该库仅在代码生成期间使用,实际上并不需要发布。这没有效果。
我还查看了 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}"
关于java - 如何从 ProGuard 中排除注解处理器依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46438502/