【问题标题】:Android X backwards compatibilityAndroid X 向后兼容性
【发布时间】:2019-08-05 23:06:01
【问题描述】:

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

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

示例 ...

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

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

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

android.support.v4.app.FragmentActivity

而编译器不喜欢这样。

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

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

提前致谢。

【问题讨论】:

  • 您尝试将androidxandroid 混合使用。您必须选择使用新的 Android X 库或旧版本。
  • 感谢您的回复,我明白这一点:) 我想知道是否有办法解决这个问题?我相信没有。
  • 不客气!快乐编码)

标签: android gradle backwards-compatibility androidx


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    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
    

    [Mix AndroidX and support in a multi-module project]

    【讨论】:

      【解决方案3】:

      有办法

      Jetifier 工具将依赖于支持库的库迁移为依赖等效的 AndroidX 包。但是当你把 -r 标志,它使他完全相反的过程。

      来自developer.android.com

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-13
        • 2017-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多