突然之间,我在我的 Android 项目中遇到了这个构建错误:
unexpected element <queries> found in <manifest>
我如何解决它?
Android Gradle 插件需要了解新的清单元素,尤其是清单合并过程。如果插件在清单合并中看到它无法识别的元素,就会产生混淆,从而抛出问题中的构建错误。
在这种情况下,Android 11<queries>作为清单元素引入,旧版本的 Android Gradle 插件不知道该元素。
<queries>
这发生在清单合并中的事实意味着简单地升级依赖项可能会导致此错误。例如,如果您升级到最新版本的com.awesome:awesome- library,并且它<queries>的清单中包含一个元素,您可能会在构建中出现上述错误而崩溃,即使您的代码没有任何其他更改。
com.awesome:awesome- library
谷歌发布了一系列补丁版本的 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')。
3.3.*
4.0.*
classpath 'com.android.tools.build:gradle:4.0.1'
如果您使用的是 Android Studio 4.1 或更高版本,并带有匹配的 Android Gradle 插件(例如,在该4.1.*系列中),则无需任何更改就可以了。那些插件版本已经知道<queries>.
4.1.*
有关更多信息,请参阅此 Android 开发者博客文章。