我在启用 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 依赖项”错误的主要内容,如果未能解决你的问题,请参考以下文章