web-dev-qa-db-ja.com

AndroidXは依存関係/ライブラリを移行します

プロジェクトを AndroidX に正常に移行しました。 アプリは完全に実行されていますが、依存関係がサポートパッケージを使用しているため、コンパイル時エラーが発生しています。

image1

image2

このエラーの理由

PhotoViewは依存クラスであり、Android.support.v7.widget.AppCompatImageViewこれは私のプロジェクトではもう利用できません。今はandroidx.appcompat.widget.AppCompatImageView

プロジェクトはまだ実行されていますか?

はい、 Android.enableJetifier実行時にこの依存関係をAndroidXに変換しますが、コンパイル時エラーを取り除きたい

今のところ簡単な修正はありますか?

9
Khemraj

.ideaフォルダーを削除し、プロジェクトを再度同期することでこの問題を解決しました。

これはIDE Jetifierではなく、移行後に依存関係を再同期しません。Jetifierはうまく機能します。ビルド時にすべての依存関係サポートライブラリをandroidxに変換します。 @ this post 良い説明のため。

2
Khemraj

古いサポートライブラリを参照するライブラリに依存している場合、Android Studioは、依存関係変換を介してそのライブラリを参照するように更新します。依存関係変換はAndroid Gradle Plugin 3.2.0-alpha14は、バイトコードとJARおよびAAR依存関係(および推移的依存関係)のリソースを書き換えて、新しいandroidxパッケージのクラスとアーティファクトを参照します。また、スタンドアロンの翻訳ツールをJARとして提供します。

(./gradlew app:dependenciesを使用して)rxbindingの設計依存関係が新しいcom.google.Android.material依存関係に更新されることがわかります。 com.google.Android.material.snackbar.SnackbarをAndroid.support.design.widget.Snackbar自体を参照するライブラリ関数に渡すと、Android Studioはコンパイラエラーを表示しますが、実際にはコンパイルおよび実行されますASはまだこれらの変更を実際に処理できないと思います。

キャッシュに問題があるようです。.idea/librariesを削除し、Gradle同期を実行するとエラーが消えます。

11
Kousic

これに対する私の修正は、コンパイル時エラーのあるライブラリをAndroidXに変換し、プル要求をライブラリに送信することでした。

1
thejuki