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.
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
| Wynik | Co to oznacza |
|---|---|
| Uniwersalna | Ma arm64 i x86_64. Działa natywnie na komputerach Mac z Apple silicon i z Intelem. |
| Tylko Apple silicon | Ma tylko arm64. Nie otworzy się na komputerze Mac z Intelem, więc napisz o tym na swojej stronie. |
| Tylko Intel | Ma 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.