【问题标题】:Is there a way to mix AndroidX and a subproject that uses the support library?有没有办法混合 AndroidX 和使用支持库的子项目?
【发布时间】:2019-03-30 07:20:21
【问题描述】:

我有一个想要升级到AndroidX 的Android 项目。 但是,我正在使用一个模块,该模块在尚未迁移到 AndroidX 的其他应用程序之间共享。在升级项目重置以使用 AndroidX 时,我想避免分叉代码并更喜欢使用模块的支持库。

现在我无法导入任何 android.support.v7 类。例如import android.support.v7.widget.AppCompatEditText; 失败。

我已尝试恢复模块中迁移工具对build.gradle 所做的更改,但这并不能防止编译问题。

但是在我的gradle.properties 中仍然有:

android.useAndroidX=true
android.enableJetifier=true

【问题讨论】:

    标签: java android android-support-library androidx


    【解决方案1】:

    如果您使用带有androidX[About]multi-module 项目并希望使用带有support library 的模块,您可以尝试在模块文件夹中创建gradle.properties 文件并定义

    android.useAndroidX=false
    android.enableJetifier=false
    

    此外,我建议您为每个模块创建 gradle.properties 以配置您的项目

    [AndroidX and support compatibility]

    【讨论】:

    • 太棒了。有了这个,对于我们的案例,我们可以使用 AndroidX(新模块)和 Android Support(巨大的现有模块)开发子模块。 *目前,由于重构/迁移需要大量配置。
    • 我可以确认这种方法允许支持库和 AndroidX 模块共存。但是,如果任一模块依赖于另一个模块(例如implementation project(':support-library-module')),则应用程序将在运行时崩溃,因为它无法找到支持库类。有办法解决吗?
    【解决方案2】:

    您的应用中使用的所有模块都需要一起迁移到 AndroidX。您需要将要保留在支持库中的模块移动到新项目中,并且仅将其用作 AndroidX 项目中的 maven 依赖项或 AAR。

    【讨论】:

    • 如果我有一堆依赖于支持的外部库并且它们的维护者不会很快更新到 androidx 怎么办?这是否意味着我无法获得支持?
    • @WindRider - 外部库(通过 maven 存储库包含的那些)通过 Jetifier 从支持库转换为 AndroidX,您无需等待它们转换。需要同时转换的是本地项目。
    猜你喜欢
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多