我在启用 android.useAndroidX 的情况下收到“AndroidX 依赖项”错误

Posted

技术标签:

【中文标题】我在启用 android.useAndroidX 的情况下收到“AndroidX 依赖项”错误【英文标题】:I'm getting the "AndroidX dependencies" error with android.useAndroidX enabled 【发布时间】:2020-12-29 01:58:33 【问题描述】:

我在尝试构建我的 android 应用程序时遇到以下错误:

任务:app:mergeDebugResources 失败

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

出了什么问题: 任务“: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-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 是否有可能在构建期间被任何其他任务覆盖?

谢谢!

【问题讨论】:

【参考方案1】:

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

所以你有两个选择:

    更新到隐式支持 AndroidX 的 cordova-android@9

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

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

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

    更多详情:cordova documentation

    将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】:

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

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

更多细节在这里: cordova documentation

【讨论】:

【参考方案3】:

首先打开你的 Project gradle scripts>> 然后打开 gradle.properties 最后粘贴这两行代码

android.useAndroidX=true

android.enableJetifier=true

【讨论】:

【参考方案4】:

添加到 gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

在AndroidStudio中点击:File->Invalidate Cashes / Restart -> Invalidate and Restart

【讨论】:

感谢您的回复。我直接将其设置为true,但每次尝试构建时都会更改。我没有安装 AndroidStudio。我正在通过命令行构建。 我不确定问题的原因,this blog 可能会有所帮助。 您可以在platforms/android/cordova/lib/configGradlePropertiesParser.js 的this._defaults 对象中更改它们【参考方案5】:

如果你使用最新的cordova,你可以试试cordova prepare android,它会修补你的源文件并更新gradle.properties

【讨论】:

【参考方案6】:
cordova plugin add cordova-plugin-androidx

cordova plugin add cordova-plugin-androidx-adapter

【讨论】:

【参考方案7】:

对我有用的是将 Cordova 社交共享插件降级到 5.6.8

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

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

【讨论】:

【参考方案8】:

我今天已将我的 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 属性或 AndroidX 的插件适配器(在 Android 平台 9.1.0 时 Cordova 不推荐这两者)之前,请先查找您最近更新的插件。

【讨论】:

【参考方案9】:

我被困了 2 天而不是得到这个 你只需要安装这两个插件,你不需要做任何其他事情

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

    cordova plugin add cordova-plugin-androidx
    

    添加插件以修补使用 Android 支持库以使用 AndroidX 的现有插件源

    cordova plugin add cordova-plugin-androidx-adapter
    

【讨论】:

这与Kangudie Muanza - Killmonger's answer中的解决方案完全相同。

以上是关于我在启用 android.useAndroidX 的情况下收到“AndroidX 依赖项”错误的主要内容,如果未能解决你的问题,请参考以下文章