LoginSignup
26
12

More than 3 years have passed since last update.

AndroidXとSupportライブラリとは

Last updated at Posted at 2019-09-25

この記事の概要

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で書き直すべきなのではと思います。

26
12
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
12