10

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

图像1

图2

此错误的原因

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

项目还在运行?

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

现在有快速修复吗?

4

3 回答 3

12

如果您依赖的库引用了旧的支持库,Android Studio 将更新该库以引用 androidx,而不是通过依赖项翻译。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 同步会使错误消失。

于 2018-10-15T05:42:41.553 回答
3

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

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

于 2018-11-01T19:21:01.227 回答
1

我对此的解决方法是将具有编译时错误的库转换为 AndroidX 并向库提交拉取请求。

于 2018-09-27T16:25:31.380 回答