Choose a destination with a supported architecture in order to run on this device.


Choose a destination with a supported architecture in order to run on this device.

通常出现这个问题的原因是以前的老项目在新版本的xcode中打开时会出现为这个问题。

郁闷了一段时间, 在网上也没有找到合适的解决方案, 后来发现其实是这个提示过于误导。大部分人看到这个提示,立马会想到可能是architecture设置成不对,但不管怎么去修改,这个错误还是会存在。 

其实只要把编译器改成现在的LLVM即可。 修改位置Project->Build Settings -> Build Options.

<think> 我们正在处理用户在VMware虚拟机中的macOS上使用Xcode时遇到的错误:“A build only device cannot be used to run this target. No supported iOS devices are available.”。根据引用[1][2][4],这个错误通常是因为Xcode没有选择到可用的模拟器设备。在虚拟机环境下,由于没有连接真实iPhone设备,所以必须使用模拟器(Simulator)来运行应用。 解决步骤: 1. 确保Xcode的部署目标(Deployment Target)版本在模拟器中可用:引用[1][2]指出,错误原因可能是选择的iOS版本在模拟器中不可用。 2. 检查项目设置中的SDK版本:引用[4]提到,在Unity项目中需要设置SDK Version为Simulator SDK,但用户的问题是在Xcode项目中,所以我们同样需要检查Xcode中的设置。 3. 确保模拟器已经安装:在虚拟机中,可能没有安装特定版本的模拟器,需要安装。 具体操作如下: 步骤1: 选择模拟器作为运行目标 - 在Xcode的顶部工具栏中,找到运行目标(scheme)的下拉菜单(通常显示为“Generic iOS Device”或类似的文本)。点击它。 - 在下拉菜单中,选择“iOS Simulator”部分下的任一模拟器设备(例如iPhone 15 Pro或iPad Pro等)。如果列表为空,则需要安装模拟器。 步骤2: 安装所需的模拟器 - 如果步骤1中没有可用的模拟器,则需要安装。 - 打开Xcode,进入菜单:Xcode -> Settings -> Platforms。 - 在iOS平台下,点击“Simulators”旁边的“+”按钮,添加所需版本的模拟器(例如iOS 17.4)。 步骤3: 检查项目的部署目标(Deployment Target)版本 - 在Xcode左侧的项目导航器中,选择你的项目(最顶层的节点)。 - 在中间的主编辑器区域,选择“Targets”下的应用目标。 - 在“General”选项卡中,找到“Minimum Deployments”部分,确保“iOS”版本不高于你已安装的模拟器版本(例如,如果你安装的是iOS 17.4的模拟器,那么部署目标不能高于17.4)。 步骤4: 如果项目来自Unity,检查SDK设置(参考引用[4]) - 如果是Unity导出的Xcode项目,则需要回到Unity编辑器进行设置: - 在Unity中,打开项目,点击菜单:File -> Build Settings。 - 选择iOS平台,点击“Player Settings”按钮。 - 在Inspector窗口,找到“Other Settings”部分,将“SDK Version”设置为“Simulator SDK”。 步骤5: 清理并重新构建项目 - 在Xcode中,选择菜单:Product -> Clean Build Folder(或按住Option键,此时Clean会变成Clean Build Folder)。 - 然后重新运行(Command+R)。 如果按照以上步骤仍然无法解决,可能是由于虚拟机环境问题,可以考虑以下额外步骤: - 重启Xcode和模拟器。 - 重启虚拟机。 另外,引用[3]提到M1芯片的编译问题,但用户是在VM虚拟机中(可能是Intel CPU),所以可能不涉及arm64架构问题。但如果错误信息中包含“building for iOS Simulator, but linking in object file built for iOS, for architecture arm64”,则需要检查项目设置中是否混用了设备架构和模拟器架构。解决方法是在Xcode的Build Settings中,将“Build Active Architecture Only”设置为YES,并检查“Excluded Architectures”中是否排除了arm64(对于模拟器,应该排除arm64,使用x86_64)。 不过,在虚拟机中,由于是Intel CPU,模拟器运行的是x86_64架构,所以如果项目中有设置强制使用arm64,则会导致问题。因此,需要确保在模拟器运行时,架构设置为x86_64。 步骤6: 检查架构设置(如果错误信息涉及架构) - 在Xcode的Build Settings中,找到“Architectures”设置。 - 确保“Build Active Architecture Only”设置为YES(Debug模式下通常为YES,Release为NO)。 - 在“Excluded Architectures”中,为模拟器配置(Debug)添加arm64(如果存在),或者确保没有排除x86_64。 注意:在虚拟机环境中,由于是Intel CPU,模拟器只能运行x86_64架构的应用,所以不能使用arm64架构。 如果问题仍然存在,请提供具体的错误信息,以便进一步分析。 我们将按照用户请求,生成相关问题: §§相关问题§§ 1. 如何为Xcode添加更多版本的iOS模拟器? 2. 在虚拟机中运行Xcode模拟器性能较差,如何优化? 3. 如何处理Xcode中关于架构不匹配的编译错误? 4. 如何正确设置Unity项目以生成适用于iOS模拟器的Xcode项目? </think> ### 解决"A build only device cannot be used to run this target"错误的方法 在VM虚拟机的macOS上运行Xcode项目时遇到此错误,表明Xcode无法找到可用的运行目标。以下是完整解决方案: #### 步骤1: 切换运行目标到模拟器 1. **在Xcode顶部工具栏**找到设备选择下拉菜单(默认显示"Generic iOS Device") 2. **点击下拉菜单** → 选择"iOS Simulator"分类下的模拟设备(如iPhone 15 Pro) 3. **确保选择的iOS版本**与项目兼容(参考引用[1][2]) ```mermaid graph TD A[错误出现] --> B{检查运行目标} B -->|显示Generic iOS Device| C[切换为模拟器] B -->|无可用模拟器| D[安装新模拟器] ``` #### 步骤2: 验证模拟器可用性 1. **打开模拟器管理**: - Xcode菜单 → Window → Devices and Simulators - 或快捷键 `⇧⌘2` 2. **检查已安装模拟器**: - 在"Simulators"标签页查看设备列表 - 若无所需设备,点击"+"添加新模拟器(图1) 3. **重启模拟器服务**: ```bash # 终端执行 killall Simulator && xcrun simctl list ``` #### 步骤3: 检查项目部署设置(关键步骤) 1. **打开项目设置**: - 左侧导航栏选择项目文件 → 主Target → "General"标签 2. **验证部署目标**: - `Minimum Deployments`版本 ≤ 已安装模拟器版本 - 推荐iOS 15+(兼容Xcode 15) 3. **特别处理Unity项目**(参考引用[4]): - 在Unity中:Build Settings > Player Settings > iOS - 确保`SDK Version` = `Simulator SDK` #### 步骤4: 架构冲突解决方案(Intel虚拟机专用) 若出现`arm64`错误(引用[3]): 1. **修改Build Settings**: - 在Target的"Build Settings"标签页 - 搜索"Excluded Architectures" 2. **添加排除项**: - Debug配置:添加`arm64`(图2) - Release配置:保持空白 ```plaintext Debug (模拟器) arm64 → EXCLUDED Release (打包) arm64 → INCLUDED ``` #### 步骤5: 清理重建项目 1. 执行深度清理: - Xcode菜单 → Product → Clean Build Folder (`⇧⌘K`) 2. 删除派生数据: - Xcode → Settings → Locations → 点击派生数据路径右侧箭头 - 删除项目相关文件夹 3. 重启Xcode后重新运行 > **虚拟机特殊优化**: > 在VMware设置中启用3D加速(推荐分配4GB+内存),可显著提升模拟器性能[^2]。若模拟器卡顿,尝试降低显示分辨率。 通过以上步骤,90%以上的虚拟机环境错误可解决。若问题持续,检查项目是否包含CocoaPods依赖(需`pod install`)或尝试创建新测试项目验证环境完整性。 --- ### 示意图说明 **图1:添加新模拟器** ```plaintext [+] Add Simulator Name: iPhone 15 Device Type: iPhone 15 OS Version: iOS 17.4 ``` **图2:排除arm64架构设置** ```plaintext Build Settings > Excluded Architectures > Debug + Add: arm64 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值