在升级react-native-image-crop-picker v0.35.0时,出现错误:
node_modules\react-native-image-crop-picker\android\build\intermediates\library_manifest\debug\AndroidManifest.xml:10:5-14:15: AAPT: error: unexpected element found in
查询后发现需要升级gradle版本以能够识别新的<queries>查询元素。
buildscript {
...
dependencies {
classpath("com.android.tools.build:gradle:3.5.4")//升级到补丁版本
}
}
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(当前为Beta)或更高版本,并且具有匹配的Android Gradle插件(例如,该4.1.*系列中的产品),则无需做任何更改即可。这些插件版本已经知道了<queries>。