SponsorZaloguj sięZgłoś

← Wszystkie narzędzia

Sprawdzanie binariów uniwersalnych

Wklej to, co lipo lub file wypisuje dla twojej aplikacji. Tekst jest czytany tutaj, na tej stronie, i nic nie jest nigdzie wysyłane.

Sprawdzanie binariów uniwersalnych

Wypróbuj przykład:

Co robi

Kod aplikacji na Mac może zawierać jedną lub więcej architektur: arm64 dla Apple silicon i x86_64 dla Intela. Plik z obiema to binarium uniwersalne. To narzędzie czyta tekst wypisywany przez lipo lub file, znajduje w nim nazwy architektur i mówi, na jakich komputerach Mac działa każda część. Jeśli wkleisz kilka części jednej aplikacji, powie też, czy cała aplikacja jest uniwersalna, bo wystarczy jeden pomocnik lub framework zbudowany na jedną architekturę, żeby to zepsuć.

Polecenia do uruchomienia

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

Aby sprawdzić od razu każdą wykonywalną część pakietu, w tym frameworki i pomocników:

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

Uruchamiaj to na dokładnie tej wersji, którą wydajesz, nie na wersji debug, która może zawierać tylko architekturę komputera Mac, na którym ją zbudowano.

Co oznacza każdy wynik

WynikCo to oznacza
UniwersalnaMa arm64 i x86_64. Działa natywnie na komputerach Mac z Apple silicon i z Intelem.
Tylko Apple siliconMa tylko arm64. Nie otworzy się na komputerze Mac z Intelem, więc napisz o tym na swojej stronie.
Tylko IntelMa tylko x86_64. Na Apple silicon potrzebuje Rosetta 2, a Apple powiedziało, że ogólna obsługa Rosetta 2 dla aplikacji kończy się po macOS 27.
Nie uruchomi sięTylko kod i386 lub PowerPC. macOS nie uruchamia aplikacji 32-bitowych od Catalina.

Źródła: Apple Developer, Building a universal macOS binary i MacRumors o końcu obsługi Rosetta 2, oba czytane 3 listopada 2026.

Jak to działa

To kilka prostych reguł tekstowych działających na tej stronie. Zna wyniki lipo -archs, lipo -info, lipo -detailed_info i file oraz nazwy arm64, arm64e, x86_64, x86_64h, i386 i PowerPC. Jeśli nie znajdzie żadnej z nich, mówi, że nie rozpoznaje tekstu, zamiast zgadywać. Czyta tylko tekst, więc nie może stwierdzić, czy kod w środku naprawdę działa.

Pytania

Skąd wiem, czy aplikacja na Mac jest uniwersalna?

Uruchom lipo -archs na pliku binarnym wewnątrz aplikacji, w Contents/MacOS. Jeśli wypisuje zarówno arm64, jak i x86_64, jest uniwersalna. Możesz też zaznaczyć aplikację w Finder, wybrać Get Info i przeczytać Kind.

Mój główny plik binarny jest uniwersalny. Czy moja aplikacja też?

Niekoniecznie. Każdy framework, pomocnik i wtyczka w pakiecie musi mieć te same architektury. Wklej wynik file dla wszystkich, aby sprawdzić.

Czy aplikacje tylko na Intela będą dalej działać na Apple silicon?

Na razie przez Rosetta 2. Apple powiedziało, że ogólna obsługa Rosetta 2 dla aplikacji kończy się po macOS 27, z wąskim wyjątkiem dla niektórych starszych gier.

Czy to, co wklejam, jest gdzieś wysyłane?

Nie. Tekst jest czytany na tej stronie i nic nie jest wysyłane.

Powiązane