国行 Mac 开启 Xcode Predictive Code Completion 代码自动补全/ 绕过 SKU 限制

在国行 Mac 电脑上开启 Xcode 15 的代码自动补全 / Predictive Code Completion 功能。

国行 Mac 开启 Xcode Predictive Code Completion 代码自动补全/ 绕过 SKU 限制

国行 Mac 代码自动补全被禁用

如果你使用国行版本的 Mac 电脑,打开 Xcode 会发现 Component 中没有 Predictive Code Completion 的选项:

Image

在设置 -> Text Editing -> Editing 中可以看到,但无法启用,提示 Predictive Code Completion is Not Supported in Region.

经过 Twitter 大神们的测试,发现是由于苹果禁用了所有 China SKU 的 Mac 电脑,传统通过修改地区、网络等绕过限制的方法均不生效。

强制绕过 SKU 限制 / 开启 PCC 功能

💡
此绕过方法可能存在风险,建议在非工作电脑上尝试,并提前做好数据备份工作。只支持 M 芯片且内存在 16G 或以上的 Mac 电脑。

禁用 SIP 调试限制

System Integrity Protection(SIP)是 macOS 默认开启的一个安全功能,旨在保护系统软件免受篡改,同时允许用户对其它软件和数据进行修改。禁用 SIP 中的调试限制,才能修改 Mac 的 Region 信息。

首先检查当前 Mac 是否已经禁用 SIP 调试限制。你可以通过在终端中运行 `csrutil status 来检查 SIP 状态,如果输出包含 System Integrity Protection status: enable 说明未禁用,请按照以下步骤禁用它。

准备进入恢复模式

  • 关闭你的 Mac。
  • 开机时按住 Command (⌘) 和 R 键,直到看到 Apple logo 或其他启动界面出现。

禁用 SIP 调试限制

进入恢复模式后,执行以下操作:

  • 从菜单栏中选择“实用工具”(Utilities),然后打开“终端”(Terminal)。
  • 在终端中输入以下命令:
csrutil enable --without debug
  • 按回车键执行该命令。

这个命令将启用 SIP 但禁用其中的调试限制。如果你想完全禁用 SIP,可以使用:

csrutil disable

重启 Mac

  • 在终端输入 reboot 命令或使用 Apple 菜单进行重启。
  • Mac 将正常启动并加载新的 SIP 配置。

验证 SIP 状态

重新启动后,你可以在常规模式下打开终端并输入以下命令来验证 SIP 的状态:

csrutil status

如果你看到这样的输出,说明 SIP 已启用但调试限制已禁用:

通过 LLDB 强制修改 Mac Region.

打开终端,执行以下命令:

使用 LLDB 调试 eligibilityd

sudo lldb
(lldb) process attach --name eligibilityd

修改 Mac 电脑地区

(lldb) e (void) [[[InputManager sharedInstance] objectForInputValue:6] setValue:@"US" forKey:@"_deviceRegionCode"]

重新计算相关域

(lldb) e (void) [[EligibilityEngine sharedInstance] recomputeAllDomainAnswers]

完成退出

(lldb) process detach
(lldb) exit

完成后,重新打开 Xcode,顺利的话将可以启用 Predictive Code Completion.

常见错误

error: attach failed: more than one process named eligibilityd

在执行命令

  • process attach --name eligibilityd

时遇到以下错误:

error: attach failed: more than one process named eligibilityd

这通常是因为你打开了 Xcode 并启动了 visionOS 模拟器导致的

解决方案非常简单:停止所有 Xcode 运行任务并退出 Xcode,然后重新进入 lldb 运行命令即可。


参考信息:https://x.com/unixzii/status/1802582879769375001