web-dev-qa-db-fra.com

Avertissement: attention: version source "RELEASE_7" prise en charge par le processeur d'annotation "Android.Arch.lifecycle.LifecycleProcessor" inférieure à -source "1.8"

Essayer de construire un exemple avec Android Studio 3 Canary 5 avec Architecture Components et Kotlin donne cet avertissement.

Quelqu'un peut-il me dire la raison?

Merci, Ove

Edit # 1: Ceci est un échantillon réalisé il y a quelque temps par 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()
}
36
Ove Stoerholt

Il y a un processeur d'annotation Java 8 maintenant que les composants Arch sont stables, alors remplacez:

"Android.Arch.lifecycle:compiler:${rootProject.archLifecycleVersion}"

avec

"Android.Arch.lifecycle:common-Java8:1.0.0"
26
Mark

Ajoutant simplement cette réponse pour référence future: le même problème a également été soulevé avec l’équipe de Android Arch Components il y a quelque temps et la réponse réponse officielle = est actuellement:

(...) c'est juste un avertissement. Ne devrait pas être un problème.

Ceci s'applique aux avertissements suivant le format mentionné dans le titre de la question et comprend:

w: avertissement: version source "RELEASE_7" prise en charge par le processeur d'annotation "Android.Arch.lifecycle.LifecycleProcessor" inférieure à -source "1.8" w:

w: warning: Version source "RELEASE_7" prise en charge par le processeur d'annotation "Android.Arch.persistence.room.RoomProcessor" inférieure à -source "1.8" w:

En gros, c'est javac qui vous informe que ces processeurs d'annotation ont été compilés et génèrent du code pour une version (plus ancienne) de Java (Java 7)) identique au niveau source de votre module. (Java 8) La raison en est que le compilateur ne peut pas promettre que les processeurs se comporteront alors correctement [mais les développeurs peuvent et l'ont fait dans ce cas particulier].

Notez que l'avertissement est toujours émis si vous supprimez le -Xlint drapeau du compilateur, si peu d'utiliser -nowarn il ne peut malheureusement pas être supprimé.

17
MH.