web-dev-qa-db-ja.com

警告:警告:-source '1.8'未満の注釈プロセッサ 'Android.Arch.lifecycle.LifecycleProcessor'からのソースバージョン 'RELEASE_7'がサポートされています

Android Studio 3 Canary 5と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()
}
36
Ove Stoerholt

Java 8注釈プロセッサがあり、Archコンポーネントは安定しているため、以下を交換してください。

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

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

将来の参考のためにこの回答を追加するだけです:同じ問題はAndroid Arch Componentsチームでも少し前に提起され、今のところ 公式の回答 は:

(...)これは単なる警告です。問題ではないはずです。

これは、質問のタイトルに記載されている形式に従う警告に適用され、次のものが含まれます。

w:警告:-source '1.8'未満の注釈プロセッサ 'Android.Arch.lifecycle.LifecycleProcessor'からサポートされているソースバージョン 'RELEASE_7' w:

w:警告:-source '1.8'未満の注釈プロセッサ 'Android.Arch.persistence.room.RoomProcessor'からサポートされているソースバージョン 'RELEASE_7' w:

基本的に、javacは、これらの注釈プロセッサがコンパイルされたことを通知し、モジュールのソースレベルが設定されているのとは異なる(古い)バージョンのJava(Java 7) (Java 8)。この理由は、コンパイラーがプロセッサーが引き続き正しく動作するという約束をすることができないためです(ただし、開発者はこの特定のケースで実行でき、実行しました)。

-Xlintコンパイラフラグを削除しても警告は引き続き発行されるため、-nowarnを使用しないと、残念ながら抑制できません。

17
MH.