react-native 出现unexpected element <queries> found in <manifest>错误,解决方法

327 阅读2分钟

这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战

问题描述

引入 react-native-image-crop-picker v0.35.0时,出现错误如下: 同时,客户端报错,openPicker not defined; 在这里插入图片描述

解决方法

需要升级gradle版本以能够识别新的查询元素。

buildscript {
  ...
    dependencies {
        classpath("com.android.tools.build:gradle:3.5.4")//升级到补丁版本
    }
}

Android Gradle插件需要了解新的清单元素,尤其是清单合并过程。如果插件在清单合并中看到它无法识别的元素,就会产生混淆的感觉,从而抛出类似问题中的构建错误。

在这种情况下,Android 11 作为清单元素引入,而旧版本的Android Gradle插件不知道该元素。

这是由于清单合并而发生的事实,意味着仅升级依赖项可能会导致此错误。例如,如果您升级到的最新版本com.awesome:awesome-library,并且它的清单中包含一个元素,则即使在代码中没有任何其他更改,您也可能因构建中的上述错误而崩溃。

Google发布了一系列的Android Gradle插件补丁版本来解决此问题:

  • 3.3.3

  • 3.4.3

  • 3.5.4

  • 3.6.4

  • 4.0.1

个人理解

RN 虽然看起来很美好,但真正开发中坑确实也很多,求其是配置上面的一些坑,很多东西都不够适配,也没有向下兼容。所以有很长的时间都在搜索怎么解决bug。实际上比较影响开发体验,体验上比不上flutter。

社区生态很完善,你需要的功能,社区基本都有开源实现方案,但不好的一点是开源代码质量良莠不齐,当时项目依赖的第三方组件基本全都自己修改过。

总结起来就是,现阶段大项目还是原生好,RN就玩一玩图个乐吧。尽个人见解~