СпонсорствоВойтиОтправить

← Все инструменты

Проверка универсального бинарного файла

Вставьте то, что 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. Работает нативно на Mac с Apple silicon и Intel.
Только Apple siliconТолько arm64. Не откроется на Mac с Intel, поэтому укажите это на своём сайте.
Только IntelТолько x86_64. На Apple silicon нужен Rosetta 2, а Apple сообщила, что общая поддержка Rosetta 2 для приложений закончится после macOS 27.
Не запуститсяТолько код i386 или PowerPC. macOS не запускает 32-битные приложения с версии Catalina.

Источники: Apple Developer, Building a universal macOS binary и MacRumors о конце поддержки Rosetta 2, оба прочитаны 3 ноября 2026 г..

Как это работает

Это несколько простых текстовых правил, работающих на этой странице. Он знает вывод lipo -archs, lipo -info, lipo -detailed_info и file, а также названия arm64, arm64e, x86_64, x86_64h, i386 и PowerPC. Если он не находит ничего из этого, он говорит, что не распознаёт текст, а не гадает. Он читает только текст, поэтому не может знать, действительно ли код внутри работает.

Вопросы

Как узнать, универсальное ли приложение для Mac?

Запустите lipo -archs для бинарного файла внутри приложения, в Contents/MacOS. Если в списке есть и arm64, и x86_64, приложение универсальное. Также можно выбрать приложение в Finder, нажать Get Info и посмотреть строку «Вид».

Мой основной бинарный файл универсальный. А приложение?

Не всегда. Каждому фреймворку, вспомогательному модулю и плагину внутри пакета нужны те же архитектуры. Вставьте вывод file для всех них, чтобы проверить.

Будут ли приложения только для Intel работать на Apple silicon?

Пока что через Rosetta 2. Apple сообщила, что общая поддержка Rosetta 2 для приложений закончится после macOS 27, с узким исключением для некоторых старых игр.

Отправляется ли то, что я вставляю, куда-нибудь?

Нет. Текст читается на этой странице, и ничего не отправляется.

Похожее