AndroidX迁移依赖项/库

时间:2018-09-26 13:28:40

标签: android androidx android-jetifier

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

image1

image2

此错误的原因

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

项目仍在运行吗?

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

现在有快速解决方案吗?

3 个答案:

答案 0 :(得分:8)

如果您依赖的库引用了较早的支持库,则Android Studio会通过依赖关系转换将该库更新为引用androidx。依赖关系转换是由Android Gradle插件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同步会使错误消失。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

这似乎是IDE而不是Jetifier的错误,它在迁移后不会重新同步依赖项。 Jetifier运作良好。它将在构建时将所有依赖项支持库转换为androidx。有关详细说明,请参见@this post