tutorial example android android-studio kotlin architecture-components

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.