Jetifier

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

Jetifier をインストールする

Jetifier をインストールするには、zip ファイルをダウンロードして解凍します。デバイスに Java バージョン 1.8 以降をインストールしておく必要があります。

使用方法

ライブラリを移行するには、現在のライブラリへのパスと、Jetifier で作成される出力ファイルへのパスを渡します。Jetifier は、ネストされたアーカイブを含む JAR、AAR、ZIP ファイルに対応しています。

./jetifier-standalone -i <source-library> -o <output-library>

オプション

Jetifier ツールのコマンドで使用できるオプションを次の表に示します。

オプション 必須 説明
-i--input <path> 入力ライブラリのパス(JAR、AAR、ZIP)
-o--output <path> 出力ファイルのパス。ファイルがすでに存在する場合は、Jetifier によって上書きされます。
-c--config <path> × カスタム構成ファイルのパス(省略可)。
-l--log <level> × ロギングレベル。指定できる値は次のとおりです。
  • error(エラー)
  • warning(警告)
  • info(情報)
  • verbose(詳細)
指定しなかった場合、デフォルトは「warning」です。
-r × リバースモードで実行します(「de-jetification」)。
-rebuildTopOfTree
--rebuildTopOfTree
× 生成された POM ファイルに従って、Maven ディストリビューションの ZIP を再ビルドします。
設定した場合、書き換えられたライブラリはすべてサポート ライブラリの一部であると想定されます。jetification では不要です。
-s--strict × ルールがないときはフォールバックせず、代わりにエラーをスローします。
-stripSignatures
--stripSignatures
× 署名付きライブラリを jetify するときはエラーをスローせず、代わりに署名ファイルを削除します。
-t-timestamp <arg> × アーカイブされたエントリで変更時刻として使用するタイムスタンプのポリシーを指定します。値は、keepPrevious(デフォルト)エポックまたは現在です。

次の例では、現在のディレクトリのライブラリ libraryToProcess.aar に対して Jetifier ユーティリティを実行し、同じディレクトリの result.aar に出力を書き込みます。

./jetifier-standalone -i libraryToProcess.aar -o result.aar

使用上の注意

Jetifier は android.support.* パッケージを指す Java、XML、POM、ProGuard の参照を移行して、対応する androidx.* パッケージを指すように変更します。

android.support.* の ProGuard ワイルドカードは必ずしも androidx.* パッケージに直接マッピングされるとは限らないので、Jetifier は可能な置き換えをすべて生成します。

サポート ライブラリのアーティファクトではないタイプが android.support.* パッケージにある場合でも、そのタイプのマッピングがある限り、Jetifier はそのタイプを移行します。しかし、すべてのカスタムタイプをカバーする汎用的なマッピング ルールがあるとは限らないので、そのような移行が機能する保証はありません。

高度な使用方法

Jetifier ユーティリティには以下のような高度な使い方があります。

リバースモード

-r フラグを渡すと、Jetifier ユーティリティはリバースモードで動作します。このモードでは、AndroidX API がサポート ライブラリの同等の API に変換されます。AndroidX API を使用するライブラリを開発し、なおかつサポート ライブラリを使用するバージョンも配布する必要がある場合は、リバースモードが役に立ちます。

次の例では、現在のディレクトリのライブラリ myAndroidXLib.aar に対して Jetifier ユーティリティをリバースモードで実行し、同じディレクトリの supportLibVersion.aar に出力を書き込みます。

./jetifier-standalone -r -i myAndroidXLib.aar -o supportLibVersion.aar

カスタム構成ファイル

Jetifier ツールは、サポート ライブラリのクラスを同等の AndroidX クラスにマッピングするために構成ファイルを使用します。必要であれば、このマッピングを変更するカスタム構成ファイルを作成できます。さらに、実際はサポート ライブラリに含まれていない新しいクラスをマッピングに追加することもできます。たとえば、独自のクラスの一つが、AndroidX を使用するように記述された後継クラスに置き換えられるように、マッピングを変更できます。

カスタム構成ファイルを使用する手順は次のとおりです。

  1. Jetifier ユーティリティの jetifier-core-*.jar ファイルから default.generated.config ファイルを抽出して保存します。
  2. 構成ファイルのコピーに必要な編集を加えます。
  3. -c フラグを使用して、ファイルをユーティリティに渡します。

次に例を示します。

./jetifier-standalone -i libraryToProcess.aar -o result.aar -c myCustomMapping.config