Android X 向后兼容性

7

我有一个使用支持库版本27.1.2的Android应用程序。我想要使用使用了Android X(API 28)编写的库。

存在一些关于库版本的名称空间问题。

例如...

该库有一个对话框,我想要在API中使用。

Dialog.show(androidx.fragment.app.FragmentActivity activity);

然而,我所有的活动都使用了HTML标记。
android.support.v4.app.FragmentActivity

而且编译器不喜欢这样。

目前没有将我的项目升级到最新版本的选项,所以请不要提升级答案,除非这是唯一的解决方案。

有没有办法解决这个不兼容问题?

提前致谢。


2
你试图混合使用 androidxandroid。你必须选择使用新的 Android X 库或旧的库。 - Denis Sologub
谢谢您的回复,我明白了 :) 我想知道是否有其他解决方法?我相信没有。 - fergdev
1
不客气!编程愉快) - Denis Sologub
3个回答

11

这是不可能的。要使用任何依赖于AndroidX的库,您必须将整个项目迁移到AndroidX

请注意,反向操作支持的-您可以在使用AndroidX的项目中使用使用Support Library构建的库(这就是android.enableJetifier=true标志的目的)。


2

AndroidX[关于]

  • 消费者 support -> 生产者 androidX - 不兼容

您应该迁移到使用 AndroidX 的消费者。 Android Studio 菜单 -> 重构 -> 迁移到 AndroidX...

  • 消费者 androidX -> 生产者 support - 兼容

除了使用 androidX 之外,消费者的 gradle.properties 还应启用 Jetifier[关于],它将 support 转换为 androidX

android.useAndroidX=true
android.enableJetifier=true

[在多模块项目中混合使用AndroidX和support库]


0

有一种方法

Jetifier工具将依赖于support库的库迁移到等效的AndroidX包上。但是当您使用-r标志时,它会执行完全相反的过程。

来自developer.android.com

如果传递了-r标志,则实用程序以反向模式运行。在此模式下,实用程序将AndroidX API转换为支持库等效项,而不是相反。反向模式非常有用,例如,如果您正在开发使用AndroidX API的库,但还需要分发使用支持库的版本。

无论如何,我建议仅在非常关键的情况下使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接