/ android

#Android 添加穿山甲sdk后报错: unexpected element <queries> found in <manifest>

问题背景

最近一个老的安卓项目需要接入穿山甲广告SDK,按照文档,引入了SDK库以后,居然就报错了:

Execution failed for task ':app:processDebugResources'.
> Android resource linking failed
  Output:  .../android_studio/app/build/intermediates/merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml:39: error: unexpected element <queries> found in <manifest>.

android_studio_unexpected_queries_found_in_manifest_01

根据提示,报错的位置是AndroidManifest.xml文件第39行,应该有一个无法识别的queries元素。

但是,却怎么也没有找到!

android_studio_unexpected_queries_found_in_manifest_02

这是怎么回事呢?

解决方法

于是上google搜索。

https://stackoverflow.com/questions/62969917/how-to-fix-unexpected-element-queries-found-in-manifest-error

根据stackoverflow上的说法,这个是因为引用的库的AndroidManifest.xml包含了这个无法识别的元素。

仔细看错误描述的话,确实说的是merged合并后的文件的第39行,而不是项目的原文件。

而解决方法是,升级gralde到能识别queries元素的版本,比如:

  • 3.3.3
  • 3.4.3
  • 3.5.4
  • 3.6.4
  • 4.0.1

如果是4.1以上版本的话,已经能识别这个元素,不需要升级。

我看了一下,祖传项目里用的还是gradle 3.2.0

android_studio_unexpected_queries_found_in_manifest_03

于是升级到最近的3.3.3

android_studio_unexpected_queries_found_in_manifest_05

重新编译,成功~

android_studio_unexpected_queries_found_in_manifest_04