RecyclerViewが最初から入っていた※2019/05/10時点の状況です。Kotlinを写経した時に遭遇したエラーの覚書です。参考にさせていただきました。Medium発生した現象AppCompatActivityを継承したクラス内でデータの変更をobserveするために下記のようなコードを書くとコンパイルエラーが発生しました。observeメソッドのowner引数にthisを渡している箇所です。原因:LifecycleOwnerを実装していないクラスを継承していたため(推移的依存関係が絡むので結構やっかい)エラーメッセージにあるLifecycleOwnerを実装しているのは、実際にはAppCompatActivityの上流のComponentActivityになります。このComponentActivityの含まれるライブラリのバージョンによってはLifecycleOwnerを実装していないため、このようなエラーメッセージが発生しました。androidx.appcompat:appcompat:1.0.2となっている箇所のバージョンアップをするか、recyclerview:1.1.0-alpha05をimplementationしている箇所を削除すればコンパイルエラーは解決するのですが、原因がわかるまでややこしかったのでもう少し詳しく説明します。androidx.core:core1.1.0-beta01がクセモノ?エラーが発生した時のbuild.gradleのdependenciesではrecyclerview:1.1.0-alpha05をインストールするようにしている箇所があります。'androidx.recyclerview:recyclerview:1.1.0-alpha05'これはandroidx.core:core1.1.0-beta01@aarを依存するライブラリにしています。androidx.core:coreは他のところからも依存されていますが、recyclerviewが依存しているのが最新のため、gradleの推移的依存関係の管理により全てに適用してしまいます。(gradleの推移的依存関係の解決)このバージョンのソースコードを見ると、androidx.core.app.ComponentActivity内ではLifecycleOwnerはimplementsされていません。ややこしいことに、androidx.appcompat:appcompat:1.0.2が参照している古いバージョンであるandroidx.core:core1.0.1ではLifecycleOwnerが実装されています。実装していたりしていなかったりしてるのは何故なのかと疑問に思いました。1.0.0-alpha01からandroidx.core.app.ComponentActivityに新しいサブクラス、androidx.activity.ComponentActivityが出来たようです。パッケージが変わっていますね。FragmentActivityが新クラスを継承するようになったことから、androidx.core.app.ComponentActivityからLifecycleOwnerの実装が削除されました。androidx.activity:activity1.0.0-alpha01@aarのようなライブラリが新しく作られて、新クラスはandroidx.core:coreからは分離されたようです。appcompatが古かった図であらわすとこのような感じです。androidx.appcompat:appcompat:1.0.2が古いため、androidx.activity.ComponentActivityを継承していないのにもかかわらず参照先ライブラリが新しくなっており既にLifecycleOwnerの実装が削除されていたというわけです。本来androidx.appcompat:appcompat:1.0.2はandroidx.core:core:1.0.1に依存していたのがgradleの推移的依存関係の解決により、recyclerview:1.1.0-alpha05が依存するより新しいライブラリで上書きされてしまったのですね。当エントリはサンプルコードを書いていましたので、バージョンに-alphaとか付いている安定バージョンではないものを使っています。安定バージョンを使い、依存ライブラリ同士のバージョンをなるべく揃えるようにすれば、AndroidXでもこの状況はそんなに発生しないかなと思っています。gradleの推移的依存関係の解決ライブラリが依存しているライブラリが別のライブラリからも依存されていてさらに依存してしまう関係のことを推移的な依存関係といいます。gradleでは競合してしまうライブラリはその中で一番最新のバージョンのものを強制的に適用することで推移的依存関係の解決を行っています。参考サイト様がとてもわかりやすく説明してくださっています。依存関係は以下のコマンドで表示できます。:app:dependenciesandroidx.appcompat:appcompat:1.0.2が依存するandroidx.core:core:1.0.1が上書きされているのがわかります。自分で推移的依存関係の解決を行いたい時はこちらの参考サイト様が参考になりました。'androidx.appcompat:appcompat:1.1.0-alpha05'recyclerviewに合わせてアップグレードします。AndroidXのライブラリ同士のバージョンをなるべく揃えるようにします。'androidx.recyclerview:recyclerview:1.1.0-alpha05'の箇所を削除します。ついでに↓のappcompatも削除しても大丈夫です。RecyclerViewが最初から入っていたです。新しいバージョンのライブラリを使いたいというときなどは、バージョンを指定して導入すればよいと思います。Componentsだけで色んなライブラリを含んでいるという話です。2019/05/10時点の最新バージョンです。1.1.0-alpha06https://mvnrepository.com/artifact/com.google.android.material/material/1.1.0-alpha06recyclerview入っていますね。viewpager2が入っています。IDを作ったがG...私はgradleを使いこなしていると言うには程遠いレベルですが、E...2015-09-02DrawerLayout内でマルチタッチ処理を行うとArrayIndexOutOfBoundsExc...「自分用メモ」です。joinedプログラミングLinksはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!sakura_bird1さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。