非Expo React Native项目集成expo-av后Android构建报错
错误原因
你混淆了两个完全不同的概念:
- 报错信息中提到的「包声明」是Java文件的全局声明语句,必须写在
MainApplication.java所有有效代码的最顶部,格式为package 你的应用包名;,是Java语法要求的文件所属包标识 - 你搜索到的26处
package相关匹配都是React Native框架中ReactPackage类相关的变量名,和报错要求的Java文件包声明无关
react-native-unimodules的gradle脚本需要读取MainApplication.java顶部的包声明获取你的应用包名,用来生成配套配置,当它的正则匹配逻辑无法识别到合法的包声明行时,就会抛出这个错误。
解决方案
按优先级依次尝试以下操作:
- 检查
MainApplication.java的内容,确认所有注释、空行之后的第一行有效代码是正确的包声明,格式严格为package 你的应用ID;,注意结尾必须带分号,前面不能有任何非注释类代码。如果之前修改文件时误删了这一行,补全即可,包名和你app/build.gradle中applicationId的取值保持一致。 - 如果包声明本身是正确的,可能是包声明前的多行注释、特殊符号导致脚本识别失败,把包声明行直接挪到文件的最开头,放在所有注释、import语句的前面,即可解决识别问题。
- 如果上述操作都无效,可以手动指定包名跳过自动识别逻辑:在
android/app/build.gradle的project.ext.react配置块中添加如下配置:
project.ext.react = [ // 保留你原本的其他配置 unimodulesPackageName: "替换为你的应用包名" ]
配置完成后重新构建即可。
额外说明:如果你的React Native版本在0.64及以上,现在安装expo-av不需要完整配置react-native-unimodules,直接安装expo-modules-core和expo-av即可,配置流程更简单,也不会出现这类识别问题。
内容的提问来源于stack exchange,提问作者ofundefined
相关产品推荐
相关产品推荐

