突然,我在我的Android项目中得到了这个构建错误:
unexpected element <queries> found in <manifest>
我该怎么解决呢?
突然,我在我的Android项目中得到了这个构建错误:
unexpected element <queries> found in <manifest>
我该怎么解决呢?
当前回答
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开发者博客。
其他回答
两天前我在Android Studio 4.1.1中也突然遇到了同样的问题。我通过升级Gradle版本解决了这个问题。
构建中的先前设置。项目的Gradle文件为:
classpath("com.android.tools.build:gradle:3.5.3")
当前设置:
classpath("com.android.tools.build:gradle:3.5.4")
这一期马上就消失了。:)
由于Android 11中新的默认设置和包可见性特性需要添加<queries>,您必须更新您的Android Gradle插件。
谷歌为Android Gradle插件发布说明4.0.0(2020年4月)中列出的当前版本添加了一些补丁。
如果你想使用一个更新版本的Android Gradle,你应该从Android Gradle插件发布说明中搜索一个兼容的包装,更新Gradle。
我在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
然后它工作得很好。
将您的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 Studio到最新版本 并使用最后一个稳定的Gradle插件版本。 目前,我使用Android Studio 4.1.3版本和Gradle Plugin 6.8.2
为了在查询中使用,应该在应用程序标记外编写查询代码,而不是在应用程序标记内编写查询代码。
更多信息,请看下面的照片: