老的ios项目在新的mac M1上编译运行遇到的问题及整理

今天我在 Xcode 里踩过的 10 个坑,以及如何 30 秒爬出来

适用场景:刚从 Android 转 iOS、第一次用 M 系列 Mac、或者一年没碰 Xcode 的你。

阅读收益:下次再遇到同款红色报错,直接 ⌘F 搜关键字,复制答案即可。


0. 前置彩蛋:把"编译"和"运行"分开想,能省一半时间

  • 只想验证代码能不能过?⌘B 足够,不需要选设备。
  • 想跑起来看效果?再选目的地 + ⌘R
    把这两件事分开,很多"设备不可用"的报错瞬间失去存在感。

1. "Downloading Xcode support for iOS xx.x"

关键字 :Downloading / must complete before you can run
场景 :第一次打开新项目,或昨晚苹果刚更新系统。
30 秒方案

  1. Show Downloads → 等进度条完事;
  2. 嫌慢?Xcode ▸ Settings ▸ Platforms 手动取消再重下;
  3. 急用?把 Deployment Target 先降到本地已装版本(如 17.5),秒编。

2. "A build only device cannot be used to run this target"

关键字 :build only / No supported iOS devices
场景 :目的地错选 Any iOS DeviceMac (Build only)
30 秒方案 :顶部工具栏选任意模拟器真机 ,再 ⌘R


3. Bundle ID 被占用 → "The app identifier is not available"

关键字 :not available / cannot be registered
场景 :免费账号或新团队,第一次创建 Bundle ID。
30 秒方案

com.example.xxx 换成全球唯一 字符串,例如
com.yourname.project2025

(提示:加年份几乎不会撞车)


4. "Your team has no devices ..."

关键字 :no devices / provisioning profile
场景 :免费开发账号,且从未登记过真机。
30 秒方案

  1. 插 iPhone → 解锁 → 信任电脑 → 顶部目的地选它 → 弹窗点 Register
  2. 不想插?先换模拟器一样能 ⌘B 编译。

5. 嵌件 Bundle ID 前缀冲突

关键字 :Embedded binary's bundle identifier is not prefixed
场景 :项目里包含 Extension、Widget、WatchApp 等。
30 秒方案

  1. 导航栏顶部 🔍 搜 Extension / Widget / Watch → 找到黄色靶标;
  2. 把它的 ID 改成 主AppID.xxx,例如
    com.yourname.project2025.NotificationService
  3. 有几个改几个,统一前缀即可。

6. 清缓存依旧报错 5.

30 秒方案
⇧⌘K(Clean Build Folder)→ 退出 Xcode → 重新打开 → 再跑。


7. 再次注册失败 ------ 换 ID 依旧冲突

30 秒方案

把前缀再换一层,例如
com.yourname.project2025com.yourname.project2025a
嵌件同步改;字母/数字/年份随便加,确保唯一。


8. 在 Apple 芯片 Mac 上原生跑 iOS 项目

关键字 :Designed for iPhone/iPad
场景 :不想开模拟器,也不想插真机。
30 秒方案

  1. 顶部目的地选 My Mac (Designed for iPhone)
  2. 列表里没有?TARGET ▸ General ▸ Supported Destinations ▸ + ▸ Mac ▸ Designed for iPhone
  3. ⌘R 直接弹出 Mac 窗口,鼠标键盘都能用。

9. 仅编译不运行

30 秒方案

Any iOS DeviceAny iOS Device (arm64)⌘B


10. 找不到嵌件 Target?

30 秒方案

导航器顶部 🔍 输入 Extension / Widget / Watch / Notification / Service → 双击黄色靶标直达。


收尾 checklist(建议截图当桌面)

步骤 快速验证
主 App ID 全局唯一 developer.apple.com 搜索一下,能搜到就继续加后缀
所有嵌件 ID = 主AppID.xxx 批量搜 Extension 确认
目的地 模拟器 / 真机 / My Mac (Designed for iPhone) 三选一
签名失败 先换 ID → 再 Clean → 再跑
真机调试 插线 → 信任 → Register → Done

把这篇丢进收藏夹,下次 Xcode 飘红,直接 ⌘F 搜关键字 ,30 秒自救。

祝你编译一路绿色,生活愉快!

相关推荐
bybitq2 分钟前
Go函数闭包实战-复用函数
ios·golang·xcode
renke33642 小时前
Flutter 2025 跨平台工程体系:从 iOS/Android 到 Web/Desktop,构建真正“一次编写,全端运行”的产品
android·flutter·ios
Zender Han3 小时前
Flutter 中 AbsorbPointer 与 IgnorePointer 的区别与使用场景详解
android·flutter·ios
老臣软件4 小时前
macOS 下载太慢?问题可能不在网速
经验分享·macos·mac·实用软件·网络下载管理器
Clarence Liu5 小时前
MacOS 在Trae IDE中构建现代C++开发环境:从新手到高效的完整指南
c++·ide·macos
Digitally5 小时前
3种简单方法备份 iPhone 短信
ios·iphone
2501_915921435 小时前
Flutter App 到底该怎么测试?如何在 iOS 上进行测试
android·flutter·ios·小程序·uni-app·cocoa·iphone
二流小码农6 小时前
鸿蒙开发:一个底部的曲线导航
android·ios·harmonyos