Acabo de comenzar a usar el desarrollo de Android y tratar de usar la biblioteca de habitaciones. Desde ayer me enfrento a este mensaje de advertencia
w: [kapt] Procesamiento de anotación incremental solicitado, pero el soporte está deshabilitado porque los siguientes procesadores no son incrementales: androidx.lifecycle.LifecycleProcessor (NON_INCREMENTAL), androidx.room.RoomProcessor (NON_INCREMENTAL).
He intentado investigar y solucionar, pero no puedo evitar este error, aquí está mi archivo grale.build. sugiera / aconseje lo que estoy haciendo 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
también como se describe en el problema como una solución alternativa. Funcionó para mi.Respuestas:
Hay un error en la versión kotlin-gradle-plugin de 1.3.50 como se menciona en @Necrontyr. Simplemente baje la versión de kotlin_version en build.gradle (Project) a 1.3.41.
fuente
1.3.70
?Simplemente agregue esta línea a gradle.properties:
fuente
El verdadero problema es que el procesamiento incremental hace que las cosas sean más rápidas, pero si alguno de los procesadores de anotaciones no es incremental, ninguno de ellos se procesará realmente de esa manera.
¿Cuál es el propósito del procesamiento incremental?
A partir de la versión 1.3.30+ , el procesamiento incremental permitió que los módulos no se procesen por completo nuevamente cada vez que se produce un cambio, lo que le da al proceso de compilación un mejor rendimiento:
De la documentación de Kotlin :
¿Cómo arreglar el procesamiento incremental de la sala?
Y el procesador de anotación incremental Room está deshabilitado de forma predeterminada. Este es un problema conocido y se describe aquí . Tienen la intención de arreglarlo en la versión 2.2.0. Puede esperar la actualización o habilitarla para deshacerse de la advertencia configurando:
en el archivo gradle.properties :
kapt.incremental.apt=true
(pasos opcionales)
para permitir que el enlace de datos sea incremental:
android.databinding.incremental=true
para construcciones más rápidas:
kapt.use.worker.api=true
Si solo se realizan algunos cambios, el tiempo de construcción disminuye considerablemente:
kapt.include.compile.classpath=false
(volver al tema)
en su proyecto build.gradle , agregue las dependencias necesarias (Groovy):
y
Versión Kotlin DSL:
y
Editar:
9 de octubre de 2019
se lanza androidx.room:room-*:2.2.0 .
fuente
androidx.lifecycle:lifecycle-extensions
versión 2.1.0 y después de cambiar a 2.2.0-beta01 la advertencia desapareció!android.buildcache=true
haría más rápido?Projects using Android plugin 2.3.0 and higher enable the build cache by default (unless you explicitly disable the build cache)
. Por lo tanto, no tiene sentido habilitarlo, ya que está habilitado de forma predeterminada.De la documentación de la sala :
"Room tiene las siguientes opciones de procesador de anotación ... room.incremental: habilita el procesador de anotación incremental Gradle".
Asegúrese de actualizar la versión de la sala a 2.2.xo superior.
fuente
Aquí hay una lista de cosas que puede hacer para solucionar esto y disminuir significativamente los tiempos de construcción mientras lo hace.
En su
build.gradle
archivo (módulo):En tu
gradle.properties
archivo:fuente
Habilitar Kapt Solicitud de procesamiento de anotaciones incrementales
Utilice Kotlin 1.3.31 o una versión más reciente de Kotlin 1.3.30
En su proyecto de Android Kotlin, el archivo gradle.properties
fuente
android.lifecycleProcessor.incremental=true
?Muchas de las otras respuestas aquí cubren el error o deshabilitan el procesamiento incremental en lugar de hacerlo funcionar de la manera deseada.
Puede habilitar el procesamiento incremental para su biblioteca específica en el
gradle.properties
archivo. Simplemente agregue esta configuración, o la que coincida con la biblioteca que arroja el error:fuente
android.lifecycleProcessor.incremental=true
, no parece estar documentado en ninguna parteSi se queja de que "Se solicitó el procesamiento de anotaciones incrementales, pero el soporte está deshabilitado porque los siguientes procesadores no son incrementales", entonces establecer "kapt.incremental.apt" en "verdadero" (mencionado en una respuesta diferente) en gradle.properties es counter- intuitivo. Debe establecerlo en "falso". Eso lo hizo por mí.
fuente
kapt.incremental.apt=false
me ayudó, ya no recibo el errorEstoy usando AndroidX , pero supongo que es lo mismo
android.arch.lifecycle
. Para mí, simplemente ayudó a reemplazar esto:... con este:
Entonces, si lo está usando
android.arch.lifecycle
, podría tener el mismo efecto reemplazando esto:... con este:
Tenga en cuenta que esto solo funciona si está utilizando Java 8 y que también debe eliminar las
OnLifecycleEvent
anotaciones para lasLifecycleObserver
clases y dejar que esos observadores implementenDefaultLifecycleObserver
lugar.También se recomienda cambiar a este método en las
build.gradle
dependencias que se muestran aquí .fuente
kapt
?kapt
es esencial para Kotlincommon-java8
si es posible: developer.android.com/reference/androidx/lifecycle/Lifecyclekapt
embargo, no mencionan en particular ...Lo que realmente debe hacer es implementar estas líneas de código en su
buildConfig
etiqueta en subuild.gradle
aplicación de módulo:fuente
Respuestas anteriores pueden ser útiles, pero lo que me ayudó es reducir el
kotlin_version
enbuild.gradle(Project)
a1.3.41
, y la construcción del proyecto. Esto le permitirá ver si hay algún problema con su modelo de entidad.El mío fue, olvidé anotar
@PrimaryKey
. Tu puede ser algo diferente. Kotlin1.3.41
permite ver esos problemas. Solucione esos problemas y vuelva a sukotlin_version
anterior.fuente
Esto también puede ser causado por problemas de caracteres como " İ " en el lado de enlace de datos cuando el idioma del sistema no es inglés. En tal caso, el uso del idioma del sistema informático en inglés resolverá el problema.
fuente