iOS App 在 Mac 上无法运行的 FairPlay 修复

在 Apple Silicon Mac 上运行 iOS App 时,遇到一个很奇怪的问题:同一个 App,当前 Apple ID 打不开,换另一个 Apple ID 却可以正常运行。

这类问题一开始很容易怀疑是 App 没有启用 Mac 兼容性,或者是 SDK、系统版本兼容问题。但如果同一个 App 只换 Apple ID 就能运行,基本可以把方向收敛到账户授权层面。

日志线索

重新登录 App Store、清理缓存都没有效果后,通过 log stream 抓实时日志,看到关键线索:

1
2
3
fairplayStatus: -42005
Could not find account, trying to make one from store metadata
Could not find account, using the active account instead

这里的重点是 fairplayStatus: -42005。它指向本地 FairPlay DRM 授权数据异常,可能是密钥、证书或账户授权状态损坏。

修复方法

可以清除本地 FairPlay 授权数据,然后重启,让系统重新生成:

1
2
3
4
5
6
7
8
9
killall -9 appstoreagent storeaccountd fairplayd
rm -rf ~/Library/Application\ Support/com.apple.fairplayd
rm -rf ~/Library/Caches/com.apple.fairplayd

# 以下两步可能因为 SIP 保护被拒,但不影响这次修复
sudo rm -rf /private/var/db/fpsd
sudo rm -f /private/var/db/scinfo/*

sudo shutdown -r now

重启后,系统会重新建立 FairPlay 授权数据。我的情况是执行后问题恢复正常。

总结

如果 iOS App 在 Mac 上无法运行,而且同一个 App 换 Apple ID 后可以打开,可以优先排查 FairPlay 授权状态。

fairplayStatus: -42005 是一个很关键的诊断信号。相比反复重装 App 或重新登录 App Store,直接看 appstoreagentstoreaccountdfairplayd 相关日志会更快定位问题。

这个问题是通过 QClaw 协助定位并解决的。