以前のバージョンの Xcode または Xamarin.iOS を使用できますか?

Xamarin のドキュメントでは、最新の Xamarin.iOS と Xcode を使用することを前提とし、これは推奨されます。 ただし、一部のお客様は、以前の Xamarin.iOS や Xcode を使用することを選ぶ場合があり、その結果について詳細を求めています。

リリース ノートには、次の警告が含まれています。

警告

以前の Xcode バージョンの使用

以前の Xcode バージョン (上記の要件で説明したバージョンより以前のもの) を使用することは多くの場合可能ですが、一部の機能は使用できない場合があります。 また、次のような回避策が必要な制限もあります。

  • 静的 registrar は、アプリケーションをビルドするために Xcode ヘッダー ファイルが必要です。API がない場合は MT0091 エラーまたは MT4109 エラーが発生します。 ほとんどの場合、(API を削除して) マネージド リンカーを有効にすると役立ちます。
  • Xcode 9.0 以降のツールチェーンを使用しない限り、(tvOS および watchOS 用の) ビットコード ビルドは App Store への送信に失敗する可能性があります。

詳細情報

Microsoft では、アプリケーションの開発と送信時に、最新の Xcode および最新の Xamarin.iOS リリースを使用することを強くお勧めします。 Apple では、アプリケーションを送信するときに最新の Xcode を使用する必要があります。

最新の Xcode を使用しても、アプリケーションが古い iOS バージョンをターゲットにすることの妨げにはなりません。 サポートする iOS バージョンは、Info.plist エントリとアプリケーションで使用される API に基づきます。

Xcode101.appXcode102.app などの異なる名前を使用して、複数のバージョンの Xcode を side-by-side でインストールできます。 複数のバージョンを使用する場合は、Visual Studio for Mac 設定xcode-select コマンド ライン ツールでアクティブな Xcode を設定してください。

ただし、まれに古いコンポーネントを使用することが必要な場合があります。 このドキュメントでは、最新バージョンより古いバージョンを使用する場合に直面する可能性がある一般的な課題について説明します。

しかし、Apple からの各リリースはそれぞれ異なっているため、ここに記載されていない他の問題に遭遇する可能性があります。

これらの課題は解決が簡単でない場合があるため、可能な限り、最新の Xcode と最新の Xamarin.iOS のサポートされている構成に従ってください。

以前の Xcode での以前の Xamarin.iOS の使用

少なくともしばらくの間、Xamarin.iOS と Xcode を更新しないことは可能です。 限界は、ある時点で、Apple がアプリケーションを送信するために Xcode の最小バージョンを必要とすることです。 この時点で、すべてのコンポーネント (macOS、Xcode、Xamarin.iOS) を最新バージョン (または Apple で必要な最小バージョンの Xcode と、それに対応する Xamarin.iOS リリース) に更新する必要があります。

通常は、少しの変更に合わせて徐々に更新し、対応する方が簡単です。 更新に追いつくのが難しい大規模なプロジェクトの場合、既知のワーキング セットを維持することは適切な妥協策となる可能性があります。

以前の Xcode での新しい Xamarin.iOS の使用

Xamarin.iOS では、一般的に、可能な限り古い Xcode リリースがサポートされます。 次のような潜在的な課題があります。

  • 新しい Xamarin.iOS では、選択した Xcode に存在しない一部の機能と API をサポートしている場合があります。
  • 静的 registrar では、アプリケーションをビルドするために Xcode ヘッダー ファイルが必要です。API がない場合は MT0091 エラーまたは MT4109 エラーが発生します。
    • ほとんどの場合、マネージド リンカーを有効にすると、(新しい API のマネージド バインドを削除することによって) 未使用の場合に役立ちます。
  • Xcode 9.0 以降のツールチェーンを使用しない限り、(tvOS および watchOS 用の) ビットコード ビルドは App Store への送信に失敗する可能性があります。

古い Xamarin.iOS での新しい Xcode の使用

Xamarin.iOS では新しい Xcode の要件の変化を予測できないので、このユース ケースは非常に困難です。 macOS の更新でも問題が発生する可能性があり、互換性パッチがない場合は、Xamarin.iOS の多くの部分が影響を受ける可能性があります。

次のような問題が発生する可能性がある領域がいくつかあります。

  • mlaunch との非互換性
    • シミュレーターのサポートが正しく (またはまったく) 機能しない可能性があります
    • デバイスのサポートが正しく (またはまったく) 機能しない可能性があります
  • mtouch に対する不明なサポート
    • 新しいフレームワークのサポートなし
    • 新しいエンタイトルメントのサポートなし
    • 新しいツールまたは更新されたツールのサポートなし
      • これはコード署名にも影響する可能性があります

新しい AppStore 送信ルール

Apple は、AppStore 送信ルールをいつでも更新する権利を留保します。 これらのルールの変更が事前に発表される場合は限られます。 これらの変更の一部は、サポートするためにツールの変更が必要です。これには、更新された Xamarin.iOS コンポーネントが必要になります。

ルールの変更に加えて、Apple は送信されたアプリに追加の検証を追加したり、既存のアプリを強化したりすることがよくあります。 これらの一部では、ツール (新しいブロックリスト シンボルなど) を変更する必要があります。 これらの多くは、ルールのアナウンス (またはリスト) がないため、最初に送信された顧客によって検出されます。

まとめ

可能な限り、Apple のガイダンスに従い、App Store でリリースされた最新の Xcode を開発して提出することで、問題を避けるようにしてください。

同様に、リリースされた最新の Xamarin.iOS を使用してください。 これにより、送信されたアプリケーションに影響を与える可能性のある最新の修正プログラムを追跡して、最新の規則の変更に準拠します。

それが不可能な場合は、以前の対応する Xcode と Xamarin.iOS リリースの使用を検討してください。 これは、しばらくの間機能しますが、ある時点でAppleは新しいツールを主張するので、それに応じて計画してください。