React Native Expo应用仅Testflight导航传参时崩溃排查
问题基本情况
使用Expo开发React Native应用时,遇到仅在Apple Testflight安装包复现、Expo开发服务器运行时完全正常的崩溃问题:
- 应用内待办事项(ToDo)数据存储在Firebase数据库中,新建待办时数据库会自动生成随机字符串类型的文档ID
- 崩溃触发点为npm包
react-navigation提供的navigation.navigate()页面跳转方法:该方法接收页面名称字符串作为首个入参,支持传入额外的跳转参数
复现差异
- 无崩溃场景:跳转至
ToDoDetailScreen页面并传入参数{ todoId: 0 }(对应新建空待办的场景)时,Expo开发模式和Testflight环境均运行正常,对应代码如下:
<ButtonC onPress={() => { navigation.navigate(PR_TODO_DETAIL_SCREEN, { todoId: 0 }) }} />
- 崩溃场景:传入Firebase生成的已有待办字符串ID(例如
"2issHSpPo1IQtAElg6w5",对应查看已有待办的场景)时,Expo开发服务器运行完全正常,Testflight环境会直接触发崩溃,对应调用代码如下:
<Button onPress={() => { navigation.navigate(PR_TODO_DETAIL_SCREEN, { todoId: item.id }) }}/>
注:两处代码使用不同Button组件为预期写法,开发环境下两种调用均可正常执行,并非问题诱因。
项目配置信息
页面对应的名称常量定义如下:
export const PR_TODO_DETAIL_SCREEN = 'ToDoDetailScreen';
开发基于Windows系统完成,未使用XCode,无法直接解析Testflight导出的崩溃日志,已获取完整crashlog.crash文件可用于排查。
当前项目核心依赖版本信息如下:
- react-native-cli: 2.0.1
- react-native: 0.64.3
- expo: 5.4.3
- react-navigation: 7.21.0
求助方向
是否有开发者遇到过同类问题,或可提供进一步的问题排查思路与解决方案?
内容的提问来源于stack exchange,提问作者Janosch
相关产品推荐
相关产品推荐

