ホット再起動を使用して iOS アプリをデプロイする

通常、アプリをビルドするときに、コードがコンパイルされ、他のプロジェクト リソースと組み合わされて、シミュレーターまたはデバイスにデプロイされるアプリ バンドルがビルドされます。 このモデルでは、アプリを変更するときに、新しいアプリ バンドルをビルドしてデプロイする必要があります。 インクリメンタル ビルドはコンパイル時間を短縮するのに役立ちますが、通常、デプロイには変更のサイズに関係なく同じ時間がかかります。

.NET マルチプラットフォーム アプリ UI (.NET MAUI) のホット再起動を使用すると、Mac ビルド ホストを必要とせずに、Visual Studio 2022 から 64 ビットローカル iOS デバイスに .NET MAUI アプリをすばやくデプロイできます。 これにより、ローカルに接続された iOS デバイスに既に存在する既存のアプリ バンドルに変更をプッシュすることで、完全なアプリ バンドルの再構築が不要になります。 コード ファイル、リソース、プロジェクトの参照の変更をサポートしているため、開発中にアプリの変更をすばやくテストできます。

重要

ホット 再起動は、Mac ビルド ホストによって提供される完全なビルド環境の代わりではありません。 たとえば、デプロイできるのはデバッグ ビルド構成を使用するアプリのみであり、静的ライブラリとフレームワーク、XCFrameworks、またはバインド リソース パッケージはサポートされません。 詳細については、制限に関するページを参照してください。

ローカルに接続された iOS デバイスに .NET MAUI アプリをデプロイするには、ホット再起動を使用するために満たす必要がある要件がいくつかあります。

  • Visual Studio 2022 のバージョxン は 17.3 以上である必要があります。
  • 開発用コンピューターに iTunes (Microsoft Store または 64 ビット バージョン) がインストールされている必要があります。
  • Apple Developer Account と有料の Apple Developer Program に登録する必要があります。

セットアップ

ホット再起動を設定するには、次の手順を実行します。

  1. Visual Studio のツール バーで、[デバッグ ターゲット] ドロップダウンを使用して [iOS ローカル デバイス][ローカル デバイス] エントリの順に選択します。

    Screenshot of choosing the initial debug target for hot restart.

  2. Visual Studio のツール バーで、[ローカル デバイス] を選択します。

    Screenshot of the initial debug target chosen for hot restart.

    [ホット再起動のセットアップ] セットアップ ウィザードが表示されます。これにより、ホット再起動の展開用にローカル iOS デバイスを設定する手順が示されます。

  3. [ホット 再起動のセットアップ] セットアップ ウィザードで、[次へ] を選択します。

    Screenshot of the first step in the setup hot restart wizard.

  4. iTunes がインストールされていない場合は、セットアップ ウィザードでインストールするように求められます。 [ホット再起動のセットアップ] セットアップウィザードで、iTunesのダウンロード を選択します。

    Screenshot of the second step in the setup hot restart wizard.

    Note

    iTunes は、Microsoft Store からインストールすることも、Apple からダウンロードすることもできます。

    iTunes がダウンロードされ、インストールされるのを待ちます。 Microsoft Store からインストールする場合は、インストールが完了したら開いてください。次に、追加のプロンプトに従って、ローカルに接続されているデバイスを検出できるようにします。

  5. [ホット再起動のセットアップ] セットアップ ウィザードで、[次へ] を選択して、ローカル iOS デバイスの接続を求めるメッセージが表示されるウィザードの次の手順に進みます。

    Screenshot of the initial third step in the setup hot restart wizard.

  6. USB ケーブルを使用して、デバイスを iOS 開発用コンピューターに接続します。 開発用コンピューターを信頼するように求めるプロンプトがデバイスに表示されることがあります。 デバイスで、[信頼] をクリックし、追加のデバイス プロンプトに従います。

  7. [ホット再起動のセットアップ] セットアップ ウィザードで、ローカル iOS デバイスが検出されたら、[次へ] を選択します。

    Screenshot of the completed third step in the setup hot restart wizard.

    Note

    セットアップ ウィザードでローカルの iOS デバイスが検出されない場合は、ローカル iOS デバイスを開発用コンピューターから再接続します。 さらに、iTunes がローカルの iOS デバイスを認識していることを確認します。

  8. [ホット再起動のセットアップ] セットアップ ウィザードで、[個人アカウントでサインイン] ハイパーリンクをクリックして、個々の Apple 開発者 Program アカウントを使用するようにホット再起動を構成します。

    Screenshot of the initial fourth step in the setup hot restart wizard.

    [個別アカウント] ダイアログが表示されます。

    Note

    または、エンタープライズの Apple 開発者アカウントを使用するようにホット再起動を構成するには、[エンタープライズ アカウントでサインイン] をクリックし、表示されるダイアログに資格情報を入力します。 その後、ステップ 12 に進みます。

  9. App Store Connect API キーを作成する。 これには、Apple 開発者アカウント と有料の Apple Developer Program 登録が必要になります。 App Store Connect API キーの作成の詳細については、developer.apple.com の「App Store Connect API の API キーの作成」をご覧ください。

  10. [個人アカウント] ダイアログで、App Store Connect API のキー データを入力します。

    Screenshot of the completed dialog for adding an Apple Individual account.

    名前発行者 IDキー ID などのデータは、App Store Connect[ユーザーとアクセス] を選択し、[キー] タブを選択することで確認できます。秘密キー は、次の場所からダウンロードすることもできます。

    Screenshot of Apple App Store Connect API details.

  11. [個人アカウント] ダイアログで、[追加] ボタンをクリックします。 [個別アカウント] ダイアログボックスが閉じます。

  12. [ホット再起動のセットアップ] のセットアップ ウィザードで、[完了] ボタンをクリックします。

    Screenshot of the completed fourth step in the setup hot restart wizard.

    Apple Developer Program アカウントが Visual Studio に追加され、ホット再起動のセットアップ のセットアップ ウィザードが閉じます。

  13. ソリューション エクスプローラーで、プロジェクトを右クリックして [プロパティ] を選択します。

  14. プロジェクトのプロパティで、[iOS] を展開し、[バンドル署名] を選択します。 [スキーム] ドロップダウンを使用して [自動プロビジョニング] を選択し、[自動プロビジョニングの構成] ハイパーリンクをクリックします。

    Screenshot of automatic provisioning enabled within the iOS property page in Visual Studio.

    [自動プロビジョニングの構成] ダイアログが表示されます。

  15. [自動プロビジョニングの構成] ダイアログで、Connect API キーのチームを選択します。

    Screenshot of the automatic provisioning dialog when it's correctly configured.

    Visual Studio は、自動プロビジョニング プロセスを完了します。 次に、[OK] ボタンをクリックして、[自動プロビジョニングの構成] ダイアログを閉じます。

    Note

    自動プロビジョニングを使用することをお勧めします。これにより、追加の iOS デバイスを簡単に配置用に構成できるようになります。 ただし、適切なプロビジョニング プロファイルが存在する場合は、これを無効にして、手動プロビジョニングの使用を続行することができます。

ホット再起動を使用したデプロイとデバッグ

初期セットアップを実行後、接続されている iOS デバイスが [デバッグ ターゲット] ドロップダウン メニューに表示されます。 アプリケーションをデプロイしてデバッグするには:

  1. ローカルに接続されている iOS デバイスのロックが解除されていることを確認します。

  2. Visual Studio のツール バーで、デバッグ ターゲット ドロップダウンでローカルに接続されている iOS デバイスを選択し、[実行] ボタンをクリックしてアプリをビルドし、ローカルの iOS デバイスにデプロイします。

    Screenshot of the chosen debug target for hot restart.

  3. アプリをデプロイすると、Visual Studio に [デバッガーの接続] ダイアログが表示されます。

    Screenshot of the dialog asking you to launch the app on your device.

    デバイスでアプリを起動すると、Visual Studio によって実行中のアプリにデバッガーが接続され、[デバッガーの接続] ダイアログが閉じます。

アプリのデバッグ中に、C# コードを編集して Visual Studio ツール バーの再起動ボタンを押すと、新しい変更が適用されたデバッグ セッションを再起動できます。

Screenshot of the restart button on the Visual Studio toolbar.

コードが実行されるのを防ぐ

HOTRESTART プリプロセッサ シンボルを使用して、ホット再起動でデバッグするときに特定のコードが実行されないようにすることができます。

#if !HOTRESTART
  // Code here won't be executed when debugging with hot restart
#endif

ホット再起動を有効にする

Visual Studio 2022 では、ホット再起動が既定で有効になっています。 以前に無効にされている場合は、Visual Studio のメニュー バーから [ツール > オプション] を選択して有効にすることができます。 次に、[オプション] ダイアログ ボックスで Xamarin を展開し、[iOS 設定] を選択します。 次に、[ホット再起動を有効にする] がオンになっていることを確認します。

Screenshot of how to enable hot restart within Visual Studio.

制限事項

ホット再起動を使用する場合は、次の制限があります。

  • デバッグ ビルド構成を使用するアプリのデプロイにのみ使用できます。 運用目的でアプリをビルド、署名、デプロイするには、引き続き Mac ビルド ホストが必要です。
  • ストーリーボードと XIB のファイルはサポートされていません。これらを実行時に読み込もうとすると、アプリがクラッシュする可能性があります。
  • 静的な iOS ライブラリとフレームワークはサポートされていません。アプリがこれらを読み込もうとすると、ランタイム エラーまたはクラッシュが発生する可能性があります。
  • XCFrameworks とバインド リソース パッケージはサポートされていません。
  • アセット カタログはサポートされていません。 ホット再起動を使用すると、アプリには .NET アイコンと起動画面が表示されます。

トラブルシューティング

iOS は、アプリの起動時間と応答性を監視し、応答しないアプリを終了するウォッチドッグを使用します。 たとえば、ウォッチドッグは、メイン スレッドを長時間ブロックするアプリを終了します。 古い iOS デバイスでは、デバッガーが接続する前に、ホット再起動を使用して展開されたアプリがウォッチドッグによって終了される場合があります。 回避策として、アプリのスタートアップ パスで実行される処理の量を減らし、より新しい iOS デバイスを使用します。

その他の問題を報告するには、[ヘルプ]> [フィードバックの送信]> [問題の報告] からフィードバック ツールを使用してください。