Je viens de commencer à utiliser le développement Android et à essayer d'utiliser la bibliothèque Room. Depuis hier je suis face à ce message d'avertissement
w: [kapt] Traitement d'annotation incrémentiel demandé, mais la prise en charge est désactivée car les processeurs suivants ne sont pas incrémentiels: androidx.lifecycle.LifecycleProcessor (NON_INCREMENTAL), androidx.room.RoomProcessor (NON_INCREMENTAL).
J'ai essayé de rechercher et de corriger mais je n'ai pas pu éviter cette erreur, voici mon fichier grale.build. Veuillez suggérer / conseiller ce que je fais mal.
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'
}
kapt.incremental.apt=false
comme décrit dans le problème comme solution de contournement. Cela a fonctionné pour moi.Réponses:
Il y a un bogue dans la version 1.3.50 de kotlin-gradle-plugin comme @Necrontyr l'a mentionné. Il suffit de rétrograder la version kotlin_version dans build.gradle (Projet) vers 1.3.41.
la source
1.3.70
?Ajoutez simplement cette ligne à votre gradle.properties:
la source
Le vrai problème est que le traitement incrémentiel accélère les choses, mais si l'un des processeurs d'annotation n'est pas incrémentiel, aucun d'entre eux ne sera réellement traité de cette manière.
Quel est le but du traitement incrémentiel?
À partir de la version 1.3.30+ , le traitement incrémentiel permettait aux modules de ne pas être entièrement traités à nouveau à chaque fois qu'un changement se produisait, donnant au processus de construction de meilleures performances:
À partir de la documentation Kotlin :
Comment réparer le traitement incrémentiel de la pièce?
Et le processeur d'annotations incrémentielles de pièce est désactivé par défaut. Il s'agit d'un problème connu et il est décrit ici . Ils ont l'intention de le corriger sur la version 2.2.0. Vous pouvez simplement attendre la mise à jour ou l'activer pour éliminer l'avertissement en définissant:
dans le fichier gradle.properties :
kapt.incremental.apt=true
(étapes facultatives)
pour permettre à la liaison de données d'être incrémentielle:
android.databinding.incremental=true
pour des constructions plus rapides:
kapt.use.worker.api=true
si seulement quelques modifications sont apportées, le temps de construction diminue considérablement:
kapt.include.compile.classpath=false
(retour au sujet)
dans votre projet build.gradle , ajoutez les dépendances nécessaires (Groovy):
et
Version DSL Kotlin:
et
Éditer:
9 octobre 2019
androidx.room:room-*:2.2.0 est publié .
la source
androidx.lifecycle:lifecycle-extensions
dans la version 2.1.0 et après le passage à 2.2.0-beta01, l'avertissement a disparu!android.buildcache=true
rendrait-il plus rapide?Projects using Android plugin 2.3.0 and higher enable the build cache by default (unless you explicitly disable the build cache)
. Cela n'a donc pas de sens de l'activer car il est activé par défaut.De documentation de la salle :
"Room a les options de processeur d'annotation suivantes ... room.incremental: Active le processeur d'annotation incrémentielle Gradle."
Assurez-vous de mettre à jour la version de la salle vers 2.2.x ou supérieur.
la source
Voici une liste de choses que vous pouvez faire pour résoudre ce problème et réduire considérablement vos temps de construction pendant que vous y êtes.
Dans votre
build.gradle
fichier (module):Dans votre
gradle.properties
dossier:la source
Activer le traitement des annotations incrémentielles Kapt demandé
Utilisez Kotlin 1.3.31 ou plus récent Kotlin 1.3.30 publié
Dans votre fichier gradle.properties de projet android kotlin
la source
android.lifecycleProcessor.incremental=true
?Beaucoup d'autres réponses ici couvrent l'erreur ou désactivent le traitement incrémentiel au lieu de le faire fonctionner comme vous le souhaitez.
Vous pouvez activer le traitement incrémentiel pour votre bibliothèque spécifique dans le
gradle.properties
fichier. Ajoutez simplement ces paramètres, ou celui qui correspond à la bibliothèque qui génère l'erreur:la source
android.lifecycleProcessor.incremental=true
, cela ne semble être documenté nulle partS'il se plaint que "le traitement d'annotation incrémentielle est demandé, mais que la prise en charge est désactivée car les processeurs suivants ne sont pas incrémentiels", alors définir "kapt.incremental.apt" sur "true" (mentionné dans une réponse différente) dans gradle.properties est contre- intuitif. Vous devez le définir sur "false". Cela l'a fait pour moi.
la source
kapt.incremental.apt=false
m'a aidé, je ne reçois plus l'erreurJ'utilise AndroidX , mais je suppose que c'est la même chose pour
android.arch.lifecycle
. Pour moi, cela a simplement aidé à remplacer ceci:... avec ça:
Donc, si vous l'utilisez,
android.arch.lifecycle
cela peut avoir le même effet en remplaçant ceci:... avec ça:
Sachez que cela ne fonctionne que si vous utilisez Java 8 et que vous devez également supprimer les
OnLifecycleEvent
annotations pour lesLifecycleObserver
classes et laisser ces observateurs implémenter à laDefaultLifecycleObserver
place.Le passage à cette méthode est également recommandé dans les
build.gradle
dépendances présentées ici .la source
kapt
?kapt
est essentiel pour Kotlincommon-java8
si possible: developer.android.com/reference/androidx/lifecycle/Lifecyclekapt
en particulier cependant ...Ce que vous devez vraiment faire est d'implémenter ces lignes de code dans votre
buildConfig
balise dans votrebuild.gradle
application de module:la source
Réponses ci - dessus peuvent être utiles, mais ce qui m'a aidé réduit la
kotlin_version
dansbuild.gradle(Project)
à1.3.41
et la construction du projet. Cela vous permettra de voir s'il y a un problème avec votre modèle d'entité.Le mien était, j'ai oublié d'annoter
@PrimaryKey
. Votre peut être quelque chose de différent. Kotlin1.3.41
permet de voir ces problèmes. Résolvez ces problèmes et revenezkotlin_version
au précédent.la source
Cela peut également être dû à des problèmes de caractères tels que « © » du côté de la liaison de données lorsque la langue du système n'est pas une langue anglaise. Dans un tel cas, l'utilisation de la langue du système informatique en anglais résoudra le problème.
la source