我在启用 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 依赖项”错误的主要内容,如果未能解决你的问题,请参考以下文章
:app:checkDebugAarMetadata Your project has set `android.useAndroidX=true`, but configuration `:app:
This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is not enabled
This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is not enabled
This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is not enabled
AndroidStudio中提示:This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is
This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is not enabled