it-swarm.com.ru

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

Я пытаюсь добавить репозиторий 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 ) в ошибку 404, так что это не поможет. 

Я включил обработку аннотаций в настройках студии Android и добавил includeCompileClasspath = true к своим параметрам процессора аннотаций. Я также попытался добавить classindex, classindex-3.3 и classindex-3.3.jar к FQ Name процессора, но это тоже не помогло.

это строки, которые я добавил в build.gradle по умолчанию в зависимости:

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, поэтому любая помощь будет оценена.

50
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

Соответствующий фрагмент включен для полноты.

Используйте конфигурацию зависимостей процессора аннотаций

В предыдущих версиях плагина Android для Gradle, зависимости от путь к классу компиляции был автоматически добавлен в процессор CLASSPATH. То есть вы можете добавить процессор аннотаций к скомпилируйте classpath и он будет работать как положено. Однако это вызывает значительное влияние на производительность, добавив большое количество ненужные зависимости от процессора.

При использовании нового плагина процессоры аннотаций должны быть добавлены к путь к классу процессора с использованием зависимости annotationProcessor Конфигурация, как показано ниже:

зависимости { ... annotationProcessor 'com.google.dagger: dagger-compiler:'}

Плагин предполагает, что зависимость - это процессор аннотаций, если его JAR файл содержит следующий файл: META - INF/услуги/javax.annotation.processing.Processor. Если плагин обнаруживает процессоры аннотаций в пути к классам компиляции, в вашей сборке не удается, и вы получаете сообщение об ошибке, в котором перечислены все аннотации процессор на пути к классам компиляции. Чтобы исправить ошибку, просто измените конфигурация этих зависимостей для использования annotationProcessor. Если зависимость включает компоненты, которые также должны быть в компиляции classpath, объявите эту зависимость во второй раз и используйте компиляцию конфигурация зависимостей.

78
Snowman

Я был с похожей ошибкой. Я следую инструкциям по ссылке Google, и это работает.

попробуйте добавить следующие инструкции в файл gradle вашего приложения:

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

    javaCompileOptions {
        annotationProcessorOptions {
            includeCompileClasspath false
        }
    }
}

Внимание -> includeCompileClasspath false

28
luizMello

Добавьте этот код в ваше приложение Gradle

defaultConfig{
    javaCompileOptions {
        annotationProcessorOptions {
            includeCompileClasspath true
        }
    }
}

Я нашел решение здесь https://github.com/JakeWharton/butterknife/issues/908

20
Amirouche Zeggagh

Просто обновите свой нож для масла с процессором аннотации

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

Если у вас возникли проблемы при переходе на новую стратегию разрешения зависимостей, вы можете восстановить поведение плагина Android 2.3.0, установив для параметра includeCompileClasspath значение true. Однако восстановление поведения до версии 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