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

Expo EAS构建React Native安卓应用Gradle报错构建失败求助

Expo 安卓EAS构建失败修复方案

问题对应根因

构建过程存在两类问题:

  • 初始警告属于配置冗余:bare workflow模式下EAS Build不再读取app.json内的android.package配置,安卓包名直接取原生项目内的配置值,该字段属于废弃配置项。
  • 核心构建失败原因:react-native-mqtt库长期未迭代更新,使用了Gradle 8版本已完全移除的compile依赖声明语法,同时硬编码了过旧的React Native版本号,触发依赖解析异常;报错中提到的Gradle废弃特性不兼容问题,本质也是第三方库使用了已淘汰的Gradle语法导致。

分步修复操作

1. 清理废弃配置项

  • 打开项目根目录的app.json,删除expo.android.package字段即可。
  • 确认原生配置的包名一致性:检查android/app/build.gradle内的applicationId值、android/app/src/main/AndroidManifest.xml内的package属性值,两处保持和你之前在app.json里配置的包名一致即可,不会影响包名识别。

2. 修复react-native-mqtt的Gradle兼容问题

推荐用patch-package做持久化修复,避免每次安装依赖都要手动改node_modules内容:

  • 打开本地项目路径下的node_modules/react-native-mqtt/android/build.gradle文件,定位到第36行的原代码:
compile 'com.facebook.react:react-native:0.19.+'
  • 将该行的compile替换为Gradle全版本兼容的implementation,同时移除硬编码的旧RN版本号,修改后为:
implementation "com.facebook.react:react-native:+"
  • 全局扫描该build.gradle文件内的所有依赖声明:将所有compile替换为implementation,testCompile替换为testImplementation,androidTestCompile替换为androidTestImplementation——上述旧配置语法在Gradle 8中已被完全删除,是触发“找不到compile()方法”报错的直接原因。
  • 保存修改后,在项目根目录执行npx patch-package react-native-mqtt生成版本补丁,将生成的patches目录提交到代码仓库,后续执行依赖安装时会自动应用该修复。

3. 可选优化方案

如果不想长期维护第三方库补丁,可以直接替换为社区维护的兼容版MQTT库:

  • 卸载原react-native-mqtt依赖,安装适配了新版React Native、Gradle 8的维护fork版本,无需额外修改配置即可通过构建。

验证修复

所有修改完成后,重新执行eas build --platform android即可,之前的废弃配置警告会消失,Gradle阶段的依赖解析错误也会被解决。

内容的提问来源于stack exchange,提问作者user kelto inn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:57:21