次の方法で共有


32/64 ビット プラットフォームの考慮事項

iOS と macOS はこれまで 32 ビットアプリと 64 ビット アプリの両方をサポートしてきましたが、Apple は 32 ビットのサポートを徐々に非推奨にしています。

iOS 11 の時点で、32 ビット アプリはリリースされなくなり、App Store へのすべての申請で 64 ビットがサポートされている必要があります

2018 年 1 月以降、Mac App Store に送信される新しいアプリは 64 ビットをサポートする必要があり、既存のアプリは 2018 年 6 月までに更新する必要があります。

Xamarin の Classic API (XamMac.dll および monotouch.dll) では、32 ビット アプリケーションのみがサポートされていました。 ただし、新しい Xamarin.iOS および Xamarin.Mac アプリケーションでは、既定で Unified API (Xamarin.iOS および Xamarin.Mac) が使用されるため、必要に応じて 32 ビットと 64 ビットの両方をターゲットにすることができます。

iOS

Xamarin.iOS アプリの 64 ビット ビルドの有効化

警告

このセクションは、歴史的な理由から含まれており、古い Xamarin.iOS プロジェクトを Unified API に移行し、64 ビットをサポートするために役立ちます。 すべての新しい Xamarin.iOS プロジェクトでは、既定で Unified API が使用され、64 ビットがターゲットになります。

Unified API に変換された Xamarin.iOS モバイル アプリケーションの場合、開発者はビルド設定を 64 ビットをターゲットにするように手動で更新する必要があります。

  1. Solution Pad でアプリのプロジェクトをダブルクリックし、[プロジェクト オプション] ウィンドウを開きます。

  2. [iOS ビルド] を選択します。

  3. iPhone シミュレーターの場合、[サポートされているアーキテクチャ] ドロップダウンで、x86_64 または i386 + x86_64 を選択します。

    Setting Supported architectures to x86_64 or i386 + x86_64

  4. 物理デバイスの場合は、使用可能な ARM64 の組み合わせのいずれかを選択します。

    Setting Supported architectures to one of the ARM64 combinations

  5. OK をクリックします。

  6. クリーン ビルドを実行します。

ARMv7s は、iPhone 5 (またはそれ以上) に含まれる A6 プロセッサでのみサポートされます。 ARMv7 コードは ARMv6 よりも高速で小さく、iPhone 3GS 以降でのみ機能し、iPad または 5.0 の最小 iOS バージョンを対象とする場合に Apple によって要求されます。 ARMv6 はすべてのデバイスで動作しますが、Xcode 4.5 以降に付属するコンパイラではサポートされなくなりました。

ARM64 は、iPhone 6 または他の 64 ビット デバイスで iOS 8 をサポートするために必要であり、iTunes App Store で新規または更新する既存のアプリケーションを送信するときに Apple によって要求されます。

さまざまな iOS デバイスの機能を包括的に確認するには、Apple のデバイス互換性に関するドキュメントをチェックしてください。

64 ビットおよびバイナリ サイズの増加

Apple の 32 ビットから 64 ビットへの移行中、iOS アプリは 32 ビットと 64 ビットの両方のハードウェアで実行する必要があります。 このため、Xamarin の Unified API では、開発者は両方を対象にできます。

32 ビットの 64 ビットの両方のアーキテクチャをターゲットにすると、アプリケーションのサイズが大幅に増加します。 ただし、そうすることで、古いデバイスを引き続きサポートしながら、新しいデバイスで最適化されたコードを実行できるようになります。

重要

iOS アプリケーションを iTunes App Store に送信するときに次のメッセージが表示される場合、「WARNING ITMS-9000: Missing 64-bit support (警告 ITMS-9000: 64 ビット サポートがありません)。Starting February 1, 2015, new iOS apps uploaded to the App Store must include 64-bit support and be built with the iOS 8 SDK, included in Xcode 6 or later (2015 年 2 月 1 日以降、App Store にアップロードされる新しい iOS アプリには 64 ビットサポートが含まれており、Xcode 6 以降に含まれる iOS 8 SDK を使用してビルドされている必要があります)。To enable 64-bit in your project, we recommend using the default Xcode build setting of “Standard architectures” to build a single binary with both 32-bit and 64-bit code (プロジェクトで 64 ビットを有効にするには、「標準アーキテクチャ」の既定の Xcode ビルド設定を使用して、32 ビットコードと 64 ビット コードの両方を含む 1 つのバイナリをビルドすることをお勧めします」、サポートされるアーキテクチャを、使用可能な ARM64 の組み合わせの 1 つ (上記参照) に切り替え、再コンパイルして再送信する必要があります。

Mac

重要

2018 年 1 月以降、Mac App Store に提出されるすべての新しい Mac アプリは、64 ビットをサポートする必要があります。 既存の Mac App Store アプリとその更新プログラムは、2018 年 6 月から 64 ビットをサポートする必要があります。 Apple の発表と、Xamarin.Mac アプリを 64 ビットに更新する方法について説明したガイドを参照してください。

最新の Mac コンピューターのほとんどは、32 ビットと 64 ビット両方のアプリケーションをサポートしています。 MacOS 10.6 (Snow Leopard) が、32 ビット システムで稼働する最後のオペレーティング システムでした。 2010 年以降にリリースされたほとんどの Mac では、両方のシステムがサポートされています。

iOS とは異なり、最近のバージョンの macOS で導入された新しいフレームワークの多くは、64 ビット モードでのみサポートされています (CloudKit、EventKit、GameController、LocalAuthentication、MediaLibrary、MultipeerConnectivity、NotificationCenter、GLKit、SpriteKit、Social、MapKit など)。

Unified API を使用すると、開発者は、生成するアプリケーションの種類 (32 ビットまたは 64 ビット) を選択できます。

32 ビット アプリケーションは、32 ビットと 64 ビットの両方の Mac コンピューターで実行され、アドレス空間は 32 ビットに制限されており、すべてのライブラリが 32 ビットである必要があります。

通常、このモードは、64 ビット モードで実行されない 32 ビットの依存関係がある場合、ダウンロードを小さくしたい場合、または 64 ビットに移行してもパフォーマンス上の利点がない場合に使用します。

このモードは、macOS Mavericks と macOS Yosemite で使用できる多くのフレームワークを使用できないため、限定的です。

64 ビット アプリケーションは、64 ビット Mac デバイスでのみ実行されます。

Mac の場合、現在使用されているほとんどの Mac では 64 ビット モードがサポートされており、Apple によって提供されるフレームワークの完全なセットにアクセスできるので、これが推奨される動作モードです。

Xamarin.iOS アプリの 64 ビット ビルドの有効化

Xamarin.Mac を使用した 64 ビット アプリの構築については、Xamarin.Mac Unified アプリケーションの 64 ビットへの更新に関するガイドを参照してください。