React Native Expo安卓生产环境崩溃且Sentry无法捕获异常
React Native Expo 安卓生产环境调用setItems触发崩溃问题
已查阅Stack Overflow平台所有相关同类问题,现有公开方案均未解决当前问题。
问题触发相关代码
const fetchApi = useCallback(async () => { setIsLoading(true); if (activePortfolioId) { try { const response = await getApis().portfoliosApi.getPortfolioOverviewById( activePortfolioId ); if (response.data && response.data?.tickers?.length) { setItems(handleListItems(response.data.tickers)); } } catch (error) { Sentry.Native.captureException(error); Sentry.Native.captureMessage('HELLO?'); Alert.alert( 'Sorry!', 'We were unable to retrieve the performance list. Please try again later.' ); } finally { setIsLoading(false); } } }, [activePortfolioId]);
故障现象
- iOS端全场景运行正常:无论开发/生产环境、真机/模拟器均无异常,从未触发catch错误分支
- 安卓端存在明确环境差异:Expo开发环境、执行
expo start --no-dev --minify命令模拟生产环境时均无报错,但正式生产环境下打开对应页面时,加载状态可正常触发、接口请求完成后会直接进入catch分支弹出错误提示,随后应用崩溃,退回冻结的启动页
异常捕获情况
项目已接入Sentry实现全链路异常捕获,但未捕获到本次崩溃的相关日志,仅记录到1条无关错误:
Could not open URL 'https://XXXXXXX': No Activity found to handle Intent { act=android.intent.action.VIEW dat=https://XXXXXXX... flg=0x10000000 }
该错误对应登录页的链接跳转逻辑,测试复现过程中从未触发对应操作,确认与本次崩溃无关联。
已尝试排查方案
- 移除接口调用逻辑,直接执行setItems赋值列表数据
- 排查
handleListItems数据处理函数,直接写入固定测试对象完成setItems赋值 - 检查
renderItem列表渲染逻辑,移除所有第三方styled组件,改用React Native原生组件实现
以上方案均未解决问题,仅当完全不执行setItems逻辑时,崩溃不再复现。
补充说明
项目基于TypeScript开发,已排除undefined取值等基础类型错误,现征集有同类问题排查经验的开发者提供可行解决思路。
内容的提问来源于stack exchange,提问作者Rodrigo Schneider
相关产品推荐
相关产品推荐

