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

时间:2020-09-10 14:30:05

标签: android cordova gradle

尝试构建我的android应用时出现以下错误:

任务:app:mergeDebugResources失败

失败:构建失败,并出现异常。

  • 出了什么问题: 任务':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:注释: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-suppo rt-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 个答案:

答案 0 :(得分:7)

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

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

更多细节在这里: cordova documentation

答案 1 :(得分:4)

大概您正在使用cordova-android@8(键入cordova platform ls在项目中查找平台版本)。

因此,您有2个选择:

  1. 更新为cordova-android@9,它隐式支持AndroidX:
    cordova platform rm android && cordova platform add android@9
  1. cordova-plugin-androidx添加到您的Cordova项目中,该项目将永久设置cordova-android@8的本地AndroidX标志:
    cordova plugin add cordova-plugin-androidx

如果在添加其中一个项目后您的项目仍然无法构建,则可能是因为它包含Cordova插件,其原生Android代码引用了旧版Android支持库(AndroidX是后继)。 要解决此问题,您可以在项目中添加cordova-plugin-androidx-adapter,这将动态修补这些插件的源代码,以将其迁移到AndroidX:

    cordova plugin add cordova-plugin-androidx-adapter

答案 2 :(得分:0)

添加到gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

在AndroidStudio中,点击:文件->无效兑现/重新启动->无效并重新启动

答案 3 :(得分:0)

如果您使用的是最新的cordova,则可以尝试cordova prepare android,它将修补您的源文件并更新gradle.properties

答案 4 :(得分:0)

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

android.useAndroidX=true

android.enableJetifier=true

enter image description here

答案 5 :(得分:0)

cordova plugin add cordova-plugin-androidx

cordova plugin add cordova-plugin-androidx-adapter

答案 6 :(得分:0)

对我有用的是将 Cordova Social Sharing 插件降级到 5.6.8

cordova plugin add  cordova-plugin-x-socialsharing@5.6.8

(在此之前删除此插件的先前版本,然后删除所有平台,然后重新安装所有平台)

答案 7 :(得分: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 依赖项,这就是原因。因此,在您尝试在 AndroidX 的 Cordova 配置或插件适配器中使用 AndroidXEnabled 属性之前(在 9.1.0 Android 平台时,Cordova 均不推荐),请查找您最近更新的插件。< /p>

答案 8 :(得分:-2)

我被困了 2 天而不是我得到这个 你只需要安装这两个插件就可以了

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

    cordova plugin add cordova-plugin-androidx
    
  2. 添加插件以修补使用 Android 支持库的现有插件源以使用 AndroidX

    cordova plugin add cordova-plugin-androidx-adapter