AndroidXとは何ですか?


255

Androidのルームライブラリについて読んでいます。彼らはパッケージandroidをに変更したようandroidxです。私はそれを理解しませんでした。誰か説明してもらえますか?

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

これandroidもパッケージで利用可能です。

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
  • 新しいサポートライブラリをパッケージ化するandroidx代わりに何が必要でしたandroidか?
  • ユースケースと既存のプロジェクトの要因に影響を与えます。

4
developer.android.com/topic/libraries/support-library/…をお読みください。androidx.*サポートライブラリのパッケージ階層です。これらはすべて、androidx(アーキテクチャコンポーネントと同様に、他のサポートライブラリの)時代に来るときと同じパッケージの下にあります。
ADM

3
あなたは正確に何を理解しませんでしたか?なぜ彼らはパッケージを変更したのですか?
Rohit5k2

@ADMがandroidxCORE からパッケージに切り替えた理由android
ケムラジ2018

2
彼らは単純化のためにパッケージ構造を再設計しました。ぜひご覧になりたい場合は、IO 2018でもお知らせします。Thx
ADM

回答:


334

AndroidX-Android拡張ライブラリ

AndroidXのドキュメントから

AndroidオペレーティングシステムにバンドルされているパッケージとアプリのAPKにパッケージされているパッケージを明確にするために、新しいパッケージ構造をロールアウトします。今後、android。*パッケージ階層は、オペレーティングシステムに付属するAndroidパッケージ用に予約されます。その他のパッケージは、AndroidXライブラリの一部として、新しいandroidx。*パッケージ階層で発行されます。

AndroidXの必要性

AndroidXは、パッケージ名をより明確にするために再設計されたライブラリです。したがって、これからはandroid階層はandroidのデフォルトクラスのみになり、androidオペレーティングシステムに付属し、他のライブラリ/依存関係はandroidxの一部になります(より理にかなっています)。したがって、今後はすべての新しい開発がandroidxで更新されます。

com.android.support。**:androidx。
com.android.support:appcompat-v7:androidx.appcompat:APPCOMPAT com.android.support:recyclerview-v7:androidx.recyclerview:recyclerview com.android.support:design:com.google.android.material:材料

AndroidXパッケージの完全なアーティファクトマッピング

AndroidXはセマンティックバージョンを使用

以前support libraryはSDKバージョンを使用していましたが、AndroidXはを使用していSemantic-versionます。28.0.0→1.0.0からバージョンを変更します。

現在のプロジェクトを移行する方法

Android Studio 3.2(2018年9月)では、既存のプロジェクトをに移行する直接オプションがありますAndroidX。これにより、すべてのパッケージが自動的にリファクタリングされます。

移行する前に、プロジェクトをバックアップすることを強くお勧めします。

既存のプロジェクト

  • Android Studio> Refactor Menu> Migrate to AndroidX ...
  • それは分析し、下部に屈折ウィンドウを開きます。行われる変更を受け入れます。

画像

新しいプロジェクト

これらのフラグを gradle.properties

android.enableJetifier=true
android.useAndroidX=true

同等のAndroidXパッケージの@Libraryマッピングを確認してください。

Migrate to AndroidXの @ 公式ページを確認してください

Jetifierとは何ですか?

移行のバグ

  • アプリをビルドし、移行後にいくつかのエラーを見つけた場合は、それらの小さなエラーを修正する必要があります。簡単に修正できるので、そこに行き詰まることはありません。
  • サードパーティのライブラリはディレクトリでAndroidXに変換されませんが、実行時にJetifierによって変換されるため、コンパイル時のエラーを心配する必要はありません。アプリは完全に実行されます。

サポート28.0.0は最後のリリースですか?

Androidのサポート改訂28.0.0

これはandroid.supportパッケージで最後の機能リリースになるため、開発者はAndroidX 1.0.0に移行することをお勧めします

Androidは今からandroidxパッケージのみを更新するため、AndroidXを使用してください。

参考文献

https://developer.android.com/topic/libraries/support-library/androidx-overview

https://android-developers.googleblog.com/2018/05/hello-world-androidx.html


2
@androidmalinよろしくお願いします-この情報は
役に立ち

どのような状況でenableJetifierをfalseに設定できますか?
マーク

1
@Mark enableJetifier=falseがデフォルト値です。設定しない場合はfalseです。つまり、ライブラリがAndroidXに再書き込みされることはありません。
Khemraj 2018

4
Android Studioの移行がうまく機能していません。何百ものファイルを手動で修正する必要がありました...重要なコードを実際にプログラムするよりも、Googleツールの変更により、コードの修正に多くの時間を費やしています...ため息
LearningPath

1
これは(3.3)と呼ばれますMigrate to AndroidX
デール

32

ドキュメントに基づいて:

androidxは、Androidオペレーティングシステムにバンドルされているパッケージと、アプリのAPKにパッケージされているパッケージを明確にするための新しいパッケージ構造です。今後、android。*パッケージ階層は、オペレーティングシステムに付属するAndroidパッケージ用に予約されます。他のパッケージは、新しいandroidx。*パッケージ階層で発行されます。

再設計されたパッケージ構造は、より小さくてより集中したライブラリを奨励することです。アーティファクトマッピングの詳細については、こちらをご覧ください

サポートされる最小のSDKレベルが14の場合、「v7」という名前のサポートライブラリ(下位互換性のためのコンポーネントとパッケージを含む)があり、新しい命名により、プラットフォームにバンドルされているAPIと使用されるアプリ開発者向けのライブラリの区分が明確にわかりますAndroidの異なるバージョン。詳細については、公式発表を参照してください。


22

AndroidXは、AndroidチームがJetpack内のライブラリの開発、テスト、パッケージ、バージョン、リリースに使用するオープンソースプロジェクトです。

AndroidXは、元のAndroidサポートライブラリを大幅に改善したものです。サポートライブラリと同様に、AndroidXはAndroid OSとは別に出荷され、Androidリリース間の下位互換性を提供します。AndroidXは、機能の同等性と新しいライブラリを提供することにより、サポートライブラリを完全に置き換えます。

AndroidXには次の機能が含まれています。

  • AndroidXのすべてのパッケージは、文字列androidxで始まる一貫した名前空間にあります。サポートライブラリパッケージは、対応するandroidx。*パッケージにマッピングされています。すべての古いクラスとビルドアーティファクトの新しいクラスへの完全なマッピングについては、パッケージリファクタリングページを参照してください。

  • サポートライブラリとは異なり、AndroidXパッケージは個別に維持および更新されます。androidxパッケージはSemantic Versioning、バージョン1.0.0以降、厳密に使用します。プロジェクト内のAndroidXライブラリを個別に更新できます。

  • 新しいサポートライブラリの開発はすべてAndroidXライブラリで行われます。これには、元のサポートライブラリアーティファクトのメンテナンスと新しいJetpackコンポーネントの導入が含まれます。

AndroidXの使用

既存のプロジェクトを移行する方法については、AndroidXへの移行をご覧ください。

新しいプロジェクトでAndroidXを使用する場合は、コンパイルSDKをAndroid 9.0(APIレベル28)以上に設定し、gradle.propertiesファイルで次の両方のAndroid Gradleプラグインフラグをtrueに設定する必要があります。

  • android.useAndroidX:trueに設定すると、Androidプラグインはサポートライブラリの代わりに適切なAndroidXライブラリを使用します。指定されていない場合、フラグはデフォルトでfalseです。

  • android.enableJetifier:trueに設定すると、Androidプラグインは既存のサードパーティライブラリを自動的に移行して、バイナリを書き換えてAndroidXを使用します。指定されていない場合、フラグはデフォルトでfalseです。

以下のためのアーティファクトマッピングが参照これを


14

この記事Android Jetpack:最近の発表は、Androidのサポートライブラリにとってどのような意味がありますか?それをうまく説明します

今日、多くの人がサポートライブラリをAndroidアプリ開発の不可欠な部分と見なしており、Google Playストアのアプリの99%で使用されています。ただし、サポートライブラリが成長するにつれて、ライブラリの命名規則をめぐって矛盾が生じてきました。

最初は、各パッケージの名前は、そのパッケージでサポートされている最小APIレベルを示していました(例:support-v4)。ただし、26.0.0サポートライブラリのバージョンによって最小APIが14に増えたため、現在、多くのパッケージ名は、サポートされる最小APIレベルとは関係ありません。ときにサポート-V4およびサポート-V7パッケージの両方の14の最小のAPIを持って、それは人々が混乱理由は簡単です!

この混乱を解消するために、Googleでは現在、サポートライブラリを新しいAndroid拡張ライブラリ(AndroidX)パッケージ構造にリファクタリングしています。AndroidXは、各パッケージのコンテンツとサポートされているAPIレベルをより適切に反映するMaven groupIdsおよびArtifactIdsだけでなく、簡略化されたパッケージ名を備えています。

現在の命名規則では、Androidオペレーティングシステムにバンドルされているパッケージと、アプリケーションのAPK (Androidパッケージキット)にパッケージ化されているパッケージも明確ではありません。この混乱を解消するために、バンドルされていないすべてのライブラリはAndroidXのandroidx。*名前空間に移動され、android。*パッケージ階層はAndroidオペレーティングシステムに同梱されているパッケージ用に予約されます。


12

利用可能なすべての答えに私の側から少しだけ追加

AndroidXの必要性

  1. @KhemRajによる驚くべき答えで述べたように、

現在の命名規則では、Androidオペレーティングシステムにバンドルされているパッケージと、アプリケーションのAPK(Androidパッケージキット)にパッケージ化されているパッケージが明確ではありません。この混乱を解消するために、バンドルされていないすべてのライブラリはAndroidXのandroidx。*名前空間に移動され、android。*パッケージ階層はAndroidオペレーティングシステムに付属するパッケージ用に予約されます。

  1. これ以外にも、

    最初は、各パッケージの名前は、そのパッケージでサポートされている最小APIレベルを示していました(例:support-v4)。ただし、サポートライブラリのバージョン26.0.0では最小APIが14に増えたため、現在、多くのパッケージ名は、サポートされる最小APIレベルとは関係ありません。support-v4とsupport-v7の両方のパッケージの最小APIが14である場合、人々が混乱する理由が簡単にわかります!。そのため、AndroidXでは、APIレベルに依存していません。

もう1つの重要な変更は、AndroidXアーティファクトが個別に更新されるため、すべての依存関係を一度に変更する必要がなく、プロジェクト内の個々のAndroidXライブラリを更新できるようになることです。これらの苛立たしい「すべてのcom.android.supportライブラリは、まったく同じバージョン仕様を使用する必要があります」というメッセージは過去のものになります。


7

このAndroid Dev SummitビデオからAndroidXについて知りました。要約は-

  1. サポートライブラリがなくなりました Androidのサポートライブラリは、サポートライブラリの名前空間の下でGoogleによって維持されることはありません。したがって、サポートライブラリのバグの修正を見つけたい場合は、プロジェクトをAndroidXに移行する必要があります。
  2. パッケージ管理の向上標準化された独立したバージョン管理用。以前のサポートライブラリのバージョン管理はあまりに混乱していたためです。「すべてのcom.android.supportライブラリは完全に同じバージョン仕様を使用する必要があります」というメッセージの痛みを解放します 。
  3. 他のGodライブラリがAndroidXに移行されました。GooglePlayサービス、Firebase、Mockito 2などがAndroidXに移行されます。
  4. 新しいライブラリはAndroidXアーティファクトを使用して公開されます: すべてのライブラリはAndroid JetpackのようにAndroidX名前空間にあります

4

AppCompatバージョンのサポートと同じですが、v4およびv7バージョンの混乱が少ないため、android XML要素のさまざまなコンポーネントを使用することで非常に役立ちます。


4

androidxsupport library後に交換され28.0.0ます。それを使用するには、プロジェクトを移行する必要があります。androidx使用しSemantic Versioningます。AndroidXライブラリ名とパッケージ名で示されるバージョンによって、使用が混乱することはありません。生活が楽になる

[AndroidXとサポートの互換性]


3

AndroidXは、AndroidチームがJetpack内のライブラリの開発、テスト、パッケージ、バージョン、リリースに使用するオープンソースプロジェクトです。

数時間の苦労の末、私はapp / build.gradleに以下を含めることで解決しました:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

これらのフラグをgradle.propertiesに入れてください

android.enableJetifier=true
android.useAndroidX=true

Changes in gradle:

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha04'

Androidスタジオで移行する場合、アプリ/ gradleファイルは、標準ライブラリの修正ライブラリ実装で自動的に更新されます

参照:https : //developer.android.com/jetpack/androidx/migrate


0

Androidには、いくつかの異なるライブラリセットが用意されています。1つはAndroidサポートライブラリと呼ばれ、もう1つはAndroidXと呼ばれます。[android。*アーティファクトを使用]を選択すると、AndroidXを使用することを示します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.