Eas build iOS卡死在Fetched Apple distribution certificates
如果你现在卡在:
Fetched Apple distribution certificates
👉 这是 EAS local build 在“证书已拿到,但被 macOS Keychain 阻塞”的经典卡点
而且 只在本地构建会出现,云端不会。
下面我按Expo 官方实现 + macOS 行为给你拆清楚。
✅ 这一步到底发生了什么(不是字面意思)
当你看到:
Fetched Apple distribution certificates
实际上 EAS 已经做完了这几件事:
-
✅ 从 Expo 服务器成功取回
.p12/ cert metadata -
✅ 解密成功
-
⛔ 准备把证书导入 macOS Keychain
👉 真正卡住的不是“fetch”,而是下一步:Keychain 写入
而这一步:
-
需要系统权限
-
可能弹窗
-
但在 CI / CLI 下弹窗不可见
-
macOS 会直接阻塞进程
🎯 结论先行(重点)
这是 macOS Keychain Access 权限阻塞,不是 EAS bug,不是证书坏。
🧨 为什么会“无提示卡死”?
这是 Apple 的老问题:
-
security import -
codesign -
xcodebuild
如果 Keychain:
-
首次被 CLI 访问
-
Keychain 被锁
-
cert 要求访问控制确认
👉 系统会等用户点击弹窗
👉 但 EAS local build 是 non-interactive,永远等不到
于是你看到的就是:
卡死在 Fetched Apple distribution certificates
✅ 100% 有效的解决方式(官方 & 实战验证)
🔐 Step 1:手动解锁 keychain(最重要)
security unlock-keychain ~/Library/Keychains/login.keychain-db
如果它让你输密码,输 macOS 登录密码。
🔐 Step 2:提前允许 codesign / security 访问
security set-key-partition-list \
-S apple-tool:,apple:,codesign: \
-s \
-k "$(security find-generic-password -w)" \
~/Library/Keychains/login.keychain-db
这一步是 fastlane 官方文档里的标准操作
用于避免 build 时卡死