Expo Go应用正常但EAS构建真机崩溃(Expo SDK ~47.0.12)
Expo SDK 47 EAS构建包启动崩溃排查方案
一、先获取崩溃日志(核心步骤)
没有日志无法精准定位问题,必须先拿到:
- Android:连接设备到电脑,运行
adb logcat *:E,然后启动崩溃的APP,抓取错误日志。 - iOS:打开Xcode → 窗口 → 设备与模拟器,选中你的设备,查看控制台输出,启动APP后过滤错误信息。
二、依赖版本兼容性修复
从你的package.json里发现几个明显的版本不匹配问题:
- react-native-gradle-plugin版本过高:
你用的RN版本是0.70.5,但react-native-gradle-plugin是^0.71.14,插件版本必须和RN主版本一致。修改为0.70.x版本:"react-native-gradle-plugin": "~0.70.12" - 排查第三方原生依赖:
rn-pdf-reader-js:这个库依赖原生PDF渲染,在EAS构建中可能存在配置缺失,建议替换为Expo官方的expo-pdf(更适配Expo环境),或者检查该库的README确认SDK47的适配配置。@shedaltd/react-native-azure-ad-2:确认该库是否支持Expo SDK47,是否需要在app.json中添加Android/iOS的原生配置(比如权限、URL Scheme等)。
三、检查Babel配置
react-native-reanimated需要在babel中添加插件,确保你的babel.config.js是这样的:
module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], plugins: ['react-native-reanimated/plugin'], // 必须放在最后 }; };
四、EAS构建配置与缓存清理
- 检查
eas.json是否开启了生产模式下的代码混淆,如果开启了,尝试暂时关闭minifyEnabled测试是否是混淆导致的错误。 - 清理构建缓存,避免旧缓存影响:
然后重新执行构建。eas build --clear-cache
五、权限与资源配置检查
- 确认
app.json中声明了所有需要的权限,比如expo-file-system需要的存储权限,expo-screen-orientation需要的配置等。 - 检查闪屏(splash screen)配置,确保
expo-splash-screen在App.js中正确调用了hideAsync(),且闪屏资源路径正确。
六、测试开发构建
先构建开发版的安装包测试:
eas build --profile development
如果开发版能正常运行,说明是生产模式下的优化(比如代码压缩、混淆)导致的问题,再针对性排查生产构建的配置。
内容的提问来源于stack exchange,提问作者bhanu priya
相关产品推荐
相关产品推荐

