赞助登录提交

← 全部工具

通用二进制检查器

粘贴 lipo 或 file 为你的应用打印的内容。它就在本页面读取,不会发送到任何地方。

通用二进制检查器

试试示例:

功能

Mac 应用的代码可以包含一种或多种架构:arm64 对应 Apple silicon,x86_64 对应 Intel。同时包含两者的文件就是通用二进制。这个工具会读取 lipo 或 file 打印的文本,找出其中的架构名称,并告诉你每个部分能在哪些 Mac 上运行。如果你粘贴了同一个应用的多个部分,它还会告诉你整个应用是否通用,因为只要有一个辅助程序或框架只为单一架构构建,就足以破坏通用性。

要运行的命令

lipo -archs YourApp.app/Contents/MacOS/YourApp
file YourApp.app/Contents/MacOS/YourApp

要一次检查包内所有可执行部分,包括框架和辅助程序:

find YourApp.app/Contents -type f -perm +111 -exec file {} +

请对你实际发布的那个构建运行这些命令,而不是调试构建,因为调试构建可能只包含你构建它的那台 Mac 的架构。

每种结果的含义

结果含义
通用同时包含 arm64 和 x86_64。在 Apple silicon 和 Intel Mac 上原生运行。
仅限 Apple silicon只有 arm64。它无法在 Intel Mac 上打开,所以请在你的网站上写明。
仅限 Intel只有 x86_64。在 Apple silicon 上需要 Rosetta 2,而 Apple 表示 macOS 27 之后将结束对应用的通用 Rosetta 2 支持。
无法运行只有 i386 或 PowerPC 代码。自 Catalina 起,macOS 就不再运行 32 位应用。

来源:Apple Developer, Building a universal macOS binary 和 MacRumors 关于 Rosetta 2 支持结束的报道,均于 2026年11月3日 阅读。

运作方式

这是在本页面上运行的几条简单文本规则。它认识 lipo -archs、lipo -info、lipo -detailed_info 和 file 的输出,也认识 arm64、arm64e、x86_64、x86_64h、i386 和 PowerPC 这些名称。如果一个都找不到,它会说无法识别这段文本,而不是瞎猜。它只读取文本,所以无法判断里面的代码是否真的能用。

问题

怎么知道一个 Mac 应用是不是通用的?

对应用内 Contents/MacOS 中的二进制运行 lipo -archs。如果同时列出 arm64 和 x86_64,它就是通用的。你也可以在 Finder 中选中应用,选择 Get Info,然后看“种类”。

我的主二进制是通用的。我的应用也是吗?

不一定。包内的每个框架、辅助程序和插件都需要具备相同的架构。请粘贴它们全部的 file 输出来检查。

仅支持 Intel 的应用在 Apple silicon 上还能继续用吗?

目前通过 Rosetta 2 运行。Apple 表示 macOS 27 之后将结束对应用的通用 Rosetta 2 支持,只对一些较老的游戏保留一个很窄的例外。

我粘贴的内容会被发送到别处吗?

不是。文本只在本页面读取,不会发送任何内容。

相关内容