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
相关产品推荐
相关产品推荐

