2017-03-24 17 views
27

Próbuję dodać repozytorium maven do mojego projektu Android Studio. Kiedy robię synchronizację projektu Gradle, wszystko jest w porządku. Jednak, gdy staram się budować mój apk, otrzymuję ten błąd:Ustawienie Explict procesor adnotacji

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. 

Link wliczone (https://developer.android.com/r/tools/annotation-processor-error-message.html) na błędy 404 błędów, więc jej nie pomoże.

Mam włączone przetwarzanie adnotacji w ustawieniach studia Android i dodałem includeCompileClasspath = true do moich opcji procesora adnotacji. Próbowałem również dodać classindex, classindex-3.3 i classindex-3.3.jar do nazwy procesora FQ, ale to też nie pomogło.

są to linie Dodałem do domyślnej build.gradle pod dependecies:

dependencies { 
    ... 
    compile group: 'com.skadistats', name: 'clarity', version:'2.1.1' 
    compile group: 'org.atteo.classindex', name: 'classindex', version:'3.3' 
} 

Początkowo po prostu miał „przejrzystość” dodany, ponieważ jest to jeden mnie obchodzi, ale dodałam wpis "classindex" w nadziei, że to naprawi. Usunięcie "przejrzystości" i zachowanie "classindex" daje mi dokładnie ten sam błąd.

Nie jestem zbyt zaznajomiony z gradle/maven, więc każda pomoc byłaby doceniona.

Odpowiedz

15

Byłem z podobnym błędem. Postępuję zgodnie z instrukcjami na łączu Google i to działa.

Spróbuj dodać instrukcje wykonać, aby app Gradle pliku:

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

    javaCompileOptions { 
     annotationProcessorOptions { 
      includeCompileClasspath false 
     } 
    } 
} 

uwagę na -> includeCompileClasspath fałszywego

+8

„Zauważ, że ta opcja jest przestarzałe i zostanie usunięte w przyszłości. " – everyman

+1

Tak @everyman, ale na razie jest to opcja, którą musimy sobie z tym poradzić. – luizMello

+0

@luizMello: Dzięki stary, to działa dla mnie. –

51

Aby naprawić ten błąd, wystarczy zmienić konfigurację tych zależnościach używać annotationProcessor . Jeśli zależność zawiera składniki, które również muszą znajdować się w ścieżce klasy kompilacji, zadeklaruj tę zależność po raz drugi i użyj konfiguracji zależności od kompilacji.

Na przykład:

annotationProcessor 'com.jakewharton:butterknife:7.0.1' 
compile 'com.jakewharton:butterknife:7.0.1' 

Ten link opisuje to szczegółowo: https://developer.android.com/studio/preview/features/new-android-plugin-migration.html#annotationProcessor_config

Odpowiedni fragment włączone dla kompletności.

Use the annotation processor dependency configuration

In previous versions of the Android plugin for Gradle, 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 new plugin, annotation processors must be added to the processor classpath using the annotationProcessor dependency configuration, as shown below:

dependencies { ... annotationProcessor 'com.google.dagger:dagger-compiler:' }

The plugin assumes a dependency is an annotation processor if its JAR file contains the following file: META- INF/services/javax.annotation.processing.Processor. If the plugin detects annotation processors on the compile classpath, your build fails and you get an error message that lists each annotation processor on the compile classpath. To fix the error, simply change the configuration of those dependencies to use annotationProcessor. If a dependency includes components that also need to be on the compile classpath, declare that dependency a second time and use the compile dependency configuration.

7

Wystarczy zaktualizować swój nóż masło z procesorem adnotacji

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

mam nadzieję, że to pomaga ty

0

Jeśli masz zależności od ścieżki klasy kompilacji, która zawiera procesory adnotacji, których nie potrzebujesz, możesz wyłączyć sprawdzanie błędów, dodając następujące elementy do pliku build.gradle. Pamiętaj, że procesory adnotacji dodane do ścieżki klasy kompilacji nadal nie są dodawane do ścieżki klasy procesora.

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

Jeśli występują problemy migracji do nowej strategii rozwiązywania zależności, można przywrócić do zachowań, które z Androidem 2.3.0 plugin przez ustawienie includeCompileClasspath prawda. Przywracanie zachowania do wersji 2.3.0 nie jest jednak zalecane, a opcja ta zostanie usunięta w przyszłej aktualizacji.

Zobacz tutaj https://developer.android.com/r/tools/annotation-processor-error-message.html więcej szczegółów

0

Jeśli nic nie działa z powyższych odpowiedzi Dodaj następujący krok, jak również, specjalnie dla nowej aktualizacji Android Studio 3.0.1:

Android Studio 3.0.1:

Dodaj do tego pliku app.gradle w zależności:

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
Powiązane problemy