警告:警告:注释处理器“android.arch.lifecycle.LifecycleProcessor”支持的源版本“RELEASE_7”小于“源”1.8

尝试使用Android Studio 3 Canary 5与架构组件和Kotlin构建示例给出了此警告。

谁能告诉我这个原因?

谢谢,Ove

编辑#1:这是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() } 

只是添加这个答案以供将来参考:前一段时间Android Arch组件团队也提出了同样的问题,现在正式的答案是:

(…)这只是一个警告。 不应该是一个问题。

这适用于问题标题中提到的格式之后的警告,包括:

w:警告:注释处理器“android.arch.lifecycle.LifecycleProcessor”支持的源版本“RELEASE_7”小于-source“1.8”w:

w:警告:注释处理器“android.arch.persistence.room.RoomProcessor”支持的源版本'RELEASE_7'小于-source'1.8'w:

基本上是javac告诉你这些注释处理器已经被编译了,并且为你的模块的源代码级别设置为(Java 8)的Java(Java 7)的不同(旧)版本生成代码。 原因是编译器不能做出任何处理器将仍然正确的行为的承诺(但是开发者可以在这个特定的情况下做到这一点)。

请注意,如果您删除了-Xlint编译器标志,那么警告仍然发出,因此使用-nowarn不知道不能被禁止。

有一个Java 8注释处理器现在拱组件是稳定的,所以替换:

 "android.arch.lifecycle:compiler:${rootProject.archLifecycleVersion}" 

 "android.arch.lifecycle:common-java8:1.0.0"