突然之间,我在我的 Android 项目中遇到了这个构建错误:
unexpected element <queries> found in <manifest>
我如何解决它?
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。
我在颤振中遇到了这个问题,但我相信这个解决方案适用于颤振和原生 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 文件。
谢谢。
两天前,我在 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 更新到最新版本并使用最新的稳定 Gradle 插件版本。目前,我使用带有 Gradle Plugin 6.8.2 的 Android Studio 版本 4.1.3
伙计们请注意,对于使用查询,您应该在应用程序标签外而不是应用程序标签内编写查询代码
有关更多信息,请参见下面的照片
https://i.stack.imgur.com/ks0AY.jpg
我在 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 11 中 package 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
将您的 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 看到分布图