与Autovalue的Proguard

jid*_*vah 8 android proguard auto-value android-proguard

我刚开始使用AutoValue但我无法使用proguard.我有大约6000多个警告,看起来像这样

警告:autovalue.shaded.com.google.common.auto.common.MoreElements $ 1:找不到超类或接口javax.lang.model.util.SimpleElementVisitor6

实际错误显示了......

错误:任务':transformClassesAndResourcesWithProguardForDebug'的执行失败.java.io.IOException:请先纠正上面的警告.

我该如何解决这个问题?

vau*_*oid 12

修复

这是因为您已将库添加为compile项目的依赖项.像这样的东西:

dependencies {
    compile 'com.google.auto.value:auto-value:1.2'
}
Run Code Online (Sandbox Code Playgroud)

您需要使库成为provided依赖项:

dependencies {
    provided 'com.google.auto.value:auto-value:1.2'
}
Run Code Online (Sandbox Code Playgroud)

注意:providedAndroid Gradle插件提供配置.如果您在纯Java库模块中使用AutoValue,请使用Gradle 2.12中添加的compileOnly配置.

说明

AutoValue是一个为您生成代码的库.您与库本身的唯一交互应该通过@AutoValue注释来实现RetentionPolicy.SOURCE- 即它们仅在您的源代码中可用,而不是在编译的代码中.

这意味着您编译的代码与AutoValue库代码无关.因此,它不需要使用您的代码进行编译 - 这是ProGuard运行的代码.

  • 在使用`compileOnly`之后,我得到了同样的错误. (2认同)