macOS 27 Golden Gate已发布:开发者面临哪些变化
macOS 27 Golden Gate于2026年9月14日以构建版本26A428发布,与iOS 27.0和Xcode 27同日推出,而且只能装在Apple silicon上:Apple的兼容机型列表从2020年的M1 MacBook Air一直排到M6 Mac mini,其中还有一台A系列机器,即搭载A18 Pro的13英寸MacBook Neo。12 对开发者来说,这一版是Rosetta作为通用工具的最后一年。Apple同日发布的支持文档写道,Rosetta“is available for any Mac with Apple silicon using macOS 27 or earlier”(可用于任何运行macOS 27或更早版本的Apple silicon Mac),而macOS 28只保留它“only for certain older, unmaintained games that rely on Intel-based frameworks”(仅用于某些依赖Intel框架、不再维护的老游戏)。3 GA发布说明里有四条与Rosetta相关的条目:用户此前设为“Open using Rosetta”的App将以原生方式启动;升级后Rosetta不会被自动恢复;未指明宿主架构的安装包默认转为arm64;Intel插件可能既不出现在设置列表里,也不会触发通知。4 9月16日写这篇文章时,我手上没有运行macOS 27的Mac,所以下文的论断出自Apple的原文,再加上我能在macOS 26.6.2上核实的部分:一个标准安装包到底声明了什么、productbuild手册里写的安装器过去如何处理未指明架构的distribution,以及26.6的命令行工具缺少哪些新增的动词。10月1日和2日的更新补充了同一台Mac升级到27.0之后我亲手做的五项检查,以及Apple为重新签名安装包设定的2027年2月1日期限。51314151819
TL;DR
- 日期与构建版本。 9月16日获取的Apple Releases信息源把macOS 27.0(26A428)列在9月14日星期一,同一天还有Xcode 27(27A266a)和iOS 27.0(24A437);到10月1日,信息源里取代macOS和iOS 27.0条目的是27.0.1条目。117 同日发布的兼容机型页面收录了35个机型条目,全部是Apple silicon;升级页面则用一句话给出了规则:“macOS 27 is compatible with any Mac with Apple silicon, which includes any Mac with an M-series chip or A-series chip.”(macOS 27兼容任何搭载Apple silicon的Mac,包括任何搭载M系列或A系列芯片的Mac)2
- Apple已经把Rosetta的时间表写在了纸面上。 支持文档和发布说明口径一致:macOS 28只保留仅限游戏的子集;企业版说明则称Rosetta是“a general-purpose compatibility tool through macOS 27”(直到macOS 27为止的通用兼容工具)。3410 至于升级本身,Rosetta“is not automatically restored”(不会被自动恢复),而用户此前固定为“Open using Rosetta”的App会以原生方式启动。4
- 安装包的默认架构变了。 Apple原文:“Installer packages which specify no
hostArchitecturewill now default to arm64.”(未指明hostArchitecture的安装包现在默认为arm64)4 在macOS 26.6.2上,用pkgbuild构建的组件包根本没有distribution文件,因此它没有声明任何架构;而productbuild --synthesize为我的包生成的distribution里写着hostArchitectures="x86_64,arm64"。Apple归档的Distribution XML参考文档至今仍只把i386、x86_64和ppc列为合法代码。56 - Intel App在停摆之前会先被打上标记。 Apple说,“显示简介”现在会为“Intel-based applications that will no longer run in macOS 28.0”(在macOS 28.0上将无法运行的Intel App)显示“a treatment”(某种标记),并说设置 > 通用里也会把它们列出来;另有一个仅限beta的
game-test-tool,它会直接关掉Rosetta,用Apple所说的“the new underlying system behavior”(新的底层系统行为)来运行老游戏。8(10月2日:在这台Mac上,“显示简介”会对我查看的三个仅支持Intel的App显示一条警告,原文引在下面的更新里。设置中的列表不在“通用”的十四行之中,这些行背后的子面板我还没有打开。19) - 五项与Rosetta无关的系统变化。 macOS不再弹窗询问,而是默认拒绝跨团队容器读取;App无法再直接访问TCC数据库;
spctl新增了一个purge命令;与设备管理相关的连接要求TLS 1.2并使用符合ATS标准的密码套件;App Attest登陆Mac。91011 - 安装包面临2027年2月1日的期限。 Apple在10月1日的通知中说,原有的Developer ID Certification Authority将于当天到期,并且“.pkg files signed with an affected certificate will no longer install.”(用受影响证书签名的.pkg文件将无法再安装)我“下载”文件夹里的四个Developer ID签名安装包,全都链接到这个证书颁发机构;要查明你的安装包用的是哪一个,可以使用Developer ID那篇文章里的命令。1516
- 已实测与未实测的部分。 原生启动的覆盖行为和裸组件包的arm64默认值是Apple的陈述,我还没有在这台自9月23日起运行27.0的Mac上实测。这台Mac的安装历史显示升级没有把Rosetta装回来;“显示简介”对我查看的三个仅支持Intel的App显示了关于macOS 28的警告;设置 > 通用的十四行里没有针对Intel App的条目,不过这些行背后的子面板我还没有打开。文末附近的那一节会逐条列出。
9月14日发布了什么?
| 项目 | 构建版本 | 来源 |
|---|---|---|
| macOS 27.0 Golden Gate | 26A428 | Releases信息源,2026年9月14日星期一1 |
| Xcode 27 | 27A266a | 同一条信息源条目的日期;详情见Xcode 27发布文章1 |
| 兼容的Mac | 35个机型条目,全部为Apple silicon,从M1(2020)到M6,外加MacBook Neo(13英寸,A18 Pro) | 支持文档127255,2026年9月14日发布2 |
| 安装方式 | 软件更新,适用于“any Mac with Apple silicon, which includes any Mac with an M-series chip or A-series chip”(任何搭载Apple silicon的Mac,包括任何搭载M系列或A系列芯片的Mac) | 支持文档127455,2026年9月14日发布2 |
这个名字出自发布说明自己的概述:“The macOS 27 SDK provides support to develop apps for Mac computers running macOS 27 Golden Gate.”(macOS 27 SDK支持为运行macOS 27 Golden Gate的Mac电脑开发App)4 其中A系列那一条值得再看一眼:升级页面的措辞“M-series chip or A-series chip”描述的是整个平台,而不是某一个芯片家族,而MacBook Neo是列表上唯一符合后半句的机器。2
macOS 27.0.1(26A434)随后于9月28日星期一推出。Apple的更新页面只写了一句“This update provides bug fixes for your Mac”(此更新为您的Mac提供错误修复),没有提到下文Rosetta或安装包条目有任何变化。17
macOS 27对Rosetta做了什么?
9月14日发布的两篇支持文档和GA发布说明,从三个角度描述了同一条边界,而且它们对这条边界落在哪里意见一致。
关于Intel App的支持文档:“Rosetta is available for any Mac with Apple silicon using macOS 27 or earlier. Starting with macOS 28, the next major macOS release, Rosetta functionality will be available only for certain older, unmaintained games that rely on Intel-based frameworks.”(Rosetta可用于任何运行macOS 27或更早版本的Apple silicon Mac。从下一个macOS大版本macOS 28开始,Rosetta功能将仅适用于某些依赖Intel框架、不再维护的老游戏)3
企业版说明:“If Rosetta was previously installed, it will not be automatically restored upon upgrading to macOS 27. Rosetta will continue as a general-purpose compatibility tool through macOS 27.”(如果此前安装过Rosetta,升级到macOS 27时它不会被自动恢复。Rosetta将作为通用兼容工具延续到macOS 27)10
发布说明的Rosetta一节,其中一条属于新功能,三条属于弃用:4
- “On launch, Applications previously set to ‘Open using Rosetta’ by a user will have the application launch natively. Any compatibility issues requiring Rosetta from the past should be re-assessed on macOS 27.”(启动时,用户此前设为“Open using Rosetta”的App将以原生方式启动。过去那些需要Rosetta才能解决的兼容性问题,都应该在macOS 27上重新评估)
- “If Rosetta was previously installed, it is not automatically restored after upgrading to macOS 27.0.”(如果此前安装过Rosetta,升级到macOS 27.0之后它不会被自动恢复)
- “Installer packages which specify no
hostArchitecturewill now default to arm64. Ensure any pre and post install scripts behave as intended under arm64. Additionally, audit any remaining installer plugins to ensure compatibility on Apple silicon.”(未指明hostArchitecture的安装包现在默认为arm64。请确认安装前后的脚本在arm64下的行为符合预期;此外,请审查所有仍在使用的安装器插件,确认它们在Apple silicon上兼容) - “Intel-based plugins and loaders may not appear in Settings or trigger notifications of their incompatibility. All Intel-based software will no longer be compatible with macOS 28.0, excluding legacy games.”(基于Intel的插件和加载器可能不会出现在设置中,也不会触发不兼容通知。除老游戏外,所有基于Intel的软件都将不再兼容macOS 28.0)同一条条目还点名了需要检查的文件夹:
~/Library/Audio/Plug-Ins/*、~/Library/Printers/和~/Library/ColorPickers/,对应的是“VSTs, HAL, ARA, PDEs, Color Pickers, Quicklook & Spotlight plugins/extensions/components”。
把第一条和支持文档摆在一起,看上去互相矛盾,直到你读到“previously”(此前)这个词。支持文档说的是,Universal App的“Open using Rosetta”复选框依然有效:“you can use it in macOS 27 or earlier to force the app to open as an Intel-based app, which allows it to use Intel-only plug-ins, extensions, and other add-ons.”(在macOS 27或更早版本上,你可以用它强制App以Intel App的方式打开,从而使用仅限Intel的插件、扩展和其他附加组件)3 而发布说明说的是,“此前设为”该模式的App会以原生方式启动。我的理解是,升级会把这个设置清空一次,用户可以再设回去;Apple要求“重新评估”旧的兼容性问题,也指向同一个方向。这个理解我还没有验证过。如果它成立,那么一位为了某个Intel插件而依赖这个复选框的用户,会在升级后第一次启动时看到App以原生方式打开,而插件没有加载。
第二项变化比第一项来得更早。Apple说,原本装有Rosetta的Mac升级到27.0之后就没有它了,所以按照Apple给出的安装说明,打开任意一个Intel App就是把它装回来的方式。3410 至于在没有Rosetta的Mac上运行Intel二进制文件的脚本会怎样,Apple的原文没有交代;请按“在Rosetta装回来之前它会失败”来规划,无论是通过那个弹窗,还是通过softwareupdate --install-rosetta。3 Apple的Rosetta文档补充了唯一一个不需要安装的情形:“macOS 27 directly integrates support for Intel binary translation, without needing to install Rosetta”(macOS 27直接内置了对Intel二进制翻译的支持,无需安装Rosetta),说的是虚拟机和容器里的Intel Linux二进制文件;Xcode 27与Intel的那篇文章逐句梳理了这句话,以及7月时Apple文档所陈述的整条Rosetta时间线。7
游戏方面的豁免目前只有beta形态。Gaming一节描述了sudo game-test-tool enable,它会开启“support for legacy Intel-based games”(对老式Intel游戏的支持),同时在同一句话里警告:“enabling legacy game support disables Rosetta, non-game processes might crash or behave unexpectedly, and this feature is intended only for playing legacy Intel-based games and is not available outside of macOS beta releases.”(开启老游戏支持会禁用Rosetta,非游戏进程可能崩溃或行为异常;此功能仅用于运行老式Intel游戏,并且不在macOS beta版之外提供)8 所以这个工具是一个仅限beta的开关,对应Apple所说的“the new underlying system behavior”(新的底层系统行为);至于macOS 28会以什么形式提供它,说明里只字未提。
哪些安装包会默认转为arm64?
Apple那句话点名的键是单数的hostArchitecture;与之对应的属性其实是hostArchitectures,它位于产品归档内部Distribution XML的<options>元素上,Apple的参考文档把它描述为“a comma-separated list of supported architecture codes”(一份以逗号分隔的受支持架构代码列表)。6 依我的理解,Apple所说的“未指明hostArchitecture的包”,指的是distribution里没有这个属性的包,或者干脆没有distribution的包。
在macOS 26.6.2上,我用两种方式各构建了一个尽可能小的包。5 pkgbuild产出的组件包展开后只有三项:Bom、PackageInfo和Payload,没有Distribution文件;里面根本没有可以声明架构的地方,所以直接安装一个裸组件包,正是“未指明架构的包”最纯粹的情形。产品归档则不同:对同一个组件运行productbuild --synthesize,它生成的distribution里写着下面这行options,而用它构建出的归档在pkgutil --expand之后同样带着这一行:
<options customize="never" require-scripts="false" hostArchitectures="x86_64,arm64"/>
所以,在26.6上用标准productbuild流程产出的包已经声明了两种架构,按Apple的措辞,新默认值对它不适用。真正会变的,是那些用手写distribution却省略了该属性的包,那些从来不写这个属性的第三方工具产出的包,以及裸组件包。归档的Distribution XML参考文档让这个缺口一目了然:它列出的合法代码是“i386, x86_64, and ppc”,其中没有arm64,所以一份照着这份文档写出来的distribution,压根没有arm64这个代码可写。6
26.6.2上的productbuild手册补上了Apple那条说明里没写的“之前是什么样”。“On Apple Silicon, the macOS Installer will evaluate the product’s distribution under Rosetta 2 unless the arch key includes the arm64 architecture specifier.”(在Apple Silicon上,除非arch键包含arm64架构标识符,否则macOS安装器会在Rosetta 2下解析产品的distribution)以及“If the distribution is evaluated under Rosetta 2, any package scripts inside of product will be executed with Rosetta 2 at install time.”(如果distribution是在Rosetta 2下解析的,那么产品内的所有包脚本都会在安装时以Rosetta 2执行)同一页还描述了我看到的那个属性背后的requirements键arch,依我的理解,productbuild把它写成了hostArchitectures:“Starting on macOS Big Sur (11.0), productbuild will automatically specify support for both arm64 and x86_64 unless a custom value for arch is provided.”(从macOS Big Sur(11.0)开始,除非提供了自定义的arch值,否则productbuild会自动声明同时支持arm64和x86_64)14 所以,Apple说要改的那个默认行为,原本是“在Rosetta 2下解析”,脚本也包括在内;而在27上,按Apple的说明,未指明架构的distribution改为默认arm64。
要检查你分发或安装的包:
pkgutil --expand YourProduct.pkg /tmp/expanded
grep -o 'hostArchitectures="[^"]*"' /tmp/expanded/Distribution
没有Distribution文件,或者grep不到匹配,按Apple的措辞就意味着这个包在27上继承新的arm64默认值,里面的脚本也会以arm64运行。这才是Apple那条说明里真正改变行为、而不只是改变元数据的部分:一个按uname -m分支的preinstall或postinstall脚本会走进arm64分支;而一个要去启动x86_64版辅助程序的脚本,需要一台可能已经根本没装Rosetta的机器上有Rosetta。4 Apple那条说明的结尾给出了它想要的排查动作:“audit any remaining installer plugins to ensure compatibility on Apple silicon”(审查所有仍在使用的安装器插件,确认它们在Apple silicon上兼容),因为Apple的Rosetta文档排除了混合的可能:“The system prevents you from mixing arm64 code and x86_64 code in the same process.”(系统不允许你在同一个进程里混用arm64代码和x86_64代码)7
更新,10月1日:安装包签名的期限定在2027年2月1日
Apple在10月1日的开发者新闻里,给上面的安装包话题加了一个期限,而它与架构毫无关系:“The original Developer ID Certification Authority (Sub-CA) expires on February 1, 2027. Certificates issued by this authority will stop working on that date.”(原有的Developer ID Certification Authority(Sub-CA)将于2027年2月1日到期。由该机构颁发的证书将在当天停止生效)Developer ID分发的两部分境遇不同。对于安装包:“Starting February 1, 2027, .pkg files signed with an affected certificate will no longer install. Re-sign all packages with your new certificate before this date.”(自2027年2月1日起,用受影响证书签名的.pkg文件将无法再安装。请在此日期之前用新证书重新签名所有安装包)对于App:“Previously signed and notarized Mac software (with a secure timestamp) will keep working,”(此前已签名并公证的Mac软件(带安全时间戳)将继续正常工作),无需采取任何操作。15
pkgutil --check-signature YourProduct.pkg会打印出安装包签名所用的证书链,其中原有证书颁发机构的条目写着Expires: 2027-02-01 22:12:15 +0000。我“下载”文件夹里来自两家厂商的四个Developer ID签名安装包,全都显示这一行。16 这份通知没有提到任何macOS版本,所以这个期限并不是Golden Gate的变化,我另写了一篇文章:Developer ID Certification Authority将于2027年2月1日到期,内容包括如何判断你的证书由哪个证书颁发机构签发、一台Mac上的App和安装包各自显示什么,以及重新签名的顺序。
对开发者还有哪些变化?
GA发布说明中其余与你交付的代码相关的条目,凡是措辞本身就是重点的地方,都附上Apple的原话:9
- 跨团队容器。 “Accessing files in other developer teams’ app data containers and app group containers no longer prompts the user for authorization; such accesses are denied by default and can be managed by the user in Privacy & Security settings.”(访问其他开发团队的App数据容器和App群组容器中的文件,不再向用户请求授权;此类访问默认被拒绝,用户可在“隐私与安全性”设置中管理)我在8月那篇文章里写过它的失败形态:API照样返回一个URL,拒绝发生在读取的时候。另一条条目补充说,“XProtect may now restrict access to app data that is commonly targeted by malicious software.”(XProtect现在可能会限制对常被恶意软件盯上的App数据的访问)“隐私与安全性设置”下的一条已知问题覆盖了命令行的情形:“In the Files & Folders pane, a process without a bundle ID cannot be granted access to specific app data containers or app group containers owned by other developer teams.”(在“文件与文件夹”面板中,没有bundle ID的进程无法被授予访问其他开发团队特定App数据容器或App群组容器的权限)Apple给出的变通方法是授予完全磁盘访问权限,“for the duration of the requirement”(在有此需要的期间)。
- TCC。 “Apps can no longer access the local TCC database directly.”(App不能再直接访问本地TCC数据库)企业版说明在这项移除之外,给管理员补了一条新的查询路径:“The new
tccutil listcommand can report current privacy authorizations for specified services or apps on managed devices.”(新的tccutil list命令可以报告受管设备上指定服务或App当前的隐私授权情况)10 在26.6.2上,tccutil只接受一个动词:reset。13(在运行27.0、未受管的Mac上,这个二进制文件里有list,但回应的仍是reset那行用法说明;见10月1日的更新。) - launchd,被归档为已修复。 在“启动守护进程与代理”的“已解决问题”下,Apple写道:“Fixed:
launchdno longer supports loadinglaunchdproperty list files with the quarantine extended attribute.”(已修复:launchd不再支持加载带有隔离扩展属性的launchd属性列表文件)Apple在同一份文档里用了两种方式使用“Fixed:”这个前缀:一种指它解决掉的问题(Accessory Access,176815987:“Fixed: Accessory Access does not work inside App Sandbox.”),另一种指解决之后的行为本身(Foundation,161588649:“Fixed:+[NSURL URLWithString:]no longer double-encodes the%of valid percent-escape sequences when encoding other invalid characters.”)。按第一种读法,launchd那一行是beta期间的限制在GA时被解除;按第二种读法,这条限制就是正式版发布出来的行为。这条说明让正式版的实际行为变得含糊,而我还没有测试过。(10月1日:这台Mac现在运行27.0,这项测试仍有待进行。) - Gatekeeper。
spctl新增了一个purge命令,“which will clean up Gatekeeper database entries for apps and executables which are no longer mounted”(它会清理那些已不再挂载的App和可执行文件在Gatekeeper数据库中的条目)。Apple在这条条目里把参数写成了单个短横线,所以在27上动手敲之前,请先看工具自己的帮助;26.6.2上那个工具的用法文本里没有purge命令。13(在27.0上,这个工具列出了spctl --purge;见10月1日的更新。) - 受管Mac的网络安全。 “Starting in 27.0 operating systems, select system processes now enforce stricter network security (TLS) requirements.”(从27.0系统开始,部分系统进程会执行更严格的网络安全(TLS)要求)受影响的是MDM、声明式管理、自动化设备注册、描述文件安装、App安装和软件更新,门槛是“TLS 1.2 at minimum, using cipher suites and certificates that meet App Transport Security (ATS) requirements”(至少TLS 1.2,并使用符合App Transport Security(ATS)要求的密码套件和证书)。Apple面向管理员的支持文档补充说,SCEP连接和内容缓存连接不在此列。11
- Mac上的App Attest。 “App Attest is now available to verify the authenticity of Mac apps.”(App Attest现已可用于验证Mac App的真实性)10
- 受管安装包与旧版更新管理。 设备管理“can configure the desired behavior when a managed package is removed”(可以配置受管安装包被移除时的预期行为),并且“Legacy software update management no longer functions in all 27.0 operating systems”(旧版软件更新管理在所有27.0系统上不再生效),这让旧的软件更新命令、查询和延迟限制统统让位给声明式管理。10
- System。 System库“now provides Swift APIs for the C
stat,lstat,fstat, andfstatatsystem calls”(现在为C的stat、lstat、fstat和fstatat系统调用提供Swift API),另有一条已解决问题记录了beta期间的构建中断:写在你自己的FilePath或FileDescriptor扩展里的非限定stat()调用“might conflict with the new Swiftstat()instance methods”(可能与新的Swiftstat()实例方法冲突),Apple把它列为GA时已修复。 - 磁盘映像。 “The new DiskImageKit framework provides Swift APIs for creating and managing standalone and stacked disk images in the Apple Sparse Image Format (ASIF) and raw disk image formats.”(全新的DiskImageKit框架提供Swift API,用于创建和管理Apple Sparse Image Format(ASIF)以及原始磁盘映像格式的独立磁盘映像和堆叠磁盘映像),供配合Virtualization框架使用。
- Mac Catalyst。 Catalyst App“now behave like AppKit apps when you switch to them with no open windows”(在没有打开窗口的情况下切换过去时,行为与AppKit App一致),所以除非激活来自程序坞或聚焦,切换过去不会再创建窗口。
- 启动磁盘。 给还留着老宗卷的人的一条已知问题:“When a Mac is running macOS 11.0, you might not be able to select the boot volume of macOS 27.0 or later as the startup disk in System Settings.”(当Mac运行macOS 11.0时,你可能无法在“系统设置”里把macOS 27.0或更高版本的引导宗卷选为启动磁盘)Apple给出的变通方法是电源键启动选项界面。
这次发布的Xcode一侧,已经分散在两篇文章里。Xcode 27发布文章复现了27A266a上的ARCHS_STANDARD变化,其中macOS部署目标设为27.0时只会解析出arm64;Intel那篇文章梳理了三句Intel弃用说明。Apple在GA时对这些条目的措辞与beta 4的文本一致,包括让Intel路径再多留一年的那一句:“Intel development is still possible with macOS versions that support Rosetta like macOS 27.”(在macOS 27这类支持Rosetta的macOS版本上,仍可进行面向Intel的开发)12
更新,10月1日:在运行macOS 27.0的Mac上做的三项检查
写这篇文章所用的Mac已于9月23日升级到macOS 27.0(26A428),所以上文的三条论断可以拿它来核对。其中两条得到了明确答案;第三条在未受管的Mac上无法下结论。18
升级没有恢复Rosetta。 这台Mac上的/Library/Receipts/InstallHistory.plist记录了2023年以来的每一次macOS更新,从2023年6月到26.6.2,每一次更新都在几秒之内配有一条由bootinstalld写入的RosettaUpdateAuto条目:系统每次更新都会顺带更新Rosetta。9月23日的macOS 27.0条目是自那以来第一条没有配对的。一周之后,也就是太平洋时间9月30日晚上,Rosetta回来了,写入那条记录的是CoreServicesUIAgent,正是2023年记录这台Mac首次安装Rosetta的那个进程,时间比某打印机厂商的第一个安装包开始运行早87秒。这与Apple的说法相符:“If Rosetta was previously installed, it is not automatically restored after upgrading to macOS 27.0.”(如果此前安装过Rosetta,升级到macOS 27.0之后它不会被自动恢复)4 安装历史记录的是哪个进程安装了Rosetta,而不是屏幕上显示了什么,所以把10月那条记录解读为安装弹窗,只是我自己的推断。
spctl有purge命令,参数是两个短横线。 在27.0上,spctl不带参数运行时会列出spctl --purge # purge unmounted policy scan cache entries,手册页则说它清除“old policy scan cache entries. Currently those which were on volumes which are no longer mounted. Requires root access.”(旧的策略扫描缓存条目。目前指那些位于已不再挂载的宗卷上的条目。需要root权限)发布说明把这个参数印成了单个短横线;工具的用法说明和手册列出的都是两个。我还没有运行过它。
tccutil list在二进制文件里,但在这台Mac上被拒绝。 27.0的tccutil二进制文件里有这个动词及其用法文本tccutil list (-s SERVICE | -b BUNDLE_ID | -s SERVICE -b BUNDLE_ID)。在这台Mac上以普通用户身份运行,不论是不带参数,还是带-s、-b或两者兼有,打印的都是它在26.6.2上打印的同一行tccutil: Usage: tccutil reset SERVICE [BUNDLE_ID],而手册页没有提到这个动词。这台Mac没有注册设备管理,而Apple的企业版说明称该命令报告的是“for specified services or apps on managed devices,”(受管设备上的指定服务或App)的情况。10 因此这个结果与“该命令以注册为前提”的情形相符。二进制文件没有说明这个前提具体是什么,我没有以root身份运行它,也无法在这里测试受管的情形。
更新,10月2日:“显示简介”里的警告,以及初步查找设置中的列表
下文“我无法实测的部分”列出的五条Apple论断中,又有两条在同一台Mac(macOS 27.0,26A428)上通过辅助功能API读取到了。19
“显示简介”会显示警告。 在三个仅支持Intel的App上,Finder的“显示简介”窗口把种类显示为“Application (Intel)”(应用程序(Intel)),其下是一个警告图标和两句话:“Intel-based apps requiring Rosetta will not open in macOS 28, the next major release. Check with the developer for an Apple silicon version.”(需要Rosetta的Intel App将无法在下一个主要版本macOS 28中打开。请向开发者确认是否有Apple silicon版本。)后面跟着一个“Learn more…”(了解更多)链接。两个Universal App显示“Application (Universal)”(应用程序(通用)),没有警告,并有一个“Open using Rosetta”(使用Rosetta打开)复选框,两者都未勾选。一个仅为Apple silicon构建的App显示“Application (Apple silicon)”(应用程序(Apple silicon)),既无警告也无复选框。也就是说,在我读取的六个窗口里,Apple说明中的“标记”是加在没有arm64切片的App上的警告图标和文字,而支持文档描述的那个复选框在27.0上仍然保留在Universal App上。38 在我的“应用程序”文件夹里,能读取主可执行文件的App有116个,其中21个没有arm64切片。
设置中的列表不在“通用”的顶层。 Apple的说明写道:“Settings > General now lists Intel-based apps that will be incompatible with macOS 28.0.”(设置 > 通用现在会列出将与macOS 28.0不兼容的Intel App。)8 在这台Mac上,“通用”面板有十四行,按辅助功能标识符读取后,其中没有一行是Intel App的条目。这些行背后的子面板我没有打开,列表可能就在那里,所以这只是查找了一个界面而没有找到,并不能证明这个列表不存在。
我无法实测的部分
9月16日写这篇文章时,我没有运行macOS 27的Mac,所以原文里每一条27上的行为都是Apple的陈述。本文最倚重的五条是:升级后,此前被固定为“Open using Rosetta”的App会以原生方式启动;原本装有Rosetta的Mac升级后不再有它;“显示简介”会为将无法在28上运行的App显示一个标记;设置 > 通用会把它们列出来;裸组件包在27上会以arm64运行自己的脚本。上面那个安装包实验确立的是26.6.2上的包声明了什么,而不是27如何对待它们。
10月1日和2日:同一台Mac自9月23日起运行macOS 27.0,上面的更新涉及这五条陈述中的三条。缺失的Rosetta体现在安装历史里。“显示简介”里的标记确实存在。设置中的列表不在“通用”的十四行之中,这些行背后的子面板还没有读取。另外两条没有实测:固定应用的行为需要一个在升级前就已固定为使用Rosetta的App,组件包的检查需要安装一个测试包。如果实测了,每一条都会在这里加上一节带日期的内容,就像ld64那篇文章后来补上它的GA章节那样。
这周我会做什么
- 把你分发的每一个包、以及你的构建机会安装的每一个包都展开,在distribution里grep
hostArchitectures;把“文件缺失”或“属性缺失”一律当作“在27上是arm64”,然后带着这个前提去读安装前后的脚本。45 - 如果有任何CI或预置环节会运行Intel二进制文件,请在安装脚本里显式安装Rosetta,而不要指望它能熬过升级;Apple说它不会。410
- 按Apple的方式,也就是按文件夹去清点Intel插件:
~/Library/Audio/Plug-Ins/*、~/Library/Printers/、~/Library/ColorPickers/,以及你的快速查看和聚焦扩展所在的位置,这两类Apple是按类别而不是按路径点名的。设置里可能不会列出它们,而macOS 28不会加载它们。4 - 如果你是通过拷贝plist来安装启动代理的,请在一台27的机器上、在隔离属性仍然存在的情况下实测一次;Apple把这条说明归在“已解决问题”下,而它有两种读法。9
- 如果你在做设备管理,现在就拿你的MDM、注册和更新服务器去对照TLS 1.2与ATS密码套件要求做测试;Apple说它的系统“might refuse connections”(可能拒绝连接)不合规的服务器,同一页针对版本27或更高的条目写着“Non-compliant connections are blocked and the log messages appear as errors instead of warnings”(不合规的连接会被阻止,日志消息会以错误而非警告的形式出现),而它列出的豁免只有SCEP和内容缓存。911
- 如果你在beta期间为
stat()冲突做过临时规避,请把规避去掉再重新构建;Apple把它列为GA时已修复。9 - 10月1日新增:对你分发的每一个包运行
pkgutil --check-signature。如果证书颁发机构那一条写着Expires: 2027-02-01 22:12:15 +0000,请在2027年2月1日之前重新签名该包;具体顺序见Developer ID那篇文章。1516
常见问题
macOS 27是什么时候发布的?
2026年9月14日星期一,构建版本26A428,与iOS 27.0(24A437)和Xcode 27(27A266a)同日。我在9月16日获取Apple的Releases信息源时,它把这些全都列在这一天。1
哪些Mac能运行macOS 27 Golden Gate?
任何搭载Apple silicon的Mac。Apple的兼容机型页面列出了35个机型条目,从2020年的M1 MacBook Air、MacBook Pro和Mac mini,一直到M5和M6机型,外加MacBook Neo(13英寸,A18 Pro)。列表上没有任何一台Intel Mac。2
macOS 27上Rosetta还能用吗?
能。Apple的支持文档说,Rosetta“is available for any Mac with Apple silicon using macOS 27 or earlier”(可用于任何运行macOS 27或更早版本的Apple silicon Mac),企业版说明称它是“a general-purpose compatibility tool through macOS 27”(直到macOS 27为止的通用兼容工具)。Apple说升级不会恢复它,所以原本装有它的Mac可能需要再装一次。3410
macOS 28上Rosetta还能用吗?
只对游戏。“Starting with macOS 28, the next major macOS release, Rosetta functionality will be available only for certain older, unmaintained games that rely on Intel-based frameworks.”(从下一个macOS大版本macOS 28开始,Rosetta功能将仅适用于某些依赖Intel框架、不再维护的老游戏)发布说明也写着:“All Intel-based software will no longer be compatible with macOS 28.0, excluding legacy games.”(除老游戏外,所有基于Intel的软件都将不再兼容macOS 28.0)34
arm64默认值会影响哪些安装包?
distribution文件里没有hostArchitectures属性的包,以及根本没有distribution文件的裸组件包。在macOS 26.6.2上由productbuild生成的产品归档声明了hostArchitectures="x86_64,arm64",不在Apple那句话的范围内。用pkgutil --expand加上对Distribution文件的grep来检查。456
我需要在2027年2月之前重新签名安装包吗?
如果它们是用原有证书颁发机构签发的Developer ID Installer证书签名的,那么需要。Apple在10月1日的通知中说,自2027年2月1日起“.pkg files signed with an affected certificate will no longer install”(用受影响证书签名的.pkg文件将无法再安装),而带安全时间戳签名的已公证App会继续正常工作。对安装包运行pkgutil --check-signature即可看出它链接到哪个证书颁发机构:原有的那个将于2027-02-01到期。完整的检查方法见Developer ID那篇文章。1516
在macOS 27上,Intel App的“显示简介”会显示什么?
在macOS 27.0(26A428)上,我检查的三个仅支持Intel的App,其Finder“显示简介”窗口都把种类显示为“Application (Intel)”(应用程序(Intel)),并附有一条警告:“Intel-based apps requiring Rosetta will not open in macOS 28, the next major release. Check with the developer for an Apple silicon version.”(需要Rosetta的Intel App将无法在下一个主要版本macOS 28中打开。请向开发者确认是否有Apple silicon版本。)我检查的两个Universal App没有警告,并保留了“Open using Rosetta”(使用Rosetta打开)复选框,处于未勾选状态。19
升级之后需要重装Rosetta吗?
Apple说,如果这台Mac在升级前装有Rosetta,macOS 27不会自己把它装回来。按Apple的安装说明,打开任意一个Intel App就会让弹窗重新出现,你也可以在“终端”里用Apple支持文档给出的命令softwareupdate --install-rosetta来安装。34
参考来源
-
Apple,Releases,RSS信息源于2026年9月16日获取:“macOS 27.0 (26A428)”“Xcode 27 (27A266a)”和“iOS 27.0 (24A437)”,日期均为2026年9月14日星期一。截至该次获取,信息源中没有出现更晚的macOS条目。 ↩↩↩↩↩
-
Apple,macOS 27 Golden Gate is compatible with these computers,2026年9月14日发布。列表内容:11条MacBook Pro条目,从“MacBook Pro (13-inch, M1, 2020)”到“MacBook Pro (16-inch, M5 Pro or M5 Max)”;9条MacBook Air条目,从“MacBook Air (M1, 2020)”到“MacBook Air (15-inch, M5)”;“MacBook Neo (13-inch, A18 Pro)”;5条iMac条目,从“iMac (24-inch, M1, 2021)”起;4条Mac mini条目,从“Mac mini (M1, 2020)”到“Mac mini (M6 or M5 Pro)”;4条Mac Studio条目,从“Mac Studio (2022)”到“Mac Studio (M5 Max or M5 Ultra)”;以及“Mac Pro (2023)”。Apple,How to upgrade to macOS 27 Golden Gate,2026年9月14日发布:“macOS 27 is compatible with any Mac with Apple silicon, which includes any Mac with an M-series chip or A-series chip.” ↩↩↩↩↩↩
-
Apple,Using Intel-based apps on a Mac with Apple silicon,2026年9月14日发布:“Rosetta is available for any Mac with Apple silicon using macOS 27 or earlier. Starting with macOS 28, the next major macOS release, Rosetta functionality will be available only for certain older, unmaintained games that rely on Intel-based frameworks.”关于那个复选框:“If this setting is available for your app, you can use it in macOS 27 or earlier to force the app to open as an Intel-based app, which allows it to use Intel-only plug-ins, extensions, and other add-ons.”文中给出的终端安装命令是
softwareupdate --install-rosetta。 ↩↩↩↩↩↩↩↩↩↩ -
Apple,macOS 27 Golden Gate Release Notes,2026年9月16日通过Apple的文档JSON接口获取。概述:“The macOS 27 SDK provides support to develop apps for Mac computers running macOS 27 Golden Gate.”Rosetta一节,新功能(168097174)与弃用(163213094、171187112、176042635),原文已在正文中引用。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
作者在macOS 26.6.2(构建版本25G83)上的测试,2026年9月16日。
pkgbuild --root root --identifier com.blakecrosley.probe --version 1.0 --install-location / probe-component.pkg产出的组件包,其pkgutil --expand输出中只有Bom、PackageInfo和Payload,没有Distribution;PackageInfo记录的是generator-version="InstallCmds-864.12 (25G83)"。productbuild --synthesize --package probe-component.pkg distribution.xml生成的distribution,其options元素为<options customize="never" require-scripts="false" hostArchitectures="x86_64,arm64"/>;用productbuild --distribution distribution.xml --package-path . probe-product.pkg构建出的产品归档,展开后的Distribution里带着同一行。 ↩↩↩↩↩ -
Apple,Distribution XML Reference,文档归档,
options元素表格,hostArchitectures行(String,Optional):“A comma-separated list of supported architecture codes. Valid codes are i386, x86_64, and ppc.”于2026年9月16日获取。 ↩↩↩↩ -
Apple,About the Rosetta translation environment,2026年9月16日通过文档JSON接口获取:Rosetta“will be available through macOS 27”(将延续到macOS 27),作为“a general-purpose tool for Intel apps”(面向Intel App的通用工具);“Beyond this timeframe, we will keep a subset of Rosetta functionality aimed at supporting older unmaintained gaming titles, that rely on Intel-based frameworks”(在此之后,我们会保留Rosetta功能的一个子集,用于支持依赖Intel框架、不再维护的老游戏);“macOS 27 directly integrates support for Intel binary translation, without needing to install Rosetta.”关于混合进程:“The system prevents you from mixing
arm64code andx86_64code in the same process. Rosetta translation applies to an entire process, including all code modules that the process loads dynamically.” ↩↩ -
Apple,macOS 27 Golden Gate发布说明(同4):弃用信息(169548657):“Intel-based applications that will no longer run in macOS 28.0 now display a treatment in Get Info.”EcosystemUI(175697313):“Settings > General now lists Intel-based apps that will be incompatible with macOS 28.0.”Gaming(166398727):
sudo game-test-tool enable那一条,原文已在正文中引用。 ↩↩↩↩ -
Apple,macOS 27 Golden Gate发布说明(同4):系统完整性保护(161835690、178668601),隐私与安全性设置、已知问题(184660124),TCC(90775556),启动守护进程与代理、已解决问题(166415497),与之并列比较的两条“Fixed:”条目分别出自Accessory Access(176815987)和Foundation(161588649),Gatekeeper(123097648),网络安全(176055825),System(160612181、177911316),磁盘映像(177868758),Mac Catalyst(69906818),启动磁盘(166640903)。“对开发者还有哪些变化”一节中的每一段引文,都出自与之编号对应的条目。 ↩↩↩↩↩
-
Apple,What’s new for enterprise in macOS Golden Gate 27,2026年9月14日发布,9月28日增补27.0.1一节后重新发布;以下每一句在10月1日的版本中均未改变:“If Rosetta was previously installed, it will not be automatically restored upon upgrading to macOS 27. Rosetta will continue as a general-purpose compatibility tool through macOS 27.”;“App Attest is now available to verify the authenticity of Mac apps.”;“The new tccutil list command can report current privacy authorizations for specified services or apps on managed devices.”;“Device management can configure the desired behavior when a managed package is removed, ensuring unwanted data and files are not left behind on devices when no longer needed.”;“Legacy software update management no longer functions in all 27.0 operating systems.” ↩↩↩↩↩↩↩↩↩↩
-
Apple,Prepare your network environment for stricter security requirements,于2026年9月16日获取:“Starting with version 27.0 of iOS, iPadOS, macOS, watchOS, tvOS, and visionOS, Apple operating systems might refuse connections to servers with outdated or non-compliant TLS configurations due to additional network security requirements.”“Servers must support TLS 1.2 or later, use ATS-compliant ciphersuites, and present valid certificates that meet ATS standards.”在以“On version 27 or later:”开头的那一段中:“Non-compliant connections are blocked and the log messages appear as errors instead of warnings.”页面点名的例外:SCEP服务器和内容缓存服务器。 ↩↩↩
-
Apple,Xcode 27 Release Notes,Intel Deprecation一节,2026年9月16日通过文档JSON接口获取。新功能(161837535):“Build targets with a min deployment target set to macOS 27.0 or DriverKit 27.0 will not build Universal by default. The
ARCHS_STANDARDbuild setting will no longer include x86_64 whenMACOSX_DEPLOYMENT_TARGETorDRIVERKIT_DEPLOYMENT_TARGET>= 27.0.”弃用(162138432):“Xcode 27 will only install and run on Apple silicon Macs. The macOS 27 SDK supports back deploying Universal (Intel and Apple Silicon) apps to macOS 12 and later. Intel development is still possible with macOS versions that support Rosetta like macOS 27.”ARCHS_STANDARD在GA版上的复现见Xcode 27发布文章的脚注4。 ↩ -
作者在macOS 26.6.2(构建版本25G83)上的测试,2026年9月16日:
spctl不带参数运行时打印“System Policy Basic Usage”,其用法文本中没有purge命令;tccutil不带参数以及tccutil list都打印“tccutil: Usage: tccutil reset SERVICE [BUNDLE_ID]”。 ↩↩↩ -
在macOS 26.6.2(构建版本25G83)上执行
man productbuild,2026年9月16日,PRE-INSTALL REQUIREMENTS PROPERTY LIST,arch键:“On Apple Silicon, the macOS Installer will evaluate the product’s distribution under Rosetta 2 unless the arch key includes the arm64 architecture specifier.”“If the distribution is evaluated under Rosetta 2, any package scripts inside of product will be executed with Rosetta 2 at install time.”“Starting on macOS Big Sur (11.0), productbuild will automatically specify support for both arm64 and x86_64 unless a custom value for arch is provided.” ↩↩ -
Apple,“Upcoming expiration of Developer ID Certification Authority (Sub-CA)”,开发者新闻,2026年10月1日,原文已在正文中引用。 ↩↩↩↩↩
-
作者于2026年10月1日在一台运行macOS 27.0(26A428)的Mac上的检查:对
~/Downloads里四个Developer ID签名的.pkg文件运行pkgutil --check-signature(其中三个来自同一家厂商,可信时间戳分别为2025年9月28日、12月14日和12月29日;另一个来自另一家厂商,时间戳为2014年)。每条证书链中的“Developer ID Certification Authority”条目都显示“Expires: 2027-02-01 22:12:15 +0000”。其余调查结果见Developer ID那篇文章。 ↩↩↩↩ -
Apple,Releases,RSS信息源于2026年10月1日获取:“macOS 27.0.1 (26A434)”,日期为Mon, 28 Sep 2026 10:00:00 PDT;当天的信息源中没有“macOS 27.0 (26A428)”或“iOS 27.0 (24A437)”条目,其9月14日的条目是Xcode 27、tvOS 27.0、watchOS 27.0以及一条App Store Connect更新。Apple支持,“What’s new in the updates for macOS 27 Golden Gate”,2026年9月28日发布,原文已在正文中引用。其余内容见macOS 27发布说明那篇文章。 ↩↩
-
作者于2026年10月1日在撰写本文的那台Mac上的检查。
sw_vers:ProductVersion 27.0,BuildVersion 26A428。softwareupdate --history:“macOS 27”,09/23/2026,06:28:44;last reboot列出Wed Sep 23 06:37的一次重启,是其日志中最早的一条。用Python的plistlib读取/Library/Receipts/InstallHistory.plist:从2023年6月17日UTC(macOS 13.4)到2026年9月12日(macOS 26.6.2)共有43条macOS更新条目,每一条都与一条processName为bootinstalld的“RosettaUpdateAuto”条目相隔不到25秒;日期为2026-09-23 13:39:44(UTC)的“macOS 27.0”没有这样的条目;日期为2026-10-01 03:54:49(UTC)的“RosettaUpdateAuto”的processName是CoreServicesUIAgent,其后从03:56:16到03:59:53是某打印机厂商软件的17条安装条目;最早的“RosettaUpdateAuto”条目(2023-02-18)的processName同样是CoreServicesUIAgent。spctl不带参数的输出和man spctl,原文已在正文中引用。ls -la /Library/Apple/usr/libexec/oah:runtime、translate_tool和debugserver链接以及oah文件夹本身的日期为太平洋时间Sep 30 20:54,其上级目录/Library/Apple/usr/libexec为Sep 23 07:03。strings /usr/bin/tccutil显示tccutil list (-s SERVICE | -b BUNDLE_ID | -s SERVICE -b BUNDLE_ID)以及三行list用法说明;tccutil list、tccutil list -s Camera、tccutil list -b com.apple.Terminal和tccutil list -s Camera -b com.apple.Terminal都打印reset那行用法说明,并以状态码64退出;tccutil --info打印同一行;man tccutil中没有出现“list”;profiles status -type enrollment打印“Enrolled via DEP: No”和“MDM enrollment: No”。 ↩↩ -
作者于2026年10月2日在同一台Mac(macOS 27.0,26A428)上的检查,通过辅助功能API(System Events)读取Finder和系统设置的窗口。三个仅支持Intel的App(
lipo -archs对其中两个打印x86_64,对另一个打印x86_64 i386)的“显示简介”:种类的值为“Application (Intel)”,其后依次是一张描述为“warning”的图像、正文引用的两句话,以及标题为“Learn more…”的链接。两个Universal App(x86_64 arm64):“Application (Universal)”,一个标题为“Open using Rosetta”、值为0的复选框,无警告。一个Apple silicon App(arm64):“Application (Apple silicon)”,没有该复选框,无警告。系统设置 > 通用:十四个行按钮,其辅助功能标识符分别以about、softwareUpdate、storage、appleCareAndWarranty、airDropAndHandoff、passwords、dateAndTime、languageAndRegion、loginItems、sharing、startupDisk、timeMachine、deviceManagement和transferOrReset结尾。这些行背后的子面板一个都没有读取。10月1日对/Applications及其下一层文件夹中每个App的主可执行文件运行lipo -archs:可读取116个,其中21个没有arm64切片。 ↩↩↩↩