AndroidX 迁移依赖项/库

AndroidX migrate dependency / libraries

我已成功将我的项目迁移到 AndroidX应用程序运行宁完美,但我遇到编译时错误,因为我的依赖项使用支持包。

此错误的原因

因为 PhotoView 是一个依赖项 class,它使用 android.support.v7.widget.AppCompatImageView,这在我的项目中不再可用。因为现在是androidx.appcompat.widget.AppCompatImageView

项目还在运行?

是的,android.enableJetifier在运行时将此依赖项转换为AndroidX,但我想摆脱编译时错误

现在有快速修复方法吗?

我的解决方法是将存在编译时错误的库转换为 AndroidX,并向该库提交拉取请求。

如果您依赖引用较旧支持库的库,AndroidStudio 将更新该库以引用 androidx,而不是通过依赖项转换。 Android Gradle 插件 3.2.0-alpha14 自动应用依赖转换,它重写 JAR 和 AAR 依赖(以及传递依赖)的字节码和资源以引用新的 androidx-packaged 类 和文物。我们还将以 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 同步会使错误消失。

我通过删除 .idea 文件夹并再次同步项目解决了这个问题。

这似乎是 IDE 而不是 Jetifier 的错误,它在迁移后不会重新同步依赖项。 Jetifier 做得很好。它在构建时将所有依赖项支持库转换为 androidx。请参阅 以获得更好的解释。