如何修复 "unexpected element <queries> found in <manifest>" 错误?

How to fix "unexpected element <queries> found in <manifest>" error?

突然之间,我的 Android 项目出现了这个构建错误:

unexpected element <queries> found in <manifest>

我该如何解决?

Android Gradle 插件需要了解新的清单元素,尤其是 对于清单合并过程。如果插件有混淆的倾向 看到它无法识别的清单合并中的元素,抛出 建立问题中的错误。

在这种情况下,Android 11 引入了 <queries> 作为清单元素,而旧版本的 Android Gradle 插件不知道该元素。

从清单合并中发生的事实意味着只需升级依赖项 可能会导致此错误。例如,如果您升级到最新的 com.awesome:awesome-library 的版本,它包含一个 <queries> 元素 在其清单中,您可能会在构建中因上述错误而崩溃, 即使您的代码没有任何其他更改。

Google 发布了 Android Gradle 插件的一系列补丁版本来解决这个问题:

  • 3.3.3
  • 3.4.3
  • 3.5.4
  • 3.6.4
  • 4.0.1

如果您使用的是 3.3.*4.0.* 系列中的现有插件,请升级 到该列表中的相关补丁版本(或更高版本),你不应该再 运行 进入该错误(例如,classpath 'com.android.tools.build:gradle:4.0.1')。

如果您使用的是 Android Studio 4.1 或更高版本,并且具有匹配的 Android Gradle 插件(例如,在 4.1.* 系列中),你应该没有 任何变化。这些插件版本已经知道 <queries>.

有关更多信息,请参阅 this Android Developers Blog post

我在 flutter 中遇到了这个问题,但我相信这个解决方案适用于 flutter 和原生 android dev.

按照以下步骤操作

  1. 阅读这篇简短的博客以获得一些理解:click here
  1. 删除android文件夹内的.gradle文件夹即android>.gradle

  2. 在项目build.gradle文件中,根据上面link中的博客适当升级你的class路径,例如我升级到classpath 'com.android.tools.build:gradle:4.0.1'

  3. 也升级发行版url。它在 android>gradle>gradle-wrapper.properties 文件中。例如,我将其升级为 distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

  4. 您可以使缓存失效并重新启动您的 android 工作室。请确保您的互联网连接良好,因为它会下载新的 gradle 文件。

谢谢。

修复错误非常简单。 将您的 android 工作室更新到最新版本 并使用最新稳定的 Gradle 插件版本。 目前,我使用 Android Studio 版本 4.1.3Gradle 插件 6.8 .2

各位请注意,使用queries你应该写queries代码application 标签不在 application 标签

更多信息见下图

将您的 Gradle 版本更新到 4.0.1+

android/gradle/wrapper/gradle-wrapper.properties 将分布 URL 更新为: distributionUrl=https://services.gradle.org/distributions/gradle-6.7-all.zip

android/build.gradle 更新 gradle 插件: 类路径 'com.android.tools.build:gradle:4.1.2'

到 4.0.1+ 这里是 4.1.2 和 Gradle 版本到 6.5+

可以在

看到分布图

由于 包可见性Android 11 中的新默认设置和功能需要添加 <queries> 你必须更新你的 android gradle 插件。

Google 已向此处列出的当前版本添加了一些补丁:

https://developer.android.com/studio/releases/gradle-plugin.html?buildsystem=cmake#4-0-0

如果您想使用更新版本的 android gradle,您应该从这里搜索兼容的包装器:

https://developer.android.com/studio/releases/gradle-plugin.html?buildsystem=cmake#updating-gradle

2 天前,我在 Android Studio 4.1.1 上也遇到了同样的问题。我通过升级构建 gradle 版本解决了这个问题。

项目 build.gradle 文件中的先前设置是:

classpath("com.android.tools.build:gradle:3.5.3")

当前设置:

classpath("com.android.tools.build:gradle:3.5.4")

问题立即解决。 :)

我在 react-native-image-crop-picker 库中遇到了这个错误,我通过如上所述更新 gradle 版本解决了这个问题。

它是:

classpath("com.android.tools.build:gradle:3.5.3")

更新为:

classpath("com.android.tools.build:gradle:3.5.4")

而我运行一个:

cd android && ./gradlew clean && cd .. && npx react-native run-android

然后它工作正常。