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" }
参考:リリースノート