You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo托管项目Android生产构建失败:react-native-firebase_messaging编译报错

解决Expo托管React Native项目生产构建react-native-firebase_messaging编译失败问题

核心问题定位

annotationType(): unrecognized Attribute name MODULE这个错误,本质是**@react-native-firebase各子模块版本不统一**,或是模块版本与当前Expo/React Native版本不兼容,导致编译时注解处理器冲突。开发环境能构建成功,是因为dev profile的编译规则更宽松,而生产环境会严格校验依赖兼容性,把潜在的版本问题暴露了出来。

具体解决步骤

1. 统一@react-native-firebase所有子模块版本

先打开package.json,检查所有@react-native-firebase/*开头的依赖(比如messaging、app、auth等),确保它们的版本号完全一致。比如你用18.7.0,那所有子模块都要对应这个版本。修改后执行npm install或yarn install重新安装依赖。

2. 强制锁定依赖版本(解决自动安装时版本漂移)

如果手动改版本后还是出现不一致,可在package.json里加resolutions字段强制锁定版本:

"resolutions": {
  "@react-native-firebase/app": "18.7.0",
  "@react-native-firebase/messaging": "18.7.0",
  // 把项目里用到的其他@react-native-firebase子模块都加上
}

然后根据包管理器执行对应命令:

  • npm用户:先装npm install -g npm-force-resolutions,再跑npm install
  • yarn用户:直接执行yarn install

3. 彻底清理构建缓存

Expo本地和远程的缓存可能残留旧依赖,执行以下命令清理:

npx expo prebuild --clean
eas build --clear-cache
npm cache clean --force

4. 校验Expo SDK与Firebase版本兼容性

不同Expo SDK版本对应特定的@react-native-firebase版本,比如SDK 49对应18.x,SDK 50对应19.x,版本不匹配必然会引发编译问题。务必确保两者版本完全兼容。

5. 调整Android编译配置(针对Expo托管场景)

如果以上步骤都无效,可在app.json或app.config.js里添加Android编译参数,强制兼容注解处理器:

"android": {
  "gradleExtra": "android { compileOptions { annotationProcessorOptions { includeCompileClasspath = true } } }"
}

验证步骤

修改完成后,先本地跑生产构建测试,确认没问题再提交远程构建:

eas build --platform android --profile production --local

内容的提问来源于stack exchange,提问作者Alexander Obidiegwu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:45:43