我在尝试创建Android项目版本时收到了ProGuard警告,该版本阻止了构建成功完成。
警告:库类com.google.googlejavaformat.java.filer.FormattingJavaFileObject $ 1 $ 1扩展或实现程序类com.google.common.io.CharSink
经过一番挖掘并运行gradlew :app:dependencies
后,我发现google-java-format已被包含在内,因为AutoFactory使用了online help,最近已将其添加到项目中。
+--- 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"
我尝试在我的ProGuard配置文件中添加-dontwarn com.google.gooogleformat.**
,确定该库仅在代码生成期间使用,并且实际上并不需要发布。这没有效果。
我还查看了https://gist.github.com/rajeevprasanna/8d4f193bc328f2c2d48e113960fb25a6,但我还不清楚如何将此依赖项指定为-libraryjars
文件。
如何配置应用程序的ProGuard配置文件或其build.gradle
文件,以防止ProGuard对此库造成阻塞?如果重要,我只是使用ProGuard删除未使用的代码而不执行任何混淆。
答案 0 :(得分:1)
// Auto factory for Assisted Injection
annotationProcessor "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"
provided "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"
答案 1 :(得分:1)
我们在使用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
的命名空间。