Настройка обработчика аннотаций
Я пытаюсь добавить репозиторий maven в свой проект Android Studio. Когда я выполняю синхронизацию проекта 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.
Ссылка включала (https://developer.android.com/r/tools/annotation-processor-error-message.html) в ошибке 404s, поэтому без помощи.
Я включил обработку аннотаций в настройках студии android и добавил includeCompileClasspath = true
в мои параметры обработчика аннотации. Я также попытался добавить classindex
, classindex-3.3
и classindex-3.3.jar
в имя FQ процессора, но это тоже не помогло.
это строки, которые я добавил к умолчанию build.gradle под dependecies:
dependencies {
...
compile group: 'com.skadistats', name: 'clarity', version:'2.1.1'
compile group: 'org.atteo.classindex', name: 'classindex', version:'3.3'
}
Первоначально я просто добавил "ясность", потому что это тот, о котором я забочусь, но я добавил запись "classindex" в надежде, что он ее исправит. Удаление "ясности" и сохранение "classindex" дает мне такую же ошибку.
Я не слишком хорошо знаком с gradle/maven, поэтому любая помощь будет оценена.
Ответы
Ответ 1
Чтобы исправить ошибку, просто измените конфигурацию этих зависимостей на использование 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
Соответствующий фрагмент включен для полноты.
Использовать конфигурацию зависимостей процессора аннотаций
В предыдущих версиях Android-плагина для Gradle зависимости от класса компиляции были автоматически добавлены в путь класса процессора. То есть вы могли бы добавить обработчик аннотации к пути класса компиляции, и он будет работать так, как ожидалось. Однако это существенно влияет на производительность, добавляя к процессору большое количество ненужных зависимостей.
При использовании нового плагина в процессорный путь класса необходимо добавить обработчики аннотации, используя конфигурацию зависимостей annotationProcessor, как показано ниже:
зависимостей {... annotationProcessor 'com.google.dagger: dagger-compiler:'}
Плагин предполагает, что зависимость - это обработчик аннотации, если его файл JAR содержит следующий файл: META- INF/services/javax.annotation.processing.Processor. Если плагин обнаруживает обработчики аннотаций в пути к компиляции, ваша сборка выходит из строя, и вы получаете сообщение об ошибке, в котором перечисляются каждый обработчик аннотации в пути к компиляции. Чтобы исправить ошибку, просто измените конфигурацию этих зависимостей на использование annotationProcessor. Если зависимость включает компоненты, которые также должны находиться в пути к компиляции, объявите эту зависимость второй раз и используйте конфигурацию зависимостей компиляции.
Ответ 2
У меня была аналогичная ошибка. Я следую инструкциям по ссылке Google, и это работает.
попробуйте добавить следующие инструкции в файл приложения gradle:
defaultConfig {
applicationId "com.yourdomain.yourapp"
minSdkVersion 17
targetSdkVersion 25
versionCode 1
versionName "1.0"
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath false
}
}
}
Внимание → includeCompileClasspath false
Ответ 3
Добавьте этот код в свое приложение gradle
defaultConfig{
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
}
}
}
Я нашел решение здесь https://github.com/JakeWharton/butterknife/issues/908
Ответ 4
Просто обновите свой нож для масла с помощью процессора обработки аннотаций
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
я надеюсь, что это поможет вам
Ответ 5
В 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'
}
Ответ 6
Добавьте это в defaultConfig
android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true
Ответ 7
Если у вас есть зависимости от пути класса компиляции, в котором нет обработчиков аннотаций, вам не нужно, вы можете отключить проверку ошибок, добавив следующее в свой файл build.gradle. Имейте в виду, что обработчики аннотаций, которые вы добавляете в путь к компиляции, по-прежнему не добавляются в путь класса процессора.
android {
...
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath false
}
}
}
}
Если у вас возникли проблемы с переносом на новую стратегию разрешения зависимостей, вы можете восстановить поведение по сравнению с Android-плагином 2.3.0, установив includeCompileClasspath true. Тем не менее, восстановление поведения версии 2.3.0 не рекомендуется, и опция для этого будет удалена в будущем обновлении.
См. Здесь https://developer.android.com/r/tools/annotation-processor-error-message.html для получения более подробной информации.
Ответ 8
Если ничего не работает из вышеперечисленных ответов, добавьте еще один шаг, специально для нового обновления Android Studio 3.0.1:
Android Studio 3.0.1:
Добавьте это в свой файл app.gradle в зависимости:
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
Ответ 9
В предыдущих версиях плагина зависимости к пути класса компиляции автоматически добавлялись к пути класса процессора. То есть вы могли бы добавить обработчик аннотации к пути класса компиляции, и он будет работать так, как ожидалось. Однако это существенно влияет на производительность, добавляя к процессору большое количество ненужных зависимостей.
При использовании плагина Android 3.0.0 вы должны добавить обработчики аннотаций к пути класса процессора, используя конфигурацию зависимостей annotationProcessor, как показано ниже:
dependencies {... annotationProcessor 'com.google.dagger:dagger-compiler:<version-number>' implementation 'com.google.dagger:dagger-compiler:<version-number>' }