首页 > 解决方案 > 是否可以将在 android-x 中创建的库添加为我的项目中尚未迁移到 android-x 的模块?

问题描述

我正在尝试向我的项目添加一个新模块以用作库。但问题是使用 android x 组件开发的新模块。是否可以在不迁移到 android x 的情况下将新模块与我当前的项目一起使用?

标签: androidmigrationandroid-support-libraryandroidx

解决方案


技术上不可能。

原因很简单,Gradle无法在没有任何转换的情况下构建同时具有android 支持库androidx 库的 android 应用,这会导致类的合并冲突。

构建期间幕后发生的事情

图书馆 A

implementation 'com.android.support:appcompat-v7:28.0.0'

图书馆 B

implementation 'com.android.support:appcompat-v7:26.0.0'

因为两个包中的类是相似的:Gradle 将它们合并为一个。

现在想象一下场景

构建期间幕后发生的事情

图书馆 A

implementation 'com.android.support:appcompat-v7:28.0.0'

图书馆 B

implementation 'androidx.appcompat:appcompat:1.0.0'

现在 gradle 变得混乱,因为它们都是 appcompat 库,但它们的类不同,因此它们无法合并,因此会引发错误。

尽管如此,项目在 androidx 上的用户仍然可以在Jetpack Jetifier 工具的帮助下使用 android 支持引用的库,该工具会在构建期间将支持引用转换为相应的 androidx 库。

除非您想开发自己的工具并将其命名为 UnJetifier,否则可以选择在支持项目中构建 android 支持引用库和 androidx 库。最好的建议是将您的应用程序迁移到androidx ,因为您错过了许多功能。


推荐阅读