React Native项目:Xcode15+iOS17真机调试遇SIGABRT错误求助
React Native + Xcode 15 + iOS 17 真机启动触发SIGABRT错误排查与解决
我基于React Native开发应用,使用Xcode 15打开project_name.xcworkspace构建iOS应用,在iOS 17真机(设备名Max)上运行时触发SIGABRT错误,错误定位在0__abort_with_payload中。此前用旧版Xcode搭配iOS 16.4真机一切正常,升级Xcode和iOS后问题出现。
已尝试的操作(均未解决)
- 卸载并重装Xcode
- 调试应用代码
- 在苹果开发者论坛及Stack Exchange搜索解决方案
- 更换其他iOS 17真机测试,仍出现相同错误
- 构建安装前删除设备上的应用,依旧触发SIGABRT错误
- 使用Xcode 15运行iOS 16.4模拟器,应用启动即崩溃,但无SIGABRT错误提示
Metro启动代码片段
yarn start yarn run v1.22.19 $ react-native start ▒▒▓▓▓▓▒▒ ▒▓▓▓▒▒░░▒▒▓▓▓▒ ▒▓▓▓▓░░░▒▒▒▒░░░▓▓▓▓▒ ▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▓▓ ▓▓░░░░░▒▓▓▓▓▓▓▒░░░░░▓▓ ▓▓░░▓▓▒░░░▒▒░░░▒▓▒░░▓▓ ▓▓░░▓▓▓▓▓▒▒▒▒▓▓▓▓▒░░▓▓ ▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░▓▓ ▓▓▒░░▒▒▓▓▓▓▓▓▓▓▒░░░▒▓▓ ▒▓▓▓▒░░░▒▓▓▒░░░▒▓▓▓▒ ▒▓▓▓▒░░░░▒▓▓▓▒ ▒▒▓▓▓▓▒▒ Welcome to Metro v0.73.9 Fast - Scalable - Integrated r - reload the app d - open developer menu i - run on iOS a - run on Android info React Native v0.72.5 is now available (your project is running on v0.71.8).
Xcode错误日志
0__abort_with_payload文件错误(Thread 1: signal SIGABRT)
libsystem_kernel.dylib`: 0x1e40db3b0 <+0>: mov x16, #0x209 0x1e40db3b4 <+4>: svc #0x80 -> 0x1e40db3b8 <+8>: b.lo 0x1e40db3d8 ; <+40> 0x1e40db3bc <+12>: pacibsp 0x1e40db3c0 <+16>: stp x29, x30, [sp, #-0x10]! 0x1e40db3c4 <+20>: mov x29, sp 0x1e40db3c8 <+24>: bl 0x1e40d07cc ; cerror_nocancel 0x1e40db3cc <+28>: mov sp, x29 0x1e40db3d0 <+32>: ldp x29, x30, [sp], #0x10 0x1e40db3d4 <+36>: retab 0x1e40db3d8 <+40>: ret
“12 start”标签页错误(Thread 1: signal SIGABRT)
0x1bfd0fc04 <+1784>: mov x1, #0x0 0x1bfd0fc08 <+1788>: bl 0x1bfd45f70 ; dyld3::MachOFile::isSimulatorPlatform(dyld3::Platform, dyld3::Platform*) 0x1bfd0fc0c <+1792>: tbnz w0, #0x0, 0x1bfd0fc20 ; <+1812> 0x1bfd0fc10 <+1796>: ldr x1, [x19, #0x10] 0x1bfd0fc14 <+1800>: add x2, sp, #0xd0 0x1bfd0fc18 <+1804>: mov x0, x21 0x1bfd0fc1c <+1808>: bl 0x1bfd26154 ; dyld4::ExternallyViewableState::commit(lsl::Allocator&, lsl::Allocator&) 0x1bfd0fc20 <+1812>: adrp x1, -5 0x1bfd0fc24 <+1816>: add x1, x1, #0x0 0x1bfd0fc28 <+1820>: mov x0, x19 0x1bfd0fc2c <+1824>: bl 0x1bfd0fe58 ; dyld4::prepare(dyld4::APIs&, dyld3::MachOAnalyzer const*) -> 0x1bfd0fc30 <+1828>: mov x20, x0 0x1bfd0fc34 <+1832>: add x0, sp, #0xd0 0x1bfd0fc38 <+1836>: bl 0x1bfd2e724 ; lsl::EphemeralAllocator::~EphemeralAllocator() 0x1bfd0fc3c <+1840>: ldrb w8, [sp, #0x31] 0x1bfd0fc40 <+1844>: cbnz w8, 0x1bfd0fca8 ; <+1948> 0x1bfd0fc44 <+1848>: ldrb w8, [sp, #0x30] 0x1bfd0fc48 <+1852>: cbnz w8, 0x1bfd0fd30 ; <+2084>
Xcode右上角显示Paused Flash on Max(Flash为应用名称,Max为设备名)。另外尝试过降级Xcode14,但Mac M1运行macOS Sonoma,系统要求Xcode15及以上,无法降级。怀疑是产品bug,求解决方案或补丁。
可能的解决方案
升级React Native版本:当前项目使用RN v0.71.8,v0.72.5及以上版本已针对Xcode 15和iOS 17做了兼容性修复。执行以下步骤:
- 备份项目代码
- 运行
npx react-native upgrade升级到兼容版本(推荐v0.72.5或更高) - 重新执行
pod install,清理Xcode缓存后重新构建
检查iOS构建配置:
- 打开Xcode的
Build Settings,确保Deployment Target设置为iOS 11.0或更高 - 检查
Other Linker Flags,移除不必要的冲突配置 - 开启
Dead Code Stripping选项(Build Settings -> Linking -> Dead Code Stripping)
- 打开Xcode的
排查第三方依赖兼容性:
- 逐个检查项目中的Native第三方库,确认是否有未适配iOS 17的库
- 升级所有第三方依赖到最新版本,重点关注涉及Native代码的库
- 暂时移除非核心第三方库,逐步添加排查崩溃点
查看详细崩溃日志:
- 打开Xcode的
Window -> Devices and Simulators,选中设备Max,点击View Device Logs,查看崩溃日志中的Exception Type和Exception Codes,获取精准错误信息
- 打开Xcode的
修复dyld加载问题:
- 检查项目中是否存在重复的Framework或静态库引用
- 清理Derived Data:
Xcode -> Preferences -> Locations -> Derived Data,删除对应文件夹内容 - 执行
pod deintegrate && pod install重新安装依赖
内容的提问来源于stack exchange,提问作者Dread
相关产品推荐
相关产品推荐

