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
を注釈プロセッサオプションに追加しました。また、classindex
、classindex-3.3
、classindex-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にあまり慣れていないので、どんな助けも感謝します。
エラーを修正するには、それらの依存関係の構成を変更して、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を使用します。依存関係に、コンパイルクラスパス上にもある必要があるコンポーネントが含まれている場合、その依存関係をもう一度宣言し、コンパイル依存関係の構成を使用します。
同様のエラーが発生しました。 Googleリンクの指示に従いますが、機能します。
アプリのgradleファイルに次の手順を追加してみてください:
defaultConfig {
applicationId "com.yourdomain.yourapp"
minSdkVersion 17
targetSdkVersion 25
versionCode 1
versionName "1.0"
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath false
}
}
}
-> includeCompileClasspathへの注意false
このコードをGradleアプリに追加してください
defaultConfig{
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
}
}
}
ここで解決策が見つかりました https://github.com/JakeWharton/butterknife/issues/908
注釈プロセッサでバターナイフを更新するだけです
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
私はそれがあなたを助けることを願っています
これをdefaultConfig
に追加します
Android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true
Build.gradle(モジュールアプリ)
プラグインを適用します。
apply plugin: 'com.jakewharton.butterknife'
依存関係セクションに次の行を追加します。
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'
}
必要のない注釈プロセッサを含むコンパイルクラスパスに依存関係がある場合は、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 詳細
上記の回答でうまくいかない場合は、特にAndroid Studio 3.0.1の新しい更新のために、次のステップも追加します。
Android Studio 3.0.1:
これを依存関係のapp.gradleファイルに追加します。
classpath 'com.neenbedankt.gradle.plugins:Android-apt:1.8'
プラグインの以前のバージョンでは、コンパイルクラスパスへの依存関係がプロセッサクラスパスに自動的に追加されていました。つまり、コンパイルクラスパスに注釈プロセッサを追加すると、期待どおりに機能します。ただし、これは、プロセッサに多数の不要な依存関係を追加することにより、パフォーマンスに大きな影響を与えます。
Androidプラグイン3.0.0を使用する場合、以下に示すように、annotationProcessor依存関係構成を使用して、プロセッサクラスパスに注釈プロセッサを追加する必要があります。
dependencies { ... annotationProcessor 'com.google.dagger:dagger-compiler:<version-number>' implementation 'com.google.dagger:dagger-compiler:<version-number>' }