問題タブ [android-jetifier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android Studio に同梱されている jetifier のバージョンを確認する
Android Studio に同梱されている Jetifier を使用して、いくつかのサードパーティ ライブラリを AndroidX 互換バージョンに変換しようとしています。
Android Studio (v 3.5.2) にパッケージ化されている Jetifier のバージョンを知る必要があります。どのバージョンの Jetifier がどのバージョンの Android Studio または gradle バージョンにバンドルされているかのマッピングへのリンクはありますか?
android - AndroidX Jetifier は、まだサポート ライブラリを使用しているサードパーティの推移的な依存関係を変換できない/変換できませんでした
最近、AndroidXを使用するようにプロジェクトを移行しました
AndroidXに移行した後、ライブラリがまだSupport Libraryを使用しているため、アプリがクラッシュします。AndroidXへの変換に失敗したサードパーティの依存関係/ライブラリのリストを次に示します。
com.clevertap.android:clevertap-android-sdk:3.4.2
com.readystatesoftware.chuck:library:1.1.0
com.ncapdevi:frag-nav:2.4.0
jp.wasabeef:recyclerview-animators:2.3.0
com.github.chivorns:smartmaterialspinner:1.1.6
com.facebook.android:facebook-android-sdk:5.0.1
com.github.PierfrancescoSoffritti:AndroidYouTubePlayer:7.0.1
(主要な API の変更のため、まだ 10.xx にアップグレードできません)com.github.nikartm:image-support:1.0.5
私のセットアップ:
私がこれまでに行ったこと:
- Android Studio
Refactor -> Migrate to AndroidX
のツールを使用しましたが、時間がかかるため強制終了しました android.enableJetifier=true
&android.useAndroidX=true
- シェル スクリプトを使用して、サポート ライブラリからAndroidXにアーティファクト、クラス、およびインポートを手動でマッピングします。@Danlewに感謝します。
- AndroidX
:app:dependencies
アーティファクトを使用するためにサードパーティの依存関係がすでに移行されていることをすでに確認しましたが、それらのほんの一部のみです(上記の依存関係リストでは失敗しました) ./root_project/.idea
、./root_project/.gradle
&~/.gradle/caches
(コンパイル エラー/IDE エラーを修正するための削除、参照: AndroidX 移行依存関係 / ライブラリ- Jetifier を理解する: Jetifierとは? &公式 Android ドキュメント
- Glide & Daggerのようなアノテーション プロセッサにAndroidXを使用する回避策を実行しました。
- aar が存在するライブラリの
~/.gradle
ディレクトリを確認していますが、残念ながら、上記の & その他のライブラリでは失敗しています。jetified-*
jetified
clevertap
私の結論としては、サポート ライブラリのインポート/クラスが検出された場合は、サードパーティ ライブラリjetifier
のバイナリを書き換えて動作し、それぞれAndroidXに変更 (ジェット化/マッピング) します。.class
しかし、私の場合、上記の依存関係は正しいAndroidXインポートを使用せず、結果としてランタイム クラッシュが発生します。これは、 Support Libraryの推移的な依存関係があるためです。
Jetifier は現在、サードパーティ ライブラリ内の推移的な依存関係もサポートしていませんか? しかし、奇妙なことに、いくつかのライブラリで機能します(上記のリストにはありません)
[更新 1]
それまでの間(クイックフィックス):
- ライブラリのすべての推移的な依存関係を1つずつ徹底的にダウンロードしました
jetifier-standalone
ライブラリの代わりにコマンドを使用するaar
- ライブラリ
aar
とその依存関係を手動でapp/build.gradle.kts
asに追加するflatDirs
これは本当に回避策ですか、他にできることはありますか?
[更新2]
維持されたバージョンのチャックも使用しています。しかし、この同じ問題も見つかりました:
サードパーティのライブラリを確認した後、このライブラリaar
に使用した後に手動で追加することにもなりましたjetifier-standalone
:
com.clevertap.android:clevertap-android-sdk:3.4.2
com.github.nikartm:image-support:1.0.5
api
多くの人は代わりにimplementation
使用することも推奨していますが、私にとっては、推移的な依存関係でプロジェクトを肥大化させたくありません
他のSOでも以下をお勧めします:
- ライブラリを削除するか、
- androidxをサポートするためにフォークした/作者がアップグレードするのを待っている
- それらの特定のライブラリを手動で使用
jetifier-standalone
し、ローカル aar として含める (これが現在の私の最善のアプローチです)
jetifier
これを公式ドキュメントに記載できない限り、その制限のために: https://developer.android.com/jetpack/androidx/releases/jetifier
私たちにできることは最小限しかないように思えますが、サードパーティの作成者の多くがすぐにAndroidXにアップグレードすることを願っています。
参照用のボーナス記事は次のとおりです。