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()
}
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"
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é.