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

新手上路,请多包涵

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

 unexpected element <queries> found in <manifest>

我如何解决它?

原文由 CommonsWare 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.6k
2 个回答

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>

有关更多信息,请参阅 此 Android 开发者博客文章

原文由 CommonsWare 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

然后它工作正常。

原文由 Jefferson Patricio 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题