突然之间,我在我的Android项目中遇到了这个构建错误:
unexpected element <queries> found in <manifest>
我该怎么补救?
camsedfj1#
Android Gradle插件需要了解新的清单元素,尤其是清单合并流程。如果插件在清单合并中看到它无法识别的元素,它往往会感到困惑,并抛出构建错误(如问题中的错误)。在本例中,Android 11引入了<queries>作为清单元素,而较早版本的Android Gradle插件不知道该元素。清单合并时会发生这种情况,这意味着仅升级依赖项就可能导致此错误。例如,如果您升级到com.awesome:awesome-library的最新版本,并且它的清单中包含<queries>元素,则即使代码中没有任何其他更改,您也可能在生成中因上述错误而崩溃。Google发布了Android Gradle插件的一系列补丁版本来解决这一问题:
<queries>
com.awesome:awesome-library
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。
3.3.*
4.0.*
classpath 'com.android.tools.build:gradle:4.0.1'
4.1.*
kq4fsx7k2#
我在Flutter中遇到过这个问题,但我相信这个解决方案对Flutter和原生Flutter开发都有效。请按照以下步骤操作1.阅读这篇简短的博客文章,以获得一些理解:* 一个月一次 *1.删除Android文件夹中的 .gradle 文件夹,即android〉.gradle1.在项目 build.gradle 文件中,根据上面链接中的博客相应地升级您的类路径,例如,I upgrated to classpath 'com.android.tools.build:gradle:4.0.1'1.同时升级分发URL。它位于android〉gradle〉gradle-wrapper.properties文件中。例如,我将其升级为distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip1.您可以使缓存无效并重新启动Android Studio。确保您有良好的互联网连接,因为它将下载新的Gradle文件。
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
vs91vp4v3#
两天前我在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")
这个问题马上就消失了。:)
6ju8rftf4#
将您的Android Studio更新到最新版本并使用最新的稳定Gradle插件版本。目前,我使用的是Android Studio版本4.1.3和Gradle插件6.8.2要在 queries 中使用,您应该将 queries 代码写入 application 标记之外,而不是application标记之内。欲了解更多信息,请参见下图:
yrdbyhpb5#
我在react-native-image-crop-picker库中遇到了这个错误,我通过更新Gradle版本解决了这个问题,如前面的答案中所述。它是:
react-native-image-crop-picker
更新为:
我运行了一个:
cd android && ./gradlew clean && cd .. && npx react-native run-android
然后它工作正常。
ugmeyewa6#
由于Android 11中软件包可见性的新默认设置和功能需要添加<queries>,因此您必须更新Android Gradle插件。Google已在 Android Gradle插件发布说明,4.0.0(2020年4月) 中列出的当前版本中添加了一些补丁。如果要使用较新版本的Android Gradle,您应从 Android Gradle插件发布说明,更新Gradle 中搜索兼容的 Package 器。
wixjitnu7#
将您的Gradle版本更新至4.0.1或更高版本。文件 android/gradle/wrapper/gradle-wrapper.properties:将分发URL更新为:分发网址=https:services.gradle.org/distributions/gradle-6.7-all.zip文件 android/build.gradle:更新Gradle插件:类路径“com.android.tools.build:升级版本:4.1.2”升级到4.0.1或更高版本。此处为4.1.2版本,Gradle升级到6.5或更高版本。您可以在 * 如何在android studio中更新gradle?* 中查看分布图。
7条答案
按热度按时间camsedfj1#
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。
kq4fsx7k2#
我在Flutter中遇到过这个问题,但我相信这个解决方案对Flutter和原生Flutter开发都有效。
请按照以下步骤操作
1.阅读这篇简短的博客文章,以获得一些理解:* 一个月一次 *
1.删除Android文件夹中的 .gradle 文件夹,即android〉.gradle
1.在项目 build.gradle 文件中,根据上面链接中的博客相应地升级您的类路径,例如,I upgrated to
classpath 'com.android.tools.build:gradle:4.0.1'
1.同时升级分发URL。它位于android〉gradle〉gradle-wrapper.properties文件中。例如,我将其升级为
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
1.您可以使缓存无效并重新启动Android Studio。确保您有良好的互联网连接,因为它将下载新的Gradle文件。
vs91vp4v3#
两天前我在Android Studio 4.1.1中也突然遇到了同样的问题,我通过升级Build Gradle版本解决了这个问题。
项目的 build.gradle 文件中的先前设置为:
当前设置:
这个问题马上就消失了。:)
6ju8rftf4#
将您的Android Studio更新到最新版本并使用最新的稳定Gradle插件版本。目前,我使用的是Android Studio版本4.1.3和Gradle插件6.8.2
要在 queries 中使用,您应该将 queries 代码写入 application 标记之外,而不是application标记之内。
欲了解更多信息,请参见下图:
yrdbyhpb5#
我在
react-native-image-crop-picker
库中遇到了这个错误,我通过更新Gradle版本解决了这个问题,如前面的答案中所述。它是:
更新为:
我运行了一个:
然后它工作正常。
ugmeyewa6#
由于Android 11中软件包可见性的新默认设置和功能需要添加
<queries>
,因此您必须更新Android Gradle插件。Google已在 Android Gradle插件发布说明,4.0.0(2020年4月) 中列出的当前版本中添加了一些补丁。
如果要使用较新版本的Android Gradle,您应从 Android Gradle插件发布说明,更新Gradle 中搜索兼容的 Package 器。
wixjitnu7#
将您的Gradle版本更新至4.0.1或更高版本。
文件 android/gradle/wrapper/gradle-wrapper.properties:将分发URL更新为:
分发网址=https:services.gradle.org/distributions/gradle-6.7-all.zip
文件 android/build.gradle:更新Gradle插件:
类路径“com.android.tools.build:升级版本:4.1.2”
升级到4.0.1或更高版本。此处为4.1.2版本,Gradle升级到6.5或更高版本。
您可以在 * 如何在android studio中更新gradle?* 中查看分布图。