我刚开始使用AutoValue,但我无法使用proguard。我有大约6000多个警告,看起来像这样
警告:autovalue.shaded.com.google.common.auto.common.MoreElements $ 1:无法找到超类或接口javax.lang.model.util.SimpleElementVisitor6
实际错误显示了这个......
错误:任务执行失败 ':transformClassesAndResourcesWithProguardForDebug&#39 ;. java.io.IOException:请先纠正上述警告。
我该如何解决这个问题?
答案 0 :(得分:12)
这是因为您已将库添加为项目的compile
依赖项。像这样:
dependencies {
compile 'com.google.auto.value:auto-value:1.2'
}
您需要使库成为provided
依赖项:
dependencies {
provided 'com.google.auto.value:auto-value:1.2'
}
注意:Android Gradle插件提供provided
配置。如果您在纯Java库模块中使用AutoValue,请使用Gradle 2.12中添加的compileOnly配置。
AutoValue是一个为您生成代码的库。您与库本身的唯一交互应该通过@AutoValue
注释,RetentionPolicy.SOURCE
注释 - 即它们仅在源代码中可用,而不在编译代码中。
这意味着您编译的代码与AutoValue库代码无关。因此,它不需要使用您的代码进行编译 - 这是ProGuard运行的代码。