4

尝试创建我的 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 仅build.gradle作为 annotationProcessor 包含在我的文件中,所以我不明白为什么它甚至被 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 来删除未使用的代码而不执行任何混淆。

4

2 回答 2

1
// Auto factory for Assisted Injection
annotationProcessor "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"
provided "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"
于 2017-11-02T03:26:12.567 回答
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在最初尝试解决此问题时输入了错误的名称空间。

于 2017-11-14T15:08:25.413 回答