ChatGPT解决这个技术问题 Extra ChatGPT

如何修复“<manifest> 中发现的意外元素 <queries>”错误?

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

unexpected element <queries> found in <manifest>

我如何解决它?


C
CommonsWare

Android Gradle 插件需要了解新的清单元素,尤其是清单合并过程。如果插件在清单合并中看到它无法识别的元素,就会产生混淆,从而抛出问题中的构建错误。

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

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

谷歌发布了一系列补丁版本的 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


“Google 发布了一系列补丁版本的 Android Gradle 插件来解决这个问题”如果您不想修复与升级 gradle 插件版本相关的问题,请注意。
我的构建工具版本是 3.5.0。我已经升级到 3.5.4,它解决了这个问题。很好的解释
伟大的!对于 Unity,编辑路径中的文件。 -> /Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/GradleTemplates/baseProjectTemplate.gradle
一个很好的解释..在我的情况下,我通过将 Android Studio v3.5.2 上的 gradle 版本从:classpath 'com.android.tools.build:gradle:3.5.1' 稍微升级为:classpath 'com.android.tools .build:gradle:3.5.4'
天啊!这对我来说很清楚。我已经徘徊了一个星期,现在试图找出那个查询标签有问题!我在 Unity 中遇到此错误。我将升级到使用更新版本的 Gradle 的最新版本,看看它是否修复它。非常感谢这个人!上帝祝福你!
B
Bukunmi

我在颤振中遇到了这个问题,但我相信这个解决方案适用于颤振和原生 android 开发。

按着这些次序

阅读这个简短的博客以获得一些了解:点击这里

删除android文件夹内的.gradle文件夹即android>.gradle在项目build.gradle文件中,根据上面链接中的博客适当升级你的类路径,例如我升级到classpath'com.android.tools.build: gradle:4.0.1' 也升级分发 url。它在 android>gradle>gradle-wrapper.properties 文件中适当。例如,我将其升级为 distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 您可以使缓存无效并重新启动您的 android 工作室。确保您有良好的互联网连接,因为它将下载新的 gradle 文件。

谢谢。


这也适用于本机反应,非常有用
classpath 'com.android.tools.build:gradle:4.1.2' distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-all.zip 我仍然遇到问题如何解决?
您是否在更新后使缓存失效?
救生员。谢谢!!。这个答案有原因和解决方案。
遇到 dexGuard 问题:支持的版本包括 [2.3.0:3.5.*]
H
Hitesh Prajapati

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

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

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

当前设置:

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

问题立即消失了。 :)


我用你的回答解决了这个问题。我有 Android Studio 4.2.1 谢谢!
可以确认这适用于 Android Studio 4.2.1 和 Flutter 2(我从 1.22.6 迁移)
有史以来最好的解决方案:)
最近遇到了颤振相机插件的问题,这个解决方案完美无缺。谢谢你。
我在使用 react-native-inappbrowser-reborn 的 React Native 中遇到了同样的问题。这个解决方案解决了我的问题
m
madlymad

修复错误非常简单。将您的 android studio 更新到最新版本并使用最新的稳定 Gradle 插件版本。目前,我使用带有 Gradle Plugin 6.8.2 的 Android Studio 版本 4.1.3

伙计们请注意,对于使用查询,您应该在应用程序标签外而不是应用程序标签内编写查询代码

有关更多信息,请参见下面的照片

https://i.stack.imgur.com/ks0AY.jpg


非常重要的人请注意,对于使用查询,您应该在应用程序标签之外而不是在应用程序标签内编写查询代码
可以使用完整的照片,其他应用程序标签在哪里
a
allexiusw

我在 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

然后它工作正常。


M
Mahmoud Mabrok

由于 Android 11package visibility 的新默认设置和功能需要添加 <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


a
akash maurya

将您的 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 插件:classpath 'com.android.tools.build:gradle:4.1.2'

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

您可以在 https://stackoverflow.com/a/35272475/10184868 看到分布图