Expo EAS构建生产版App闪退 开发环境正常如何解决
EAS构建AAB上传Play商店后安装启动崩溃排查方案
你之前用expo start --minify --no-dev做的测试仅覆盖了JS层的生产模式压缩校验,完全没有涉及原生层构建、Play侧AAB拆分优化、签名校验、so库/资源分发的流程,本地测不出问题属于正常情况,按以下步骤定位即可:
- 第一优先级拿崩溃堆栈,不要无目的试错
- 直接打开Play Console的「崩溃和ANR」面板,正式用户上报的崩溃堆栈会直接标注具体报错类、报错行,闪屏结束即崩溃的场景里,80%以上的报错都是R8混淆丢失类/方法、ABI架构不匹配、原生模块初始化失败三类问题,堆栈会直接指向根因。
- 本地调试直接走Play内部测试轨道上传同配置的AAB,通过Play商店安装测试包(和正式用户安装路径完全一致),设备连接电脑执行
adb logcat -b crash抓全量崩溃日志,比本地装自行导出的APK测试结果准得多。
高频问题对应修复
- 混淆规则问题
如果你在eas.json的production构建配置中开启了enableProguardInReleaseBuilds,R8代码压缩会默认裁剪未被引用的类、方法、JNI调用入口,很多未自带ProGuard规则的第三方原生库会因此出现ClassNotFoundException、NoSuchMethodError报错。临时关闭该配置重新构建内部测试包,如果关闭后崩溃消失,就根据崩溃堆栈里提示的缺失类,在项目的proguard-rules.pro中添加对应的keep规则即可。 - ABI架构兼容问题
检查app.json中expo.android.abiFilters的配置,如果你仅配置了arm64-v8a单架构,armeabi-v7a的老设备安装后会因为找不到对应架构的so库,在闪屏结束加载原生模块时直接崩溃。另外要确认所有引入的原生依赖都提供了你配置的所有ABI对应的so文件,不要出现某个依赖仅支持单架构的情况。 - 资源加载问题
如果代码里存在硬编码资源路径、或者开启了不兼容的资源压缩规则,Play在处理AAB时做的资源拆分、动态下发会导致对应资源丢失,闪屏结束后加载首页字体、图片、配置文件时就会崩溃,这类报错堆栈会明确提示资源ID不存在或者文件访问失败,对应修复硬编码路径、补充资源keep规则即可。 - 依赖版本不匹配问题
如果近期升级过Expo SDK、手动添加过原生依赖,很容易出现依赖版本和SDK版本不兼容的问题,开发环境下的调试容错不会触发这类报错,但是release构建的原生层初始化时会直接崩溃。执行npx expo install --fix把所有Expo相关依赖对齐到当前SDK对应的官方兼容版本,重新构建测试即可。
验证注意事项
所有修复验证都要走Play内部测试轨道,不要直接安装本地构建的APK确认结果——Play处理AAB时会做额外的签名对齐、资源压缩、APK拆分优化,和本地直接安装导出APK的运行环境存在差异,只有走Play分发流程的测试包才能100%复现正式用户的问题。
内容的提问来源于stack exchange,提问作者Anuj Kumar
相关产品推荐
相关产品推荐

