You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native应用Google Play控制台Crashes and ANRs报RuntimeException如何解决

问题根因定位

从你提供的崩溃栈可以直接定位到问题根源:崩溃触发自com.swmansion.rnscreens库的ScreenFragment初始化异常,属于React Native安卓端非常典型的后台进程被系统销毁后恢复失败问题。
你本地多设备测试无法复现的核心原因是:常规测试场景不会触发「安卓系统为了回收资源主动销毁后台应用进程,之后用户再次点击图标恢复应用」的逻辑,只有线上真实用户的高频切换应用场景才会触发该问题。

复现排查步骤
  • 手动复现验证:打开应用进入任意二级页面,按Home键切后台,打开Android Studio的Logcat面板选中你的应用进程,点击「Terminate Application」按钮杀死进程,再点击桌面应用图标重新打开,即可100%复现该崩溃
  • 依赖版本核查:检查项目中react-native-screens库的版本,该问题是3.10.0之前版本的已知共性问题,旧版本在Fragment恢复逻辑上存在大量兼容性缺陷
解决方案

按照优先级从高到低选择即可:

  1. 升级依赖(优先推荐):将react-native-screens升级到最新稳定版,同时同步升级@react-navigation/native等导航相关依赖到兼容版本,绝大多数场景下升级后即可直接解决该问题
  2. 临时降级兼容:如果因为项目依赖冲突无法升级,可以修改MainActivity.java的onCreate方法,禁用系统的Fragment状态恢复逻辑:
@Override
protected void onCreate(Bundle savedInstanceState) {
  // 传入null清空之前保存的Fragment状态,避免恢复异常
  super.onCreate(null);
}

注意:该方案会导致应用从后台恢复时直接回到首页,不会保留用户之前的浏览页面栈,仅作为临时降级方案使用
3. 原生逻辑校验:如果你有定制过原生层的Fragment操作逻辑,检查是否存在和react-native-screens库的Fragment操作冲突的代码,确保原生层没有手动操作Screen相关Fragment的逻辑

上线验证

修改完成后,先用上述后台杀进程的方式反复测试10次以上确认无崩溃,发版前可以走Google Play封闭测试通道小范围放量,观察崩溃率是否符合预期即可。

内容的提问来源于stack exchange,提问作者Ali Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:36:01