example - Advertencia: advertencia: versión de origen compatible ''RELEASE_7'' del procesador de anotación ''android.arch.lifecycle.LifecycleProcessor'' less than-source ''1.8''
mvvm android kotlin (2)
Hay un procesador de anotación Java 8 ahora los componentes del arco son estables, así que sustitúyalos:
"android.arch.lifecycle:compiler:${rootProject.archLifecycleVersion}"
con
"android.arch.lifecycle:common-java8:1.0.0"
Al intentar crear una muestra con Android Studio 3 Canary 5 con componentes de arquitectura y Kotlin, aparece esta advertencia.
¿Alguien puede decirme la razón?
Gracias ove
Edit # 1: Esta es una muestra hecha hace algún tiempo por Dan Lew
https://github.com/dlew/android-architecture-counter-sample
build.gradle:
apply plugin: ''com.android.application''
apply plugin: ''kotlin-android''
apply plugin: ''kotlin-kapt''
android {
compileSdkVersion 25
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "net.danlew.counter"
minSdkVersion 23
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
compile "com.android.support:recyclerview-v7:${rootProject.ext.supportLibVersion}"
compile "com.android.support:design:${rootProject.ext.supportLibVersion}"
compile "com.android.support:cardview-v7:${rootProject.ext.supportLibVersion}"
compile ''com.android.support.constraint:constraint-layout:1.0.2''
testCompile ''junit:junit:4.12''
compile "android.arch.lifecycle:extensions:${rootProject.archLifecycleVersion}"
compile "android.arch.persistence.room:runtime:${rootProject.archRoomVersion}"
compile "android.arch.persistence.room:rxjava2:${rootProject.archRoomVersion}"
kapt "android.arch.lifecycle:compiler:${rootProject.archLifecycleVersion}"
kapt "android.arch.persistence.room:compiler:${rootProject.archRoomVersion}"
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
String butterKnifeVersion = ''8.5.1''
compile "com.jakewharton:butterknife:$butterKnifeVersion"
kapt "com.jakewharton:butterknife-compiler:$butterKnifeVersion"
compile ''io.reactivex.rxjava2:rxjava:2.1.0''
String daggerVersion = ''2.10''
compile "com.google.dagger:dagger:$daggerVersion"
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
String rxBindingVersion = ''2.0.0''
compile "com.jakewharton.rxbinding2:rxbinding:$rxBindingVersion"
compile "com.jakewharton.rxbinding2:rxbinding-kotlin:$rxBindingVersion"
compile ''com.jakewharton.timber:timber:4.5.1''
compile ''com.jakewharton.rxrelay2:rxrelay:2.0.0''
}
repositories {
mavenCentral()
}
Solo agregando esta respuesta para referencia futura: el mismo problema también se planteó con el equipo de componentes de Android Arch hace un tiempo y la respuesta oficial por ahora es:
(...) es solo una advertencia. No debería ser un problema.
Esto se aplica a las advertencias que siguen el formato mencionado en el título de la pregunta e incluyen:
w: advertencia: versión de origen compatible ''RELEASE_7'' del procesador de anotación ''android.arch.lifecycle.LifecycleProcessor'' less than -source ''1.8'' w:
w: advertencia: versión de origen compatible ''RELEASE_7'' del procesador de anotaciones ''android.arch.persistence.room.RoomProcessor'' less than -source ''1.8'' w:
Básicamente, es javac
que le informa que estos procesadores de anotación se compilaron y generaron código para una versión diferente (más antigua) de Java (Java 7) que el nivel de fuente de su módulo está configurado en (Java 8). La razón de esto es que el compilador no puede hacer ninguna promesa de que los procesadores todavía se comportarán correctamente [pero los desarrolladores pueden y lo hicieron en este caso particular].
Tenga en cuenta que la advertencia se sigue emitiendo si elimina el -Xlint
compilador -Xlint
, por lo que, a falta de utilizar -nowarn
, no se puede suprimir por desgracia.