問題タブ [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.

0 投票する
0 に答える
91 参照

android - Android Studio に同梱されている jetifier のバージョンを確認する

Android Studio に同梱されている Jetifier を使用して、いくつかのサードパーティ ライブラリを AndroidX 互換バージョンに変換しようとしています。

Android Studio (v 3.5.2) にパッケージ化されている Jetifier のバージョンを知る必要があります。どのバージョンの Jetifier がどのバージョンの Android Studio または gradle バージョンにバンドルされているかのマッピングへのリンクはありますか?

0 投票する
1 に答える
2885 参照

android - AndroidX Jetifier は、まだサポート ライブラリを使用しているサードパーティの推移的な依存関係を変換できない/変換できませんでした

最近、AndroidXを使用するようにプロジェクトを移行しました

AndroidXに移行した後、ライブラリがまだSupport Libraryを使用しているため、アプリがクラッシュします。AndroidXへの変換に失敗したサードパーティの依存関係/ライブラリのリストを次に示します。

  1. com.clevertap.android:clevertap-android-sdk:3.4.2
  2. com.readystatesoftware.chuck:library:1.1.0
  3. com.ncapdevi:frag-nav:2.4.0
  4. jp.wasabeef:recyclerview-animators:2.3.0
  5. com.github.chivorns:smartmaterialspinner:1.1.6
  6. com.facebook.android:facebook-android-sdk:5.0.1
  7. com.github.PierfrancescoSoffritti:AndroidYouTubePlayer:7.0.1(主要な API の変更のため、まだ 10.xx にアップグレードできません)
  8. com.github.nikartm:image-support:1.0.5

私のセットアップ:

私がこれまでに行ったこと:

  1. Android StudioRefactor -> Migrate to AndroidXのツールを使用しましたが、時間がかかるため強制終了しました
  2. android.enableJetifier=true&android.useAndroidX=true
  3. シェル スクリプトを使用して、サポート ライブラリからAndroidXアーティファクト、クラス、およびインポートを手動でマッピングします。@Danlewに感謝ます。
  4. AndroidX:app:dependenciesアーティファクトを使用するためにサードパーティの依存関係がすでに移行されていることをすでに確認しましたが、それらのほんの一部のみです(上記の依存関係リストでは失敗しました)
  5. ./root_project/.idea./root_project/.gradle& ~/.gradle/caches(コンパイル エラー/IDE エラーを修正するための削除、参照: AndroidX 移行依存関係 / ライブラリ
  6. Jetifier を理解する: Jetifierとは? &公式 Android ドキュメント
  7. Glide & Daggerのようなアノテーション プロセッサにAndroidXを使用する回避策を実行しました。
  8. aar が存在するライブラリの~/.gradleディレクトリを確認していますが、残念ながら、上記の & その他のライブラリでは失敗しています。jetified-*私の <code>~/.gradle</code> コンテンツのスクリーンショットjetifiedclevertap

私の結論としては、サポート ライブラリのインポート/クラスが検出された場合は、サードパーティ ライブラリjetifierのバイナリを書き換えて動作し、それぞれAndroidXに変更 (ジェット化/マッピング) します。.class

しかし、私の場合、上記の依存関係は正しいAndroidXインポートを使用せず、結果としてランタイム クラッシュが発生します。これは、 Support Libraryの推移的な依存関係があるためです。

Jetifier は現在、サードパーティ ライブラリ内の推移的な依存関係もサポートしていませんか? しかし、奇妙なことに、いくつかのライブラリで機能します(上記のリストにはありません)

[更新 1]

それまでの間(クイックフィックス):

  1. ライブラリのすべての推移的な依存関係を1つずつ徹底的にダウンロードしました
  2. jetifier-standaloneライブラリの代わりにコマンドを使用するaar
  3. ライブラリaarとその依存関係を手動でapp/build.gradle.ktsasに追加するflatDirs

これは本当に回避策ですか、他にできることはありますか?

[更新2]

維持されたバージョンのチャックも使用しています。しかし、この同じ問題も見つかりました:

サードパーティのライブラリを確認した後、このライブラリaarに使用した後に手動で追加することにもなりましたjetifier-standalone:

  1. com.clevertap.android:clevertap-android-sdk:3.4.2
  2. com.github.nikartm:image-support:1.0.5

api多くの人は代わりにimplementation使用することも推奨していますが、私にとっては、推移的な依存関係でプロジェクトを肥大化させたくありません

のSOでも以下をお勧めします:

  1. ライブラリを削除するか、
  2. androidxをサポートするためにフォークした/作者がアップグレードするのを待っている
  3. それらの特定のライブラリを手動で使用jetifier-standaloneし、ローカル aar として含める (これが現在の私の最善のアプローチです)

jetifierこれを公式ドキュメントに記載できない限り、その制限のために: https://developer.android.com/jetpack/androidx/releases/jetifier

私たちにできることは最小限しかないように思えますが、サードパーティの作成者の多くがすぐにAndroidXにアップグレードすることを願っています。

参照用のボーナス記事は次のとおりです。

  1. can-i-drop-jetifierライブラリを使用して、ライブラリが (推移的に) jetifier を有効にする必要があるかどうかを検出できます。
  2. このベビーステップでAndroidXに移行する時が来ました
  3. AndroidXによるより良い構造のパッケージングと、途中での頭痛の種