web-dev-qa-db-ja.com

Explict Annotation Processorの設定

Android StudioプロジェクトにMavenリポジトリを追加しようとしています。 Gradleプロジェクトを同期すると、すべてが正常に同期されます。ただし、apkをビルドしようとすると、次のエラーが表示されます。

Execution failed for task ':app:javaPreCompileDebug'.
> Annotation processors must be explicitly declared now.  The following dependencies on 
the compile classpath are found to contain annotation processor.  Please add them to 
the annotationProcessor configuration.
 - classindex-3.3.jar
Alternatively, set Android.defaultConfig.javaCompileOptions.annotationProcessorOptions
.includeCompileClasspath = true to continue with previous behavior.  Note that this 
option is deprecated and will be removed in the future.
See https://developer.Android.com/r/tools/annotation-processor-error-message.html for more details.

リンクがエラー404に含まれていた( https://developer.Android.com/r/tools/annotation-processor-error-message.html )ので、助けにはなりません。

Androidスタジオの設定で注釈処理を有効にし、includeCompileClasspath = trueを注釈プロセッサオプションに追加しました。また、classindexclassindex-3.3classindex-3.3.jarをプロセッサーFQ名に追加しようとしましたが、それも助けにはなりませんでした。

これらは、依存関係の下でデフォルトのbuild.gradleに追加した行です。

dependencies {
    ...
    compile group: 'com.skadistats', name: 'clarity', version:'2.1.1'
    compile group: 'org.atteo.classindex', name: 'classindex', version:'3.3'
}

もともと私は「明快」なものを追加しました。それは私が気にするものだからですが、それが修正されることを期待して「classindex」エントリを追加しました。 「clarity」を削除して「classindex」を保持すると、まったく同じエラーが発生します。

私はgradle/mavenにあまり慣れていないので、どんな助けも感謝します。

53
wmrice

エラーを修正するには、それらの依存関係の構成を変更して、annotationProcessorを使用します。依存関係に、コンパイルクラスパス上にもある必要があるコンポーネントが含まれている場合、その依存関係をもう一度宣言し、コンパイル依存関係の構成を使用します。

例えば:

annotationProcessor 'com.jakewharton:butterknife:7.0.1'
compile 'com.jakewharton:butterknife:7.0.1'

このリンクでは、詳細を説明しています。 https://developer.Android.com/studio/preview/features/new-Android-plugin-migration.html#annotationProcessor_config

完全を期すために、関連するスニペットが含まれています。

注釈プロセッサの依存関係構成を使用する

Gradle用Androidプラグインの以前のバージョンでは、コンパイルクラスパスへの依存関係がプロセッサクラスパスに自動的に追加されました。つまり、コンパイルクラスパスに注釈プロセッサを追加すると、期待どおりに機能します。ただし、これは、プロセッサに多数の不要な依存関係を追加することにより、パフォーマンスに大きな影響を与えます。

新しいプラグインを使用する場合、以下に示すように、annotationProcessor依存関係構成を使用して、プロセッサクラスパスに注釈プロセッサを追加する必要があります。

依存関係{... annotationProcessor 'com.google.dagger:dagger-compiler:'}

プラグインは、JARファイルにMETA-INF/services/javax.annotation.processing.Processorファイルが含まれている場合、依存関係が注釈プロセッサであると想定します。プラグインがコンパイルクラスパスで注釈プロセッサを検出した場合、ビルドは失敗し、コンパイルクラスパスで各注釈プロセッサをリストするエラーメッセージが表示されます。エラーを修正するには、それらの依存関係の構成を変更して、annotationProcessorを使用します。依存関係に、コンパイルクラスパス上にもある必要があるコンポーネントが含まれている場合、その依存関係をもう一度宣言し、コンパイル依存関係の構成を使用します。

81
Snowman

同様のエラーが発生しました。 Googleリンクの指示に従いますが、機能します。

アプリのgradleファイルに次の手順を追加してみてください:

defaultConfig {
    applicationId "com.yourdomain.yourapp"
    minSdkVersion 17
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"

    javaCompileOptions {
        annotationProcessorOptions {
            includeCompileClasspath false
        }
    }
}

-> includeCompileClasspathへの注意false

33
luizMello

このコードをGradleアプリに追加してください

defaultConfig{
    javaCompileOptions {
        annotationProcessorOptions {
            includeCompileClasspath true
        }
    }
}

ここで解決策が見つかりました https://github.com/JakeWharton/butterknife/issues/908

21

注釈プロセッサでバターナイフを更新するだけです

compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

私はそれがあなたを助けることを願っています

11
Mohamed Hussien

これをdefaultConfigに追加します

Android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true

3
Tushar Ahmed

Build.gradle(モジュールアプリ)

  1. プラグインを適用します。

     apply plugin: 'com.jakewharton.butterknife'
    
  2. 依存関係セクションに次の行を追加します。

     annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0'
     implementation 'com.jakewharton:butterknife:8.7.0'
    

build.gradle(Project:projectName)で、次のような依存関係にclassPathを追加します。

    classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'

この問題は修正されます。そうでない場合は、mavenを追加します。

 maven {
 url 'https://maven.google.com'
 }
2
yahme3

必要のない注釈プロセッサを含むコンパイルクラスパスに依存関係がある場合は、build.gradleファイルに次を追加してエラーチェックを無効にできます。コンパイルクラスパスに追加した注釈プロセッサは、プロセッサクラスパスには追加されないことに注意してください。

 Android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath false
            }
        }
    }
}

新しい依存関係解決戦略への移行で問題が発生した場合、includeCompileClasspathをtrueに設定することで、Androidプラグイン2.3.0の動作に復元できます。ただし、動作をバージョン2.3.0に復元することはお勧めできません。復元するオプションは将来のアップデートで削除される予定です。

こちらをご覧ください https://developer.Android.com/r/tools/annotation-processor-error-message.html 詳細

0
Mohsin Bagwan

上記の回答でうまくいかない場合は、特にAndroid Studio 3.0.1の新しい更新のために、次のステップも追加します。

Android Studio 3.0.1:

これを依存関係のapp.gradleファイルに追加します。

classpath 'com.neenbedankt.gradle.plugins:Android-apt:1.8'
0
Shahid Aslam

プラグインの以前のバージョンでは、コンパイルクラスパスへの依存関係がプロセッサクラスパスに自動的に追加されていました。つまり、コンパイルクラスパスに注釈プロセッサを追加すると、期待どおりに機能します。ただし、これは、プロセッサに多数の不要な依存関係を追加することにより、パフォーマンスに大きな影響を与えます。

Androidプラグイン3.0.0を使用する場合、以下に示すように、annotationProcessor依存関係構成を使用して、プロセッサクラスパスに注釈プロセッサを追加する必要があります。

dependencies { ... annotationProcessor 'com.google.dagger:dagger-compiler:<version-number>' implementation 'com.google.dagger:dagger-compiler:<version-number>' }

0
Scott