Inkompatible Plugins für Android-Apt nach dem Upgrade auf Android Studio 2.3

100

Nach dem Upgrade von 2.2 auf 2.3 wird diese Warnung angezeigt

Geben Sie hier die Bildbeschreibung ein

und wenn ich versuche, das Projekt zu kompilieren, sehe ich diesen Kompilierungsfehler

Geben Sie hier die Bildbeschreibung ein

Wie kann ich dieses Problem lösen, ohne auf eine frühere Gradle-Version herunterzustufen? Gibt es ein Update von android-apt, das dieses Problem lösen kann?

Bronx
quelle

Antworten:

179

Das android-aptPlugin ist veraltet .
Hier finden Sie den Migrationsleitfaden :

Ab dem Android Gradle Plugin Version 2.2 sind alle Funktionen, die zuvor von android-apt bereitgestellt wurden, jetzt im Android Plugin verfügbar.

Sie können entfernen, android-aptindem Sie dem Migrationshandbuch folgen, um die entsprechenden Funktionen zu erhalten.

Die wichtigen Teile des Migrationsleitfadens :

  • Stellen Sie sicher, dass Sie das Android Gradle 2.2-Plugin oder eine neuere Version verwenden.
  • Entfernen Sie das android-aptPlugin aus Ihren Build-Skripten
  • Ändern Sie alle apt, androidTestAptund testAptAbhängigkeiten zu ihrem neuen Format:
dependencies {
   compile 'com.google.dagger:dagger:2.0'
   annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
}

Auch im Android Gradle Plugin gibt es eine explizite Überprüfung dafür, was Sie sehen:

Verwendung inkompatibler Plugins für die Annotationsverarbeitung android-apt

Zukünftige Android Gradle-Plugin-Versionen sind nicht mit der Funktionsweise kompatibelandroid-apt , weshalb diese Überprüfung durchgeführt wurde.

Gabriele Mariotti
quelle
Vielen Dank! Ich wusste nicht, dass apt veraltet ist.
Bronx
1
Und im Android Gradle-Plugin hat Google eine explizite Überprüfung, was Sie sehen. Zukünftige Android Gradle-Versionen sind nicht mit der Funktionsweise kompatibel android-apt, weshalb diese Überprüfung durchgeführt wurde.
Botteaap
Wo ist der Scheck?
Ericic
Ich habe keine Wohnung, bekomme aber trotzdem diese Warnung. EDIT: Es stellte sich heraus, dass es Reich war
siehe
Ich habe NDROID-pt nirgendwo in meinem Code gesehen, aber es wurde ein Fehler angezeigt. Was könnte das Problem sein?
Mubashar
47

Bei mir trat dieser Fehler bei der Verwendung der Contentful- VaultBibliothek auf, in der Folgendes angegeben ist:

apply plugin: 'com.neenbedankt.android-apt'

und

compile 'com.contentful.vault:core:2.1.0'
apt 'com.contentful.vault:compiler:2.1.0'

Was Sie tun müssen, ist LÖSCHEN apply plugin: 'com.neenbedankt.android-apt'

und dann ÄNDERN :

compile 'com.contentful.vault:core:2.1.0'
apt 'com.contentful.vault:compiler:2.1.0'

zu

annotationProcessor 'com.contentful.vault:compiler:2.1.0'
annotationProcessor 'com.contentful.vault:core:3.0.1'

Sie können jederzeit unter https://github.com/contentful/vault nach den neuesten Versionen suchen

Ojonugwa Jude Ochalifu
quelle
15
  1. Entfernen Sie das passende Plugin

  2. Veränderung:

    apt -> kompilieren

    testApt -> testAnnotationProcessor

    androidTestApt -> androidTestAnnotationProcessor

  3. Fügen Sie in Ihrer build.gradle (App) zur defaultConfig hinzu:

vectorDrawables.useSupportLibrary = true

Octavian Ionel
quelle
6

Huckepack auf @Gabriele Mariotti hier, da seine Antwort genau richtig ist und dies impliziert, es aber nicht angibt. Gradle schlägt dies auch nicht als gültige Option vor, obwohl dies ebenfalls der Fall ist. Das Testäquivalent für androidTestAptund testAptist androidTestAnnotationProcessorund testAnnotationProcessor.

Beispiel:

testApt "com.google.dagger:dagger-compiler:$daggerVersion"
androidTestApt "com.google.dagger:dagger-compiler:$daggerVersion"

Sollte geändert werden zu

testAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
Superuserdo
quelle
1

Falls der Annotationsprozessor Argumente hat, muss dies möglicherweise auch geändert werden:

apt {
    arguments {
        KEY "VALUE"
    }
}

dazu:

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ['KEY': 'VALUE']
            }
        }
    }
}
jox
quelle