Wie wird die Warnung „Inkrementelle Annotationsverarbeitung angefordert“ entfernt?

Lesezeit: 8 Minuten

Ich habe gerade mit der Android-Entwicklung begonnen und versucht, die Room-Bibliothek zu verwenden. Seit gestern stehe ich vor dieser Warnmeldung

w: [kapt] Inkrementelle Anmerkungsverarbeitung angefordert, aber Unterstützung ist deaktiviert, da die folgenden Prozessoren nicht inkrementell sind: androidx.lifecycle.LifecycleProcessor (NON_INCREMENTAL), androidx.room.RoomProcessor (NON_INCREMENTAL).

Ich habe versucht, diesen Fehler zu recherchieren und zu beheben, konnte ihn aber nicht vermeiden. Hier ist meine grale.build-Datei. bitte vorschlagen/raten, was ich falsch mache.

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "ps.room.bookkeeper"
        minSdkVersion 15
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["room.schemaLocation":"$projectDir/schemas".toString()]
            }
        }    
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.core:core-ktx:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    // life cycle dependencies
    def lifecycle_version = "2.0.0"
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    kapt "android.arch.lifecycle:compiler:$lifecycle_version"

    //Room dependencies
    //def room_version = "2.1.0"
    implementation 'android.arch.persistence.room:runtime:2.1.0'
    kapt 'android.arch.persistence.room:compiler:2.1.0'
    //annotationProcessor 'android.arch.persistence.room:compiler:2.1.0'

//    implementation "android.arch.lifecycle:extensions:$room_version"
//    kapt "android.arch.persistence.room:compiler:$room_version"
//    androidTestImplementation "android.arch.persistence.room:testing:$room_version"

    //implementation 'androidx.room:room-runtime:2.1.0'
    //annotationProcessor 'androidx.room:room-compiler:2.1.0'
}

  • Warum ist Ihr annotationProcessor kommentiert? Haben Sie versucht, sie zu entkommentieren und dann ein Projekt zu erstellen? (für Raum und Lebenszyklus)

    – Ferhat Ergün

    27. August 2019 um 9:13 Uhr


  • Versuchen Sie android.enableSeparateAnnotationProcessing=true in Ihre gradle.properities hinzuzufügen reddit.com/r/androiddev/comments/ai92pt/… gefunden, könnte es mit Ihrem Problem zusammenhängen

    – Ferhat Ergün

    27. August 2019 um 11:05 Uhr


  • Sie können kotlin-gradle-plugin in Ihrer Projektdatei build.gradle vorerst auf Version 1.3.41 herunterstufen. Ich denke, es ist ein Fehler, der mit Kapt zusammenhängt. Mehr Info: youtrack.jetbrains.com/issue/KT-33515

    – Nekrontyr

    27. August 2019 um 18:02 Uhr

  • Sie können auch eine gradle.properties-Datei in libs/ mit erstellen kapt.incremental.apt=false auch wie in dem Problem als Problemumgehung beschrieben. Es hat für mich funktioniert.

    – Nekrontyr

    27. August 2019 um 18:50 Uhr

  • @Necrontyr, dein Vorschlag hat wirklich funktioniert. Vielen Dank

    – Schax

    28. August 2019 um 5:11 Uhr

Benutzer-Avatar
Ali Ahmed

Fügen Sie einfach diese Zeile zu Ihrer gradle.properties hinzu:

kapt.incremental.apt=true

  • Dies ist eine bessere Option als die akzeptierte Antwort. Für diejenigen, die mehr Details verstehen und erfahren müssen, siehe diesen Link: medium.com/avast-engineering/…

    – Abhimanyu

    7. September 2019 um 18:42 Uhr

  • ist bei mir auch gescheitert.

    – Stefan Schmied

    16. September 2019 um 18:41 Uhr

  • ist jemand, was der Grund ist, warum es hier passiert?

    – Omer

    15. November 2019 um 1:17 Uhr

  • Ich habe kürzlich die Datenbindung an mein Android-Projekt (kotlin) aktiviert und diese Warnung erhalten. Das Hinzufügen der Eigenschaft wie oben beschrieben hat bei mir funktioniert. Verwenden Sie auch die neuesten Versionen von allem, z. B. alle Abhängigkeiten, Compiler, Build-Tools, SDKs usw.

    – Gail

    29. Januar 2020 um 22:32 Uhr

  • Nur dies zu tun, hat bei mir nicht funktioniert. Ich musste auch meine build.gradle-Datei bearbeiten, wie in beschrieben Dokumentation für die Raumbibliothek.

    – Mike F

    16. Mai 2020 um 22:41 Uhr

Benutzer-Avatar
Dimas Mendes

Das eigentliche Problem besteht darin, dass die inkrementelle Verarbeitung die Dinge schneller macht, aber wenn einer der Anmerkungsprozessoren nicht inkrementell ist, wird keiner von ihnen tatsächlich auf diese Weise verarbeitet.

Was ist der Zweck der inkrementellen Verarbeitung?

Aus Ausführung 1.3.30+ermöglichte die inkrementelle Verarbeitung, dass Module nicht bei jeder Änderung erneut vollständig verarbeitet wurden, was dem Build-Prozess eine bessere Leistung verlieh:

Die Hauptschwerpunkte dieser Version waren Kotlin/Native, KAPT-Leistung sowie Verbesserungen für IntelliJ IDEA.

Aus Kotlin-Dokumentation:

Anmerkungsprozessoren (siehe JSR 269) werden in Kotlin mit dem kapt-Compiler-Plugin unterstützt. Kurz gesagt, Sie können Bibliotheken wie Dagger oder Data Binding in Ihren Kotlin-Projekten verwenden.

Wie behebt man die inkrementelle Raumverarbeitung?

Room Incremental Annotation Processor ist behindert standardmäßig. Dies ist ein bekanntes Problem und es wird beschrieben hier. Sie beabsichtigen, es in Version 2.2.0 zu beheben. Sie können einfach auf das Update warten oder es aktivieren, um die Warnung zu beseitigen, indem Sie Folgendes einstellen:

in gradle.properties Datei:

kapt.incremental.apt=true

(optionale Schritte)

erlauben Datenbindung inkrementell sein:

android.databinding.incremental=true

für schnellere Builds:

kapt.use.worker.api=true

Wenn nur wenige Änderungen vorgenommen werden, verkürzt sich die Bauzeit erheblich:

kapt.include.compile.classpath=false

(zurück zum thema)

in Ihrem Projekt build.gradlefügen Sie die notwendigen Abhängigkeiten hinzu (Groovy):

dependencies {
    ...
    implementation "androidx.room:room-runtime:2.2.0-rc01"
    annotationProcessor "androidx.room:room-compiler:2.2.0-rc01"
}

und

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["room.incremental":"true"]
            }
        }
    }
}

Kotlin DSL-Version:

dependencies {
    ...
    implementation("androidx.room:room-runtime:2.2.0-rc01")
    kapt("androidx.room:room-compiler:2.2.0-rc01")
}

und

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = mapOf("room.incremental" to "true")
            }
        }
    } 
}

9. Oktober 2019

androidx.room:room-*:2.2.0 es ist veröffentlicht worden.

Gradle Incremental Annotation Processor: Room ist jetzt ein isolierender Gradle-Annotationsprozessor, und die Inkrementierbarkeit kann über die Prozessoroption room.incremental aktiviert werden.

Neuestes Update:

Für die neuesten Kotlin DSL-Versionen verwenden Sie bitte

    javaCompileOptions {
        annotationProcessorOptions {
            arguments["room.incremental"] = "true"
        }
    }

  • Dieser sollte akzeptiert werden, da kapt.incremental.apt=true etwas fehlt, wenn Sie Room in Ihr Projekt aufnehmen. Dieser wird in den Android-Dokumenten nicht einmal erwähnt Zimmer

    – Sela

    6. Oktober 2019 um 14:22 Uhr


  • Diese Antwort hat mir geholfen, als ich benutzte androidx.lifecycle:lifecycle-extensions in Version 2.1.0 und nach Wechsel auf 2.2.0-beta01 war die Warnung weg!

    – simne7

    22. Oktober 2019 um 13:43 Uhr

  • @ simne7 schau dir am Ende meine Bearbeitung an. Version 2.2.0 ist veröffentlicht =) Sie können sie bereits aktualisieren, um auf die inkrementelle Verarbeitungsfunktion zuzugreifen und Ihren Build zu verbessern.

    – Dimas Mendes

    24. Oktober 2019 um 14:51 Uhr

  • Würde ermöglichen android.buildcache=true mach es schneller?

    – IgorGanapolsky

    15. März 2020 um 17:52 Uhr

  • @IgorGanapolsky laut Google Developers Website, Projects using Android plugin 2.3.0 and higher enable the build cache by default (unless you explicitly disable the build cache). Es macht also keinen Sinn, es zu aktivieren, da es standardmäßig aktiviert ist.

    – Dimas Mendes

    16. März 2020 um 16:06 Uhr

Es gibt einen Fehler in der kotlin-gradle-plugin-Version von 1.3.50, wie @Necrontyr erwähnt hat. Führen Sie einfach ein Downgrade der kotlin_version in build.gradle(Project) auf 1.3.41 durch.

  • Der von @Necrontyr erwähnte Fehler hat nichts mit der Warnung zu tun. Die Warnung ist eigentlich beabsichtigt und wenn Sie auf 1.3.41 heruntergehen, wird die Warnung nur ausgeblendet, aber das Problem bleibt das gleiche, wenn nicht schlimmer. Die Leute könnten denken, dass die Dinge schneller werden, weil sie die inkrementelle Anmerkungsverarbeitung aktiviert haben. Aber die Wahrheit ist, dass, wenn einer der Anmerkungsprozessoren nicht inkrementell ist, keiner von ihnen inkrementell verarbeitet wird. Dies ist eine freundliche Erinnerung, die darauf hinweist, welche Bibliothek der Übeltäter ist.

    – Antimonit

    16. September 2019 um 8:19 Uhr


  • Die Verwendung einer veralteten Bibliotheksversion ist keine Lösung.

    – Andreas Köster

    13. November 2019 um 21:00 Uhr

  • Ist das bei Kotlin immer noch so? 1.3.70?

    – IgorGanapolsky

    15. März 2020 um 17:50 Uhr

  • Ich verwende Kotlin 1.3.72 und habe immer noch dieses Problem?

    – Anbuselvan Rocky

    23. Mai 2020 um 18:51 Uhr

  • Ich stehe auch vor diesem Problem 1.3.72 irgendwelche Lösung Jungs?

    – hiasutoshsingh

    7. Juni 2020 um 14:32 Uhr

Benutzer-Avatar
Alberto Gaona

Aus Raumdokumentation:

“Room verfügt über die folgenden Anmerkungsprozessoroptionen … room.incremental: Aktiviert den inkrementellen Anmerkungsprozessor von Gradle.”

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [
                    "room.schemaLocation":"$projectDir/schemas".toString(),
                    "room.incremental":"true",
                    "room.expandProjection":"true"]
            }
        }
    }
}

Stellen Sie sicher, dass Sie die Raumversion auf 2.2.x oder höher aktualisieren.

Benutzer-Avatar
Schomu

Aktivieren Sie Kapt Incremental Annotation Processing Requeste

Verwenden Sie Kotlin 1.3.31 oder neuer Kotlin 1.3.30 veröffentlicht

In Ihrer Android-Kotlin-Projektdatei gradle.properties

# Enable Kapt Incremental annotation processing requeste
kapt.incremental.apt=true

# Enable android.databinding.annotationprocessor.ProcessDataBinding (DYNAMIC)
android.databinding.incremental=true

# Decrease gradle builds time 
kapt.use.worker.api=true

# turn off AP discovery in compile path, and therefore turn on Compile Avoidance
kapt.include.compile.classpath=false

# Enable In Logcat to determine Kapt
kapt.verbose=true

  • Wie wäre es mit android.lifecycleProcessor.incremental=true?

    – IgorGanapolsky

    15. März 2020 um 17:56 Uhr

Benutzer-Avatar
smdufb

Hier ist eine Liste von Dingen, die Sie tun können, um dies zu beheben und Ihre Build-Zeiten erheblich zu verkürzen, während Sie gerade dabei sind.

In deiner build.gradle (Modul-)Datei:

android {
    ...
    defaultConfig {
        ...
        kapt {
            arguments {
                 arg("room.schemaLocation", "$projectDir/schemas".toString())
                 arg("room.incremental", "true")
                 arg("room.expandProjection", "true")
            }
        }
    }
    ...
}

In deiner gradle.properties Datei:

kapt.incremental.apt=true            // enabled by default on 1.3.50+
kapt.use.worker.api=true             // faster builds
kapt.include.compile.classpath=false // near instant builds when there are few changes

android.databinding.incremental=true
android.lifecycleProcessor.incremental=true
//add your specific library if it supports incremental kapt 

  • Wie wäre es mit android.lifecycleProcessor.incremental=true?

    – IgorGanapolsky

    15. März 2020 um 17:56 Uhr

Benutzer-Avatar
Jacques.S

Viele der anderen Antworten hier vertuschen den Fehler oder deaktivieren die inkrementelle Verarbeitung, anstatt sie tatsächlich so funktionieren zu lassen, wie Sie es möchten.

Sie können die inkrementelle Verarbeitung für Ihre spezifische Bibliothek in aktivieren gradle.properties Datei. Fügen Sie einfach diese Einstellungen hinzu oder diejenige, die der Bibliothek entspricht, die den Fehler auslöst:

android.databinding.incremental=true
android.lifecycleProcessor.incremental=true

  • Ich bin mir nicht so sicher android.lifecycleProcessor.incremental=truescheint nirgends dokumentiert zu sein

    – Daniel Wilson

    3. Oktober 2019 um 9:05 Uhr

  • Ich bin mir auch nicht sicher, aber ich habe es aus einer Ahnung heraus versucht, und der Compiler hat aufgehört, mir zu sagen, dass die lifecycleProcessor-Bibliothek keine inkrementelle Verarbeitung aktiviert hat.

    – Jacques.S

    3. Oktober 2019 um 9:57 Uhr

1014000cookie-checkWie wird die Warnung „Inkrementelle Annotationsverarbeitung angefordert“ entfernt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy