启用 android.useAndroidX 后,出现 “AndroidX 依赖项” 错误

16
我在构建我的 Android 应用时遇到了以下错误:
任务 :app:mergeDebugResources FAILED
构建失败并出现异常。
问题出在哪里: 执行任务“:app:mergeDebugResources”时出错。
解决方法如下:
此项目使用 AndroidX 依赖项,但未启用“android.useAndroidX”属性。请在 gradle.properties 文件中将此属性设置为 true,然后重试。检测到以下AndroidX依赖关系:androidx.versionedparcelable:versionedparcelable:1.0.0,androidx.slidingpanelayout:slidingpanelayout:1.0.0,androidx.fragment:fragment:1.0.0,androidx.core:core:1.0.0,androidx.customview:customview:1.0.0,androidx.swiperefreshlayout:swiperefreshlayout:1.0.0,androidx.interpolator:interpolator:1.0.0,androidx.loader:loader:1.0.0,androidx.drawerlayout:drawerlayout:1.0.0,androidx.viewpager:viewpager:1.0.0,androidx.collection:collection:1.0.0,androidx.localbroadcastmanager:localbroadcastmanager:1.0.0,androidx.lifecycle:lifecycle-common:2.0.0,androidx.arch.core:core-common:2.0.0,androidx.annotation:annotation:1.0.0,androidx.lifecycle:lifecycle-livedata:2.0.0,androidx.legacy:legacy-support-core-ui:1.0.0,androidx.lifecycle:lifecycle-viewmodel:2.0.0,androidx.lifecycle:lifecycle-livedata-core:2.0.0,androidx.legacy:legacy-support-v4:1.0.0,androidx.media:media:1.0.0,androidx.arch.core:core-runtime:2.0.0,androidx.legacy:legacy-support-core-utils:1.0.0,androidx.documentfile:documentfile:1.0.0,androidx.cursoradapter:cursoradapter:1.0.0,androidx.lifecycle:lifecycle-runtime:2.0.0,androidx.coordinatorlayout:coordinatorlayout:1.0.0,androidx.asynclayoutinflater:asynclayoutinflater:1.0.0,androidx.print:print:1.0.0

我修改了项目的gradle.properties文件,并将"android.userAndroidX"设置为true。但每次尝试重新构建时,它都会自动返回false。

gradle.properties 在构建过程中是否会被其他任务覆盖?

谢谢!

9个回答

48

假设您正在使用 cordova-android@8(可以通过键入cordova platform ls来查看项目中的平台版本)。

因此,您有两个选项:

  1. 升级到 cordova-android@9,它隐式支持 AndroidX:

cordova platform rm android && cordova platform add android@9

在你的config.xml中添加以下行:

<preference name="AndroidXEnabled" value="true" />

更多细节请参阅: Cordova文档

  • cordova-plugin-androidx添加到您的Cordova项目中,该插件会持续设置cordova-android@8的本机AndroidX标志:

    cordova plugin add cordova-plugin-androidx
    
    如果您添加了其中一个插件,但项目仍无法构建,则可能是因为它包含 Cordova 插件,其本机 Android 代码引用遗留的 Android Support 库(AndroidX 是其继承者)。要解决此问题,您可以将 cordova-plugin-androidx-adapter 添加到您的项目中,这将动态修补这些插件的源代码以将它们迁移到 AndroidX:
    cordova plugin add cordova-plugin-androidx-adapter
    

  • 太好了,很高兴能帮忙!请接受这个答案,以造福其他用户。 - DaveAlden

    13

    在你的config.xml中添加以下行:

    <preference name="AndroidXEnabled" value="true" />
    

    更多细节在此处: Cordova文档


    1
    我成功的方法是将Cordova社交分享插件降级至5.6.8版本。
    cordova plugin add  cordova-plugin-x-socialsharing@5.6.8
    

    在执行此操作之前,请先删除此插件的旧版本,然后删除所有平台,最后重新安装所有平台。


    1
    这对我有效,但我不知道为什么... - DarckBlezzer

    0

    如果您正在使用最新的Cordova,可以尝试cordova prepare android命令,它将修补您的源文件并更新gradle.properties。


    0
    今天我更新了我的Android平台到9.1.0版本,同时也更新了我使用的插件。然而,我的项目编译开始输出“Task:app:mergeDebugResources FAILED”错误和“This project uses AndroidX dependencies, but the 'android.useAndroidX' property is not enabled.”。我已经寻找了几个原因,并尝试了在SO上提出的不同解决方案,但最准确的想法是由@Guy Sela提出的,他建议一个插件可以使用新的AndroidX依赖项,这就是问题所在。因此,在您尝试在Cordova配置或插件适配器中使用AndroidXEnabled属性之前(这两者都不被Cordova推荐在9.1.0 Android平台上使用),请查找最近更新的插件。

    0

    首先打开你的项目 gradle 脚本 >> 然后打开 gradle.properties,最后粘贴这两行代码

    android.useAndroidX=true
    
    android.enableJetifier=true
    

    enter image description here


    0
    cordova plugin add cordova-plugin-androidx
    
    cordova plugin add cordova-plugin-androidx-adapter
    

    0

    添加到gradle.properties文件中:

    android.useAndroidX=true
    android.enableJetifier=true
    

    在AndroidStudio中点击:文件->无效缓存/重启->无效并重启。

    1
    谢谢您的回复。我直接将其设置为true,但每次尝试构建时都会更改。我没有安装AndroidStudio。我是通过命令行进行构建的。 - Aurumque
    我不确定问题的原因,这篇博客可能会有所帮助。 - yangfengfan
    2
    你可以在 platforms/android/cordova/lib/configGradlePropertiesParser.js 文件中的 this._defaults 对象中更改它们。 - MonOve

    -2

    我卡了两天,然后我找到了解决方法。你只需要安装这两个插件,不需要做其他任何事情。

    1. 添加插件以在项目中启用AndroidX

      cordova plugin add cordova-plugin-androidx
      
    2. 添加插件以修补现有插件源代码,该插件使用Android Support库来使用AndroidX

      cordova plugin add cordova-plugin-androidx-adapter
      

    这个解决方案与Kangudie Muanza - Killmonger的答案完全相同。 - Eric Aya

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