8

AutoValue を使い始めたばかりですが、proguard で機能させることができません。このような約6000以上の警告があります

警告:autovalue.shaded.com.google.common.auto.common.MoreElements$1: スーパークラスまたはインターフェース javax.lang.model.util.SimpleElementVisitor6 が見つかりません

実際のエラーはこれを示しています...

エラー: タスク ':transformClassesAndResourcesWithProguardForDebug' の実行に失敗しました。java.io.IOException: 最初に上記の警告を修正してください。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

12

修正

compileこれは、プロジェクトの依存関係としてライブラリを追加したために発生しています。このようなもの:

dependencies {
    compile 'com.google.auto.value:auto-value:1.2'
}

providedライブラリを依存関係にする必要があります。

dependencies {
    provided 'com.google.auto.value:auto-value:1.2'
}

注:provided構成は、Android Gradle プラグインによって利用可能になります。Pure Java ライブラリ モジュールで AutoValue を使用している場合は、Gradle 2.12 で追加されたcompileOnly構成を使用します。

説明

AutoValue は、コードを生成するライブラリです。ライブラリ自体とのやり取りは、@AutoValue注釈を介して行う必要RetentionPolicy.SOURCEがあります。つまり、コンパイルされたコードではなく、ソース コードでのみ使用できます。

これは、コンパイルされたコードが AutoValue ライブラリ コードにまったく接続されていないことを意味します。そのため、ProGuard が実行されるコードであるコードでコンパイルする必要はありません。

于 2016-07-08T10:50:27.087 に答える