365連休

にわかのandroidとかの開発メモ。

【解決法】Use the Lifecycle Java 8 API provided by the lifecycle-common-java8 library instead of Lifecycle annotations for faster incremental build.

AndroidXのLifeCycleライブラリのリリースノートによると、

2.2.0以降でlifecycle-extensionsのAPIがサポートが終了になったため、

必要とする特定のLifeCycleアーティファクトの依存関係を追加することが推奨されています。

 

★lifecycle-extensions の API はサポートが終了しました。代わりに、必要とする特定の Lifecycle アーティファクトの依存関係を追加してください。

 

    dependencies {
        def lifecycle_version = "2.2.0"
        def arch_version = "2.1.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"
    }
    

 

しかし、lifecycle-extensionsを削除して、上記の依存関係を追加すると何やらLintがビビビッと反応します。

 

Use the Lifecycle Java 8 API provided by the lifecycle-common-java8 library instead of Lifecycle annotations for faster incremental build.

 

日本語でおけ。

 

意訳

ライフサイクル共通 java8 ライブラリで提供されるライフサイクル Java 8 API を使用して、ライフサイクルアノテーションを使用して、増分ビルドを高速化します。

 

直訳し過ぎで意味不明。

 

意訳ver2

lifecycle-common-java8ライブラリを使用して、増分ビルドを高速化する。

 

あれ?

lifecycle-common-java8もimplementationしてあるよ?

 

 

そう、余計な依存を追加していたのです。

lifecycle-compilerはJava1.7以下の時に使うやつです。

 

というか公式の依存関係テンプレのコメントに書いてありますw

 

 

    dependencies {
        def lifecycle_version = "2.2.0"
        def arch_version = "2.1.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
        // Lifecyclesのみ (ViewModelまたはLiveData無し)
        implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // 置き換え - Java8を使用する場合lifecycle-compilerの代わりに使用する
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - ServiceでLifecycleOwnerを使うhelper
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwnerはアプリプロセスのLifeCycleを提供する
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"
    }
    

 

 

 

参考:リリースノート

developer.android.com