###この記事の概要
AndroidXとV7やDesign等のSupportライブラリの違いについて説明します。
とある参考書を元にCoodinatarLayoutのテストプログラムを書いていたら、詰まったのでとりあえず記事にしてみます。
間違っていたら、コメントで教えてください。
ちなみに参考書はこちらです。
基礎&応用力をしっかり育成!Androidアプリ開発の教科書 Kotlin対応 なんちゃって開発者にならないための実践ハンズオン
#両者の違い
乱暴に言えば新しいか古いかです。
当然、新しい方のAndroidXをGoogleは推奨しています。
##Supportライブラリとは
ザックリ言うと、新しいOSバージョンでしか使えないクラス(ToolBarとか)を**古いOSバージョンでも使えるように互換性をもたせるライブラリ(パッケージ)**です。
これがないと古いOSで使えないクラス(Fragmentとか)が多すぎて大変です。
ただ、ほぼ同じ機能を持っていて改良されているAndroidXが出たので、GoogleはAndroidXの使用を推奨しています。
同じ機能を持つのでAndroidXとSupportライブラリ、クラス名は一緒でもパッケージ名は違うものが存在します。
ややこしいので、この記事ではAndroidXより前はまとめてSupportライブラリと呼称しています。
色々細かな説明もありますが、それは下記のURLを参考にしてください。
https://developer.android.com/topic/libraries/support-library/features?hl=JA
OSバージョンとは?
AndroidのOSのバージョンのことを指します。
ややこしいのが、
Android5.1、
Lollipop、
API21
と同じOSバージョンに対して3つの呼び方があることです。
記事の本題ではないので、細かく触れませんが
正式名称、
あだ名、
開発用の名称
くらいの認識でOKです。
##AndroidXとは
API28以降で導入された新しいSupportライブラリです。
とはいっても、Supportライブラリを改良したものなので、使い方はあまり変わりありません。
そして、(繰り返すようですが)Supportライブラリと同じクラス名のものが存在します。
重要なのは、AndroidXとSupportライブラリは共存出来ない、ということです。
下記を参考にしてください。
https://developer.android.com/jetpack/androidx?hl=JA
##詰まったポイント
問題点
参考書にはSupportライブラリのV7パッケージを使えと言われているのに、実際にAndroidStudioへ書き込むとMissingClassと表示され、使用できない。
原因
AndroidXを使用する設定だったのに、サポートライブラリを使おうとしていたこと。
解決方法
①AndroidXをおとなしく使う。
(パッケージ名が違いますが、機能とクラス名は一緒なので、正直これが一番だと思います。)
②プロジェクトを作り直して、use androidx. artifacts*のチェックを外す
*ただし、API29以上は強制的にチェックがついています。
その場合はOSバージョンを下げるか、①しかないと思います。
下記のURLがかなり参考になります。
https://akira-watson.com/android/androidx.html
##まとめ
・Supportライブラリの後継が、AndroidX
・SupportライブラリとAndroidXは一緒に使えない
・基本的にはAndroidXを推奨
####独り言
参考書、2019年7月に発売されたばかりのものなんですが、AndroidXに関しては触れていません。
正直、Supportライブラリではなく、AndroidXで書き直すべきなのではと思います。