program story

Explict Annotation Processor 설정

inputbox 2020. 12. 14. 08:08
반응형

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.

링크 ( https://developer.android.com/r/tools/annotation-processor-error-message.html )가 오류 404에 포함되어 있으므로 도움이되지 않습니다.

Android 스튜디오 설정에서 주석 처리를 활성화 includeCompileClasspath = true하고 주석 처리기 옵션에 추가 했습니다. 또한 classindex, classindex-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"항목을 추가했습니다. "명확성"을 제거하고 "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
        }
    }
}

I found the solution here https://github.com/JakeWharton/butterknife/issues/908


Simply update your butter knife with Annotation processor

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

i hope it's help you


Add this in defaultConfig

android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true


In the build.gradle(module app)

  1. apply the plugin:

     apply plugin: 'com.jakewharton.butterknife'
    
  2. Add the following lines in the dependencies section:

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

in the build.gradle(Project:projectName), add the classPath in the dependencies like this :

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

It will fix this issue. In case if not then add maven:

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

If you have dependencies on the compile classpath that include annotation processors you don't need, you can disable the error check by adding the following to your build.gradle file. Keep in mind, the annotation processors you add to the compile classpath are still not added to the processor classpath.

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

If you are experiencing issues migrating to the new dependency resolution strategy, you can restore behavior to that of Android plugin 2.3.0 by setting includeCompileClasspath true. However, restoring behavior to version 2.3.0 is not recommended, and the option to do so will be removed in a future update.

See here https://developer.android.com/r/tools/annotation-processor-error-message.html for more details


If nothing works from above answers add following step as well, specially for new update of Android Studio 3.0.1:

Android Studio 3.0.1:

Add this to your app.gradle file in dependencies:

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

In previous versions of the plugin, dependencies on the compile classpath were automatically added to the processor classpath. That is, you could add an annotation processor to the compile classpath and it would work as expected. However, this causes a significant impact to performance by adding a large number of unnecessary dependencies to the processor.

When using the Android plugin 3.0.0, you must add annotation processors to the processor classpath using the annotationProcessor dependency configuration, as shown below:

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

참고URL : https://stackoverflow.com/questions/42993587/setting-explict-annotation-processor

반응형