如何修复 "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.
按照以下步骤操作
- 阅读这篇简短的博客以获得一些理解:click here
删除android文件夹内的.gradle文件夹即android>.gradle
在项目build.gradle文件中,根据上面link中的博客适当升级你的class路径,例如我升级到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 文件。
谢谢。
修复错误非常简单。
将您的 android 工作室更新到最新版本
并使用最新稳定的 Gradle 插件版本。
目前,我使用 Android Studio 版本 4.1.3 和 Gradle 插件 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
然后它工作正常。
突然之间,我的 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.
按照以下步骤操作
- 阅读这篇简短的博客以获得一些理解:click here
删除android文件夹内的.gradle文件夹即android>.gradle
在项目build.gradle文件中,根据上面link中的博客适当升级你的class路径,例如我升级到
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 文件。
谢谢。
修复错误非常简单。 将您的 android 工作室更新到最新版本 并使用最新稳定的 Gradle 插件版本。 目前,我使用 Android Studio 版本 4.1.3 和 Gradle 插件 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
然后它工作正常。