突然,我在我的Android项目中得到了这个构建错误:

unexpected element <queries> found in <manifest>

我该怎么解决呢?


当前回答

修复这个错误非常简单。 更新你的Android Studio到最新版本 并使用最后一个稳定的Gradle插件版本。 目前,我使用Android Studio 4.1.3版本和Gradle Plugin 6.8.2

为了在查询中使用,应该在应用程序标记外编写查询代码,而不是在应用程序标记内编写查询代码。

更多信息,请看下面的照片:

其他回答

修复这个错误非常简单。 更新你的Android Studio到最新版本 并使用最后一个稳定的Gradle插件版本。 目前,我使用Android Studio 4.1.3版本和Gradle Plugin 6.8.2

为了在查询中使用,应该在应用程序标记外编写查询代码,而不是在应用程序标记内编写查询代码。

更多信息,请看下面的照片:

我在Flutter中遇到了这个问题,但我相信此解决方案将适用于Flutter和本地Flutter开发。

遵循以下步骤

Read this short blog post to get some understanding: Preparing your Gradle build for package visibility in Android 11 Delete the .gradle folder inside the Android folder, i.e., android > .gradle In the project build.gradle file, upgrade your class path appropriately based on the blog in the link above, e.g., I upgraded to classpath 'com.android.tools.build:gradle:4.0.1' Upgrade the distribution URL too. It's in android>gradle>gradle-wrapper.properties file appropriately. E.g., I upgraded it to distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip You can invalidate caches and restart your Android Studio. Make sure you have a good Internet connection, because it will download the new Gradle files.

由于Android 11中新的默认设置和包可见性特性需要添加<queries>,您必须更新您的Android Gradle插件。

谷歌为Android Gradle插件发布说明4.0.0(2020年4月)中列出的当前版本添加了一些补丁。

如果你想使用一个更新版本的Android Gradle,你应该从Android Gradle插件发布说明中搜索一个兼容的包装,更新Gradle。

将您的Gradle版本更新到4.0.1或更高版本。

文件android / gradle /包装/ gradle-wrapper。更新分发URL为:

- 6.7 - all.zip distributionUrl = https://services.gradle.org/distributions/gradle

android /构建文件。更新gradle插件:

classpath’com。android工具。构建:gradle: 4.1。

到4.0.1或更高版本。这里是4.1.2,Gradle版本到6.5或更高版本。

你可以看到分布图表如何更新gradle在android工作室?

Android Gradle Plugin尤其需要了解新的清单元素 为了明确的合并程序。插件有一种容易混淆的趋势 在明显的合并中看到了它不承认的元素,扔掉了 制造问题中提到的那种错误。

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

这种情况发生在显式合并中,这意味着只需升级依赖项 可能会导致这个错误。例如,如果您升级到最新版本 com的版本。Awesome: Awesome -库,它包含一个<queries>元素 在它的清单中,您可能会在构建中出现上述错误而崩溃, 即使你的代码没有任何改变。

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

3.3.3 Rule 3.4.3 3.5.4 3.6.4 radar echoes captured 4.0.1

如果您正在使用3.3中现有的插件。*到4.0。*系列、升级 到相关的补丁版本(或更高版本)从该列表,您应该不再 遇到这个错误(例如,类路径'com.android.tools.build:gradle:4.0.1')。

如果您使用的是Android Studio 4.1或更高版本,则需要匹配 Android Gradle插件(例如,在4.1。*系列),没有也没问题 任何更改。这些插件版本已经知道<queries>。

详见Android开发者博客。