Jetifierとは何ですか?


96

Jetifierとは何ですか?たとえば、androidx-packaged依存関係を使用して新しいプロジェクトを作成するには、この新しいプロジェクトで次の行をgradle.propertiesファイルに追加する必要があります。

android.enableJetifier=true

では、それはどういう意味ですか-「ジェット機を有効にする」?


28
IIRC、Jetifierはドキュメント化されていないGooglyテクノロジーの一部であり、推移的な依存関係を自動的に変換してAndroidXライブラリを使用するようになっています。たとえば、にあるとimplementation "com.commonsware.cwac:document:0.3.0"しますdependencies。そのライブラリバージョンは、に推移的に依存していcom.android.support:support-annotations:27.0.2ます。ただし、androidx.annotation:annotation他のAndroidX依存関係の使用の一部として使用する必要があります。Jetifierはどういうわけかcom.commonsware.cwac:document使用するために更新しますandroidx.annotation:annotation
CommonsWare 2018

回答:


66

今年のGoogle I / O(18)、Googleは、開発者の生活を楽にするライブラリのセット/コレクションであるJetpackを発表しました。

Jetpackには、以前に導入されたAndroidアーキテクチャコンポーネント(ViewModel、Room、Paging、LiveDataなど)と、WorkManager、Navigationなどの新しく導入されたアーキテクチャコンポーネントが含まれています。このJetpackの他に、AndroidX、AndroidKTXなどの他のライブラリセットもあります。

AndroidXは、サポート、データバインディング、デザインなどのAndroidサポートライブラリの新しいパッケージ構造です。

たとえば、今では病棟の開発者はandroidx.databindingを使用します。android.databindingの代わりにプロジェクトにライブラリをインポートしている間

これにより、GoogleはライブラリパッケージにSemVerまたはセマンティックバージョニングを追加できます。開発者にとって、これはすべてのサポートライブラリに同じサポートライブラリバージョンを使用する必要がないことを意味します。AndroidXライブラリは独自のバージョン管理を維持すると言って、すべてのサポート以上。

開発者にとってのもう1つの利点は、プロジェクト内のすべてのサポートライブラリで同じバージョンを維持する必要がないことです。

Jetifierについては、ビルド時に依存関係のすべてのサポートパッケージを変換します。Jetifierの公式ドキュメントに従って

Jetifierツールは、サポートライブラリに依存するライブラリを移行して、代わりに同等のAndroidXパッケージに依存します。このツールを使用すると、Android StudioにバンドルされているAndroid Gradleプラグインを使用する代わりに、個々のライブラリを直接移行できます。

プロジェクトでAndroidXを使用するには、プロジェクトのtargetSdkVersionを28に設定し、gradle.propertiesファイルに次の2行を追加する必要があります。

android.useAndroidX=true

android.enableJetifier=true

これがあなたの質問に答えることを願っています。

編集する

このリンクには、すべてのサポートライブラリコンポーネントとそのAndroidXカウンターパートのマッピングが含まれています。

また、AndroidXの詳細な説明については、このブログを参照してください。


33
「Jetifierとは何ですか?」という質問に実際に答えているのではなく、AndroidXとJetpackについて考えているだけです。
デビッドミゲル

2
@DavidMiguel私はそれが何を意味するのかを尋ねられた主な質問への回答を提供しました-「ジェット機を有効にする」?私の回答が部分的であると思われる場合は、それに応じて私の回答を更新します。
Silwar、

71

に慣れていると仮定しますAndroidX。そうでない場合は、@ この投稿をご覧ください。

Jetifiersupport librariesすべての依存関係をAndroidX自動的に変換します。これを設定しない場合true、プロジェクトには、サポート(28.0.0バージョン以降非推奨)と冗長なAndroidXパッケージの両方が含まれます。

例えば

あなたがPhotoView.javaあなたの依存関係にある場合。それはサポートライブラリを使用していますAppCompatImageView

import android.support.v7.widget.AppCompatImageView;

このクラスはandroidxパッケージに移動されたので、どうやっPhotoViewてandroidx を取得しますAppCompatImageViewか?そして、アプリはまだデバイスで実行されます。

誰がこれを実行しましたか?

Jetifier。ビルド時に依存関係のすべてのサポートパッケージを変換します。

Jetifierはプロジェクトのビルド中にに変換さandroid.support.v7.widget.AppCompatImageViewandroidx.appcompat.widget.AppCompatImageViewます。

結論

サポートライブラリからAndroidXに移行する場合は、Jetifierを有効にすることが重要です

AndroidXの詳細については、この投稿をご覧ください。

情報

依存関係クラスを使用しているときにJetifierを有効にすると、コードにコンパイル時エラーが表示される場合があります。を削除して削除し.idea.gradleプロジェクトを再同期できます。

画像2

画像1


10
.idea / librariesを削除してGradleを再同期することで、コンパイル時のエラーを取り除くことができます。
Clo Knibbe

1
ここで述べたように、Jetifierは実行時ではなくビルド時に機能すると思います。Gradleでandroid.enableJetifier = trueを使用するか、スタンドアロンのJetifierツールdeveloper.android.com/studio/command-line/jetifierを使用してandroidx に移行できます。これらのオプションはどちらもビルド時にパッケージ名を置き換えるため、古いサポートライブラリはパッケージングの一部にもなりません。
Nishanth、

6

Jetifierは、AndroidプロジェクトをAndroidXに移行するのに役立ちます。

Jetifierは、サードパーティのライブラリをAndroidXプロジェクトと互換性のあるものにするのに役立ちます。

Androidプロジェクトでサードパーティのライブラリを使用していない場合は、Jetifierを使用する必要はありません。AndroidXに移行する場合に備えて、Jetifierはプロジェクトと互換性のある「サードパーティのライブラリを作成する」ためにのみ役立つためです。したがって、プロジェクトでJetifierを使用するには、gradle.propertiesに以下のコードを記述します。

android.enableJetifier=true
android.useAndroidX=true

AndroidXに移行せず、Androidライブラリを使用する以前の方法(例:com.android.support)を使用している場合、これらのサードパーティライブラリは以前の方法と互換性があるため、互換性を持たせる必要はありません。 Androidライブラリを使用する。その場合、Jetifierを使用する必要はありません。そのため、上記の行を記述する必要はありません。または、以下のように記述するだけで、後で値を変更してandroidxに移動できます。

android.enableJetifier=false
android.useAndroidX=false

4

Jetifier

jetifierは自動的に移行する便利なツールであるdependenciesとしAndroidXビルド時に。それがなければ、移行する前に使用するすべての依存関係がAndroidXバージョンを持っている必要があり、それはおそらくしばらくは起こりません。

注意すべき重要な制限があります:jetifierはパッケージ化されたアーティファクトでのみ機能します。自分で更新することが予想されるソースコードでは機能しません。

AndroidXを有効にするには、gradle.propertiesファイルに2つのフラグを追加する必要があります。最初のフラグはAndroidプラグインにのAndroidX代わりにパッケージを使用するように指示しAppCompat、2番目のフラグはJetifier:を有効にします

android.useAndroidX=true
android.enableJetifier=true

参照してください。このこの AndroidXについての詳細を理解するためにポストを


3

公式ドキュメントから

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

互換性のために役立ちます。コンシューマーが使用androidXし、プロデューサーがを使用する場合support。たとえば、プロジェクトが[例]の代わりにAndroidXを使用する依存関係を使用したい場合support libraryAndroidX


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