老的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 秒自救。

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

相关推荐
w***76554 小时前
[golang][MAC]Go环境搭建+VsCode配置
vscode·macos·golang
白狐_7984 小时前
网络基础核心问题深度解析:从IP/MAC到IPv6与路由配置
网络·tcp/ip·macos
z***67774 小时前
macOS安装Redis
数据库·redis·macos
j***63086 小时前
MacOS升级ruby版本
开发语言·macos·ruby
AirDroid_cn6 小时前
iPhone 的5G 信号弱时,如何强制切换为4G?
5g·ios·iphone
用户19729591889120 小时前
WKWebView的重定向(objective_c)
前端·ios
lancoff1 天前
#3 Creating Shapes in SwiftUI
ios·swiftui
lancoff1 天前
#1 How to use Xcode in SwiftUI project
ios·swiftui
lancoff1 天前
#2 Adding Text in SwiftUI
ios·swiftui
良逍Ai出海1 天前
Build in Public|为什么我开始做一款相册清理 App(听说有竞品年收益40W)
ios·uni-app·ai编程·coding