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

gr8qqesn  于 2023-03-21  发布在  Android
关注(0)|答案(7)|浏览(806)

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

unexpected element <queries> found in <manifest>

我该怎么补救?

camsedfj

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

kq4fsx7k

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文件。

vs91vp4v

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")

这个问题马上就消失了。:)

6ju8rftf

6ju8rftf4#

将您的Android Studio更新到最新版本并使用最新的稳定Gradle插件版本。目前,我使用的是Android Studio版本4.1.3Gradle插件6.8.2
要在 queries 中使用,您应该将 queries 代码写入 application 标记之外,而不是application标记之内。
欲了解更多信息,请参见下图:

yrdbyhpb

yrdbyhpb5#

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

然后它工作正常。

ugmeyewa

ugmeyewa6#

由于Android 11软件包可见性的新默认设置和功能需要添加<queries>,因此您必须更新Android Gradle插件。
Google已在 Android Gradle插件发布说明,4.0.0(2020年4月) 中列出的当前版本中添加了一些补丁。
如果要使用较新版本的Android Gradle,您应从 Android Gradle插件发布说明,更新Gradle 中搜索兼容的 Package 器。

wixjitnu

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?* 中查看分布图。

相关问题