Android X向后兼容

时间:2019-03-14 22:25:08

标签: android gradle backwards-compatibility androidx

我有使用支持库版本27.1.2的Android App。我想使用一个使用Android X(API 28)编写的库。

库版本的名称间距几乎没有问题。

示例...

该库有一个我想与api一起使用的对话框

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

但是我所有的活动都在使用

android.support.v4.app.FragmentActivity

并且编译器不喜欢这样。

当前不能将我的项目升级到最新版本,因此请不要升级答案,除非这是唯一的解决方案。

是否可以解决此不兼容问题?

谢谢。

3 个答案:

答案 0 :(得分:4)

这是不可能的。要使用任何依赖AndroidX的库,您的项目必须migrate your whole project to AndroidX

请注意,支持反向 -您可以在使用AndroidX的项目中使用“支持库”内置的库(这是android.enableJetifier=true标志的目的)。

答案 1 :(得分:1)

AndroidX [About]

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

您应该migrate使用您的消费者才能使用AndroidX。 Android Studio menu -> Refactor -> Migrate to AndroidX...

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

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

android.useAndroidX=true
android.enableJetifier=true

答案 2 :(得分:0)

有办法

Jetifier工具迁移依赖于支持库的库,改为依赖等效的AndroidX软件包。但是,当您放置 -r 标志时,这使他进入了完全相反的过程。

来自developer.android.com

如果传递-r标志,该实用程序将以反向模式运行。在这个 模式下,该实用程序会将AndroidX API转换为支持库 等价物,而不是相反。反向模式很有用, 例如,如果您正在开发使用AndroidX API的库, 但还需要分发使用支持库的版本。

无论如何,我建议仅在非常关键的需求中使用它。