Android X 向后兼容

Android X backwards compatibility

我有 Android 个使用支持库版本 27.1.2 的应用程序。我想使用使用 Android X (api 28).

编写的库

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

例子...

图书馆有一个我想与 api

一起使用的对话框
Dialog.show(androidx.fragment.app.FragmentActivity activity);

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

android.support.v4.app.FragmentActivity

编译器不喜欢这样。

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

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

提前致谢。

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

请注意, 受支持 - 您可以在使用 AndroidX 的项目中使用通过支持库构建的库(这就是 android.enableJetifier=true 标志的目的)。

AndroidX

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

您应该 migrate 您的用户使用 AndroidX。 Android Studio menu -> Refactor -> Migrate to AndroidX...

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

消费者的 gradle.properties 除了使用 androidX 外,还应启用 Jetifiersupport 转换为 androidX

android.useAndroidX=true
android.enableJetifier=true

有办法

Jetifier 工具迁移依赖库的库以依赖等效的 AndroidX 包。但是当你放上-r flag的时候,就让他进行了完全相反的过程。

来自developer.android.com

If you pass the -r flag, the utility runs in reverse mode. In this mode, the utility converts AndroidX APIs to the support library equivalents, instead of the other way around. Reverse mode is useful, for example, if you are developing libraries that use AndroidX APIs, but also need to distribute versions that use the support library.

无论如何,我会建议只有在非常关键的需求下才使用它。