升级Expo 51与Gradle 8.7后Android构建报错求助
解决方案:Expo 51 + Gradle 8.7 Android构建错误修复
针对升级后出现的std::weak_ptr编译错误和Java编译失败问题,按以下步骤逐一解决:
1. 修复expo-modules-core的C++编译错误
该错误源于旧版本expo-modules-core在C++20标准下的语法兼容问题,Expo 51对应的版本已修复此问题:
- 在
package.json中,将expo-modules-core版本更新为**~1.12.10**(Expo 51官方兼容版本) - 执行
npm install或yarn install重新安装依赖
2. 调整NDK版本至React Native 0.74兼容版本
当前使用的NDK 23.x不兼容React Native 0.74(Expo 51基于RN 0.74),修改android/build.gradle中的ndkVersion:
buildscript { ext { // ... 其他配置 ndkVersion = "25.2.9519653" // 替换为RN 0.74推荐的NDK版本 } // ... }
3. 对齐Gradle插件与React Native版本
确保react-native-gradle-plugin版本与你的React Native版本(0.74.1)完全一致,避免版本不匹配导致的Java编译错误:
buildscript { dependencies { classpath('com.android.tools.build:gradle:8.7') classpath('com.facebook.react:react-native-gradle-plugin:0.74.1') // 明确指定RN版本对应的插件版本 } }
4. 更新Kotlin版本至兼容版本
Gradle 8.7需要更高版本的Kotlin支持,修改kotlinVersion:
buildscript { ext { // ... 其他配置 kotlinVersion = '1.9.20' // Expo 51推荐的Kotlin版本 } }
5. 清理缓存并重新构建
- 删除项目根目录下的
node_modules、package-lock.json/yarn.lock - 执行
npx expo prebuild --clean(仅适用于bare workflow项目) - 本地测试可执行
./gradlew clean,EAS构建时可在构建配置中启用"清理缓存"选项
验证步骤
完成上述修改后,重新执行:
eas build --platform android
内容的提问来源于stack exchange,提问作者DavidNy
相关产品推荐
相关产品推荐

