Apple Silicon Mac运行iOS应用时出现“Failed to look up symbolic reference”崩溃如何解决?
解决Apple Silicon Mac上iOS应用原生启动崩溃(符号查找失败)
从报错日志来看,问题出在动态链接阶段无法找到MarketplaceKit框架中的AppDistributor符号,以下是针对性的解决步骤:
检查框架引用与嵌入状态
打开Xcode项目,进入应用目标的General标签页,在Frameworks, Libraries, and Embedded Content列表中找到MarketplaceKit:- 若为自研内部框架,确认
Embed选项设为Embed & Sign;若为系统框架,设为Do Not Embed - 确保框架已正确添加到项目中,无红色缺失标记
- 若为自研内部框架,确认
统一架构配置
同时检查主应用和MarketplaceKit框架的Build Settings:- 将
Architectures设置为Standard Architectures (arm64, x86_64)或仅arm64(适配Apple Silicon原生运行) - 确认
Valid Architectures包含arm64,避免架构不匹配导致符号无法找到
- 将
验证符号可见性
若MarketplaceKit是自研框架:- 确保
AppDistributor类的访问级别为public(Swift中需添加public修饰符,Objective-C中需在头文件声明) - 检查框架的
Build Settings中Symbols Hidden by Default是否设为NO(Debug模式下),防止符号被隐藏
- 确保
重新构建流程
- 先单独构建
MarketplaceKit框架:选中框架目标,执行Product > Build - 再构建主应用:选中应用目标,确认运行设备为
Your Mac (Designed for iPhone/iPad),执行Product > Build - 构建完成后,在Finder中打开.app包,验证
Frameworks目录下存在MarketplaceKit.framework
- 先单独构建
排查运行模式配置
确认未误开启Mac Catalyst模式:- 进入应用目标的
General标签页,检查Deployment Info中的Mac选项是否未勾选(原生运行iOS应用无需开启Mac Catalyst) - 搜索
Build Settings中的Mac Catalyst相关选项,确保所有相关设置均为默认关闭状态
- 进入应用目标的
内容的提问来源于stack exchange,提问作者cleanrun
相关产品推荐
相关产品推荐

