EAS构建Android APK失败:Gradle配置错误求助
问题排查与解决方案
核心问题分析
两个错误的根源都是Android项目核心配置缺失和Expo模块与Gradle 8.x的兼容性适配问题:
compileSdkVersion未在项目或模块级build.gradle中指定,导致expo-constants等模块无法完成配置- Gradle 8.x对组件容器的访问方式有变更,Expo旧版自动链接脚本未适配该变化
具体修复步骤
1. 补全Android核心版本配置
在/home/expo/workingdir/build/android/build.gradle(项目级)中添加统一的版本配置:
buildscript { ext { compileSdkVersion = 34 // 建议使用Expo支持的最新稳定版本,比如34或33 targetSdkVersion = 34 minSdkVersion = 21 } // 保留原有其他配置 }
如果模块级app/build.gradle未引用上述变量,需直接补充:
android { compileSdkVersion rootProject.ext.compileSdkVersion // 也可直接写死版本号:compileSdkVersion 34 defaultConfig { targetSdkVersion rootProject.ext.targetSdkVersion minSdkVersion rootProject.ext.minSdkVersion // 保留原有其他配置 } // 保留原有其他配置 }
2. 适配Gradle 8.x的Expo脚本
针对release属性无法获取的问题,修改两处Gradle脚本:
- 修改
autolinking_implementation.gradle第408行附近:
替换原components.release的访问逻辑:// 替换原相关代码为: def releaseComponent = components.findByName("release") ?: components.getByName("main") - 修改
ExpoModulesCorePlugin.gradle第85行附近:
同样替换components.release的访问逻辑:// 替换原相关代码为: def component = components.findByName("release") ?: components.getByName("main")
3. 校验Expo依赖版本兼容性
检查package.json中的Expo相关依赖:
- 确保
expo版本≥49.0.0(Expo 49及以上对Gradle 8.x支持更完善) - 同步更新
expo-modules-core、expo-modules-autolinking到对应适配版本
4. 清理缓存后重新构建
执行命令清理缓存并重新构建:
cd /home/expo/workingdir/build/android ./gradlew clean ./gradlew :app:assembleRelease
内容的提问来源于stack exchange,提问作者Abdullah Zafar
相关产品推荐
相关产品推荐

