Настройка обработчика аннотаций

Я пытаюсь добавить репозиторий 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 (приложение модуля)

  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'
 }

Ответ 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>' }