利用しているアプリがApple Silicon搭載のMacでRosetta 2を利用しないUniversal 2対応アプリかを確認する方法です。詳細は以下から。
AppleはWWDC20で今後2年かけて、MacのアーキテクチャをIntelのx86_64からApple製のarm64(Apple Silicon)へ移行する計画を発表し、15年前にPowerPCからIntelへ移行したときと同様に、macOS 11 Big SurにはApple SiliconでIntelバイナリのアプリを変換/起動できるようにするトランスレーター「Rossetta 2」を用意し、
開発者に対しては、IntelとApple Siliconプロセッサでネイティブ動作するアプリケーションバイナリを開発できる「Universal 2」をXcode 12で提供し、今後Apple Silicon製Macに対応するように促しており、Hex FiendやSubEthaEditが早速Universal 2に対応していますが、
ユーザーは自身が利用しているアプリがIntelのx86_64とApple Siliconのarm64でネイティブ動作するバイナリを含んでいるUniversal 2(Universal Binary)対応アプリかを”lipo“コマンドで確認することができます。
lipo
Xcode 12でUniversal 2対応アプリとしてコンパイルしたアプリにはx86_64バイナリとarm64バイナリが含まれる、いわゆる太った(fat)なアプリで、”lipo”コマンドはギリシャ語の「太った (fat)」という意味から来ており、そのバイナリがどのアーキテクチャ・タイプに対応しているかを確認したり、特定のアーキテクチャタイプを削除することができます。
lipo one of -create, -thin <arch_type>, -extract <arch_type>, -remove <arch_type>, -replace <arch_type> <file_name>, -verify_arch <arch_type> ... , -archs, -info, or -detailed_info must be specified usage: lipo <input_file> <command> [<options> ...] command is one of: -archs -create -detailed_info -extract <arch_type> [-extract <arch_type> ...] -extract_family <arch_type> [-extract_family <arch_type> ...] -info -remove <arch_type> [-remove <arch_type> ...] -replace <arch_type> <file_name> [-replace <arch_type> <file_name> ...] -thin <arch_type> -verify_arch <arch_type> ... options are one or more of: -arch <arch_type> <input_file> -hideARM64 -output <output_file> -segalign <arch_type> <alignment>
今回はユーザーが利用しているアプリがx86_64とarm64に対応しているかを確認するのが目的なので、”-archs”や”-detailed_info”オプションを付けてバイナリを指定してやります。本日v5.1.5でx86_64とarm64に対応したSubEthaEditで確認してみると、
lipo -archs /path/to/app/MacOS/hogehoge
SubEthaEdit v5.1.4ではx86_64バイナリのみしか同梱されていないのに対し、SubEthaEdit v5.1.5ではx86_64とarm64バイナリを同梱しているのが確認できるので、今後、自身が利用しているアプリがアップデートされた際にUniversal Binaryとなったかを確認したい方は試してみて下さい。
コメント
lipoがギリシャ語由来とは知らなんだ・・・
Λίπος(Lipos)らしい
Apple Store からダウンロードするときに対象のバイナリが降ってくるのかと思ったら、なるほど両方のアーキテクチャ用のバイナリを含むんですね。
アプリサイズの肥大化がどの程度影響あるのか気になりました
Apple Store からダウンロード&インストールするアプリは、不要なアーキテクチャ用のバイナリは削られると思われます
fileコマンドでも分かりますよー
file /Applications/SubEthaEdit.app/Contents/MacOS/SubEthaEdit