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

Xcode 13.1分发App时崩溃,集成Charts.framework 3.3.0旧版运行正常

Xcode 13.1 分发App时崩溃
  • 应用集成了Charts.framework 3.3.0版本,集成状态截图如下:
    问题截图
  • 问题出现在分发流程环节:同一个Archive归档文件在Xcode 12.3中可以正常完成分发操作,但在Xcode 13.1中分发时Xcode直接崩溃。
  • 已排除Xcode 13.1本身的通用缺陷:其他项目在相同版本Xcode中可以正常打包分发。

相关报错截图如下:
报错截图1
报错截图2

以下是Xcode 13.1分发App时的崩溃日志:

> Xcode 13.1 分发App崩溃日志
进程:               Xcode [65781]
路径:               /Applications/Xcode.app/Contents/MacOS/Xcode
标识符:             com.apple.dt.Xcode
版本:               13.1 (19466)
构建信息:           IDEFrameworks-19466000000000000~20 (13A1030d)
App 项目ID:         497799835
App 外部ID:         844664792
代码类型:           X86-64 (原生)
父进程:             ??? [1]
负责进程:           Xcode [65781]
用户ID:             501

日期/时间:          2021-11-19 09:24:46.378 +0800
操作系统版本:        macOS 11.6 (20G165)
报告版本:           12
匿名UUID:           52F5D246-FDF9-90E0-35EB-5556BDC2CE93
睡眠/唤醒UUID:      8D6D2E2A-D856-4FEE-8AA1-A72352EEC604
启动后运行时长:      23000秒
唤醒后运行时长:      970秒
系统完整性保护:      已启用

崩溃线程:           13  调度队列: ConcurrentQueue: -[IDEDistributionSummaryStepViewController viewDidLoad]_block_invoke
异常类型:           EXC_CRASH (SIGABRT)
异常代码:           0x0000000000000000, 0x0000000000000000
异常备注:           EXC_CORPSE_NOTIFY

应用特定信息:
可能的2021-11-19 01:24:45 +0000的过时失败提示:
  0: 调用以下代码提供的block:
  0   DVTDispatchAsync (in DVTFoundation)
  1   -[IDEDistributionSummaryStepViewController viewDidLoad] (in IDEKit)
  2   -[NSViewController _sendViewDidLoad] (in AppKit)
  3   -[NSViewController _loadViewIfRequired] (in AppKit)
  4   -[NSViewController view] (in AppKit)
  5   -[DVTViewController view] (in DVTViewControllerKit)
  6   -[IDEDistributionAssistantWindowController setDistributionStepViewController:] (in IDEKit)
  7   -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:] (in Foundation)
  8   -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] (in Foundation)
  9   _NSSetObjectValueAndNotify (in Foundation)
 10   -[IDEDistributionAssistantWindowController next:] (in IDEKit)
 11   -[IDEDistributionPackagingStepViewController _pipelineSucceeded] (in IDEKit)
 12   __58-[IDEDistributionPackagingStepViewController _runPipeline]_block_invoke.70 (in IDEKit)
 13   __DVT_CALLING_CLIENT_BLOCK__ (in DVTFoundation)
 14   ___DVTAsyncPerformBlockOnMainRunLoop_block_invoke (in DVTFoundation)
 15   __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ (in CoreFoundation)
 16   __CFRunLoopDoBlocks (in CoreFoundation)
 17   __CFRunLoopRun (in CoreFoundation)
 18   CFRunLoopRunSpecific (in CoreFoundation)
 19   RunCurrentEventLoopInMode (in HIToolbox)
 20   ReceiveNextEventCommon (in HIToolbox)
 21   _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox)
 22   _DPSNextEvent (in AppKit)
 23   -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (in AppKit)
 24   -[DVTApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in DVTKit)
 25   -[NSApplication run] (in AppKit)
 26   -[DVTApplication run] (in DVTKit)
 27   NSApplicationMain (in AppKit)
 28   start (in libdyld.dylib)
 
产品构建版本: 13A1030d
未捕获异常 (NSInvalidArgumentException): *-[__NSCFNumber dvt_isNonEmpty]: 未识别的选择器发送到实例 0xad7b3702d3d226f1*
用户信息: (null)
打开的文件描述符: 54/9472
提示: 
  0: 调用以下代码提供的block:
  0   DVTDispatchAsync (in DVTFoundation)
  1   -[IDEDistributionSummaryStepViewController viewDidLoad] (in IDEKit)
  2   -[NSViewController _sendViewDidLoad] (in AppKit)
  3   -[NSViewController _loadViewIfRequired] (in AppKit)
  4   -[NSViewController view] (in AppKit)
  5   -[DVTViewController view] (in DVTViewControllerKit)
  6   -[IDEDistributionAssistantWindowController setDistributionStepViewController:] (in IDEKit)
  7   -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:] (in Foundation)
  8   -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] (in Foundation)
  9   _NSSetObjectValueAndNotify (in Foundation)

问题原因与解决方案

核心问题是Xcode 13.x的DVT框架和Charts 3.3.0版本存在分类方法命名冲突:Xcode内置的DVT框架存在dvt_isNonEmpty分类方法,而Charts 3.3.0也为NSNumber添加了同名分类方法,Xcode分发时调用该方法触发了运行时冲突,直接导致崩溃。

可选择以下任意一种方案解决:

  1. 升级Charts到4.0及以上版本,官方已在后续版本修复了该命名冲突问题
  2. 暂时无法升级Charts的情况下,使用命令行工具跳过Xcode UI流程导出ipa:
xcodebuild -exportArchive -archivePath 你的归档文件路径.xcarchive -exportPath 导出路径 -exportOptionsPlist 导出配置.plist
  1. 临时使用Xcode 12.3版本完成分发操作

内容的提问来源于stack exchange,提问作者Steven Gardner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:04