警告:警告:注释处理器 'android.arch.lifecycle.LifecycleProcessor' 支持的源版本 'RELEASE_7' 小于 -source '1.8'
Warning: warning: Supported source version 'RELEASE_7' from annotation processor 'android.arch.lifecycle.LifecycleProcessor' less than -source '1.8'
尝试使用 Android Studio 3 Canary 5 with Architecture Components 和 Kotlin 构建示例时给出此警告。
谁能告诉我原因?
谢谢,欧维
编辑 #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 Components 团队也提出了同样的问题,official answer 目前是:
(...) it is just a warning. Should not be a problem.
这适用于遵循问题标题中提到的格式的警告,包括:
w: warning: Supported source version 'RELEASE_7' from annotation processor 'android.arch.lifecycle.LifecycleProcessor' less than -source '1.8'
w:
w: warning: Supported source version 'RELEASE_7' from annotation processor 'android.arch.persistence.room.RoomProcessor' less than -source '1.8'
w:
基本上是 javac
通知您这些注解处理器是针对与模块源代码级别不同的(旧)版本 Java (Java 7) 编译并生成代码的设置为 (Java 8)。这样做的原因是编译器无法保证处理器仍然会正确运行[但开发人员可以并且在这种特殊情况下已经做到了]。
请注意,如果您删除 -Xlint
编译器标志,仍会发出警告,但不幸的是,由于没有使用 -nowarn
,它无法被抑制。
有一个 Java 8 注释处理器现在 arch 组件是稳定的所以替换:
"android.arch.lifecycle:compiler:${rootProject.archLifecycleVersion}"
和
"android.arch.lifecycle:common-java8:1.0.0"
尝试使用 Android Studio 3 Canary 5 with Architecture Components 和 Kotlin 构建示例时给出此警告。
谁能告诉我原因?
谢谢,欧维
编辑 #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 Components 团队也提出了同样的问题,official answer 目前是:
(...) it is just a warning. Should not be a problem.
这适用于遵循问题标题中提到的格式的警告,包括:
w: warning: Supported source version 'RELEASE_7' from annotation processor 'android.arch.lifecycle.LifecycleProcessor' less than -source '1.8' w:
w: warning: Supported source version 'RELEASE_7' from annotation processor 'android.arch.persistence.room.RoomProcessor' less than -source '1.8' w:
基本上是 javac
通知您这些注解处理器是针对与模块源代码级别不同的(旧)版本 Java (Java 7) 编译并生成代码的设置为 (Java 8)。这样做的原因是编译器无法保证处理器仍然会正确运行[但开发人员可以并且在这种特殊情况下已经做到了]。
请注意,如果您删除 -Xlint
编译器标志,仍会发出警告,但不幸的是,由于没有使用 -nowarn
,它无法被抑制。
有一个 Java 8 注释处理器现在 arch 组件是稳定的所以替换:
"android.arch.lifecycle:compiler:${rootProject.archLifecycleVersion}"
和
"android.arch.lifecycle:common-java8:1.0.0"