1. 阻止 Xcode 自动打开上次的项目
方法 1. 按住 Shift 键启动 Xcode
- 关闭 Xcode(如果还在运行)。
- 按住
Shift
键,然后打开 Xcode。这将阻止 Xcode 自动打开上次的项目。
方法 2. 删除最近打开的项目记录
- 在终端运行:
defaults delete com.apple.dt.Xcode recentDocuments
- 然后重新启动 Xcode。
2. 尝试安全模式打开 Xcode
- 在终端运行:
open -a Xcode --args -SafeMode
- 这将以安全模式启动 Xcode,避免插件或自定义设置导致的崩溃。
3. 清理 DerivedData 目录
- Xcode 的
DerivedData
可能导致崩溃,可以尝试删除:
rm -rf ~/Library/Developer/Xcode/DerivedData/*
- 然后重新打开 Xcode,尝试手动打开项目。
4. 在终端查看 Xcode 崩溃日志
1. 打开 终端 (Terminal),执行:
log show --predicate 'processImagePath contains "Xcode"' --info --last 1h
这个命令会显示过去 1 小时内的 Xcode 相关日志。
2. 查看 Xcode 崩溃的具体错误:
log stream --process Xcode
运行此命令后,尝试启动 Xcode,查看崩溃时的实时日志输出。
5. 举例分析:
2025-03-04 16:44:07.149503+0800 0x32ef2 Default 0x0 10702 0 Xcode: (DVTFoundation) [MT] DVTAssertions: Backtrace: 0 __exceptionPreprocess (in CoreFoundation) 1 DVTFailureHintExceptionPreprocessor (in DVTFoundation) 2 objc_exception_throw (in libobjc.A.dylib) 3 -[NSObject(NSObject) __retain_OA] (in CoreFoundation) 4 ___forwarding___ (in CoreFoundation) 5 _CF_forwarding_prep_0 (in CoreFoundation) 6 -[IBICAbstractCatalogItem(IBICManifestArchivistDelegate) manifestArchivist:applyPropertiesFromChildEntry:toChild:results:] (in AssetCatalogFoundation) 7 -[IBICBundleIconSet manifestArchivist:applyPropertiesFromChildEntry:toChild:results:] (in AssetCatalogFoundation) 8 -[IBICAppIconSet manifestArchivist:applyPropertiesFromChildEntry:toChild:results:] (in AssetCatalogFoundation) 9 -[IBICManifestArchivist childFromChildEntry:results:] (in AssetCatalogFoundation) 10 __73-[IBICManifestArchivist childrenFromContentsJSONChildrenEntries:results:]_block_invoke (in AssetCatalogFoundation) 11 IBWithObjectBufferResultingInArray (in Asset<…>
日志分析:
从崩溃日志来看,Xcode 的崩溃发生在
AssetCatalogFoundation
相关的IBICManifestArchivist
处理AppIconSet
时。通常,这与 Xcode 解析Assets.xcassets
目录中的图标资源(尤其是AppIcon
)时出现问题有关。
解决方案:
删除 Assets.xcassets
目录,重新打开 Xcode 项目。