使用できる2つの異なる依存関係があることに気付いたとき、プロジェクトで制約レイアウトを使用しようとしていました。
com.Android.support.constraint:constraint-layout
androidx.constraintlayout:constraintlayout
これらの2つまたはいくつかの推奨事項に違いはありますか?
編集
Googleはcom.Android.support
のサポートを停止しており、ユーザーに新しいandroidx
同等のものへの移行を促しています。
注:Android 9.0(APIレベル28)のリリースでは、Jetpackの一部であるAndroidXと呼ばれるサポートライブラリの新しいバージョンがあります。 AndroidXライブラリには、既存のサポートライブラリが含まれ、最新のJetpackコンポーネントも含まれています。
サポートライブラリを引き続き使用できます。履歴アーティファクト(バージョン27以前、およびAndroid.support。*としてパッケージ化されたもの)は、引き続きGoogle Mavenで利用できます。ただし、新しいライブラリの開発はすべてAndroidXライブラリで行われます。
すべての新しいプロジェクトでAndroidXライブラリを使用することをお勧めします。既存のプロジェクトをAndroidXに移行することも検討する必要があります。
公式の 移行ガイド および対応するライブラリの同等物を以下に示します。
すべてのサポートライブラリはv4 v7 v12 v13などのタグをドロップし、すべてがandroidxパッケージにリファクタリングされます。
これらは基本的に同じですが、今後の参照のために、androidxはアプリで使用する必要があるライブラリになります。
今週(2018年5月14日の週)に登場するAndroid Studio 3.2カナリアには、androidxパッケージへの自動リファクタリングを可能にするツールが必要です。これについては、Google I/O 2018で発表されました。
AndroidXとサポートライブラリの違いの1つは、サポートライブラリを使用する場合、すべてのサポートライブラリが同じバージョンでなければならないことですが、androidXではそのようなことはありません。
もう1つは、サポートライブラリでは、ほとんどの場合、アプリにコンポーネントが必要なときに、本当に必要のない他の多くのものがある依存関係を追加する必要があるということです。 AndroidXでは、必要な依存関係のみを追加でき、それ以上は追加できません。
これは役立つかもしれませんが、
次のようないくつかの違いがあります。
現在の命名規則では、Androidオペレーティングシステムにバンドルされているパッケージと、アプリケーションのAPK(Androidパッケージキット)にパッケージ化されているパッケージは明確ではありません。この混乱を解消するために、バンドルされていないすべてのライブラリはAndroidXのandroidx。*名前空間に移動され、Android。*パッケージ階層はAndroidオペレーティングシステムに同梱されるパッケージ用に予約されます。例:Android.content.Intent;
はAndroid OS依存であり、androidx.fragment.app.Fragment;
はAPKに同梱されています
最初は、各パッケージの名前は、そのパッケージでサポートされている最小のAPIレベルを示していました(例:support-v4)。ただし、サポートライブラリのバージョン26.0.0では、最小APIが14に増加したため、現在、多くのパッケージ名は、サポートされている最小APIレベルとは無関係です。 support-v4パッケージとsupport-v7パッケージの両方の最小APIが14である場合、人々が混乱する理由を簡単に確認できます。そのため、AndroidXでは、APIレベルに依存しません。
上記および AndroidXへの移行 で述べたように、ASで簡単に移行できます。
Android Studio 3.2以降では、リファクタリング>移行先AndroidXメニューバーから。
違いについて(TLDR:減損なし、強調鉱山)
AndroidXは、元のサポートライブラリAPIパッケージをandroidx名前空間にマップします。パッケージとMavenアーティファクト名のみが変更されました。 クラス、メソッド、およびフィールド名は変更されませんでした。