利用しているアプリがApple Silicon搭載のMacでネイティブ動作するUniversal 2対応アプリかを確認する方法。

スポンサーリンク

 利用しているアプリがApple Silicon搭載のMacでRosetta 2を利用しないUniversal 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」を用意し、

AppleのDeveloper Transition Kit

開発者に対しては、IntelとApple Siliconプロセッサでネイティブ動作するアプリケーションバイナリを開発できる「Universal 2」をXcode 12で提供し、今後Apple Silicon製Macに対応するように促しており、Hex FiendSubEthaEditが早速Universal 2に対応していますが、

macOS 11 Big Sur Universal Binary

ユーザーは自身が利用しているアプリが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コマンドでUniversal Binaryかを確認する

lipo -archs /path/to/app/MacOS/hogehoge

SubEthaEdit v5.1.4ではx86_64バイナリのみしか同梱されていないのに対し、SubEthaEdit v5.1.5ではx86_64とarm64バイナリを同梱しているのが確認できるので、今後、自身が利用しているアプリがアップデートされた際にUniversal Binaryとなったかを確認したい方は試してみて下さい。

コメント

  1. 匿名 より:

    lipoがギリシャ語由来とは知らなんだ・・・
    Λίπος(Lipos)らしい

  2. 通行人 より:

    Apple Store からダウンロードするときに対象のバイナリが降ってくるのかと思ったら、なるほど両方のアーキテクチャ用のバイナリを含むんですね。
    アプリサイズの肥大化がどの程度影響あるのか気になりました

    • 匿名 より:

      Apple Store からダウンロード&インストールするアプリは、不要なアーキテクチャ用のバイナリは削られると思われます

  3. 匿名 より:

    fileコマンドでも分かりますよー
    file /Applications/SubEthaEdit.app/Contents/MacOS/SubEthaEdit