android - 是否可以将在 android-x 中创建的库添加为我的项目中尚未迁移到 android-x 的模块?
问题描述
我正在尝试向我的项目添加一个新模块以用作库。但问题是使用 android x 组件开发的新模块。是否可以在不迁移到 android x 的情况下将新模块与我当前的项目一起使用?
解决方案
技术上不可能。
原因很简单,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 ,因为您错过了许多功能。
推荐阅读
- haskell - Convert function into 1 liner
- geocoding - 使用 Here.com API 查找圈内城市
- python - 如何在 `requirements.txt` 中包含发布候选 (rc) 或实际版本
- python - Python在并行化任务中包含while循环
- java - Spring Boot中基于角色的授权
- django - ubuntu 中的 Django Bootstrap 模块
- jbase - 导入 t24 版本时设计工作室出错
- reactjs - 为什么我的 Suspense 不显示我延迟加载的组件?
- shell - 我们如何使用 '~|~' 分隔符来使用脚本命令分割记录?
- sql - 根据两行的数据创建一行