iOS を使用してビルドするためのツールのインストールおよび構成

Visual Studio でクロスプラットフォームの C++ によるモバイル開発ツールを使用して、iOS Simulator または iOS デバイス用の iOS コードを編集、デバッグ、配置することができます。 ただし、ライセンスの制限により、コードのビルドと実行はリモート環境の Mac で行う必要があります。 Visual Studio を使用して iOS アプリをビルドおよび実行するには、Mac 上にリモート エージェント vcremoteをセットアップして構成する必要があります。 vcremote リモート エージェントは、Visual Studio からのビルド要求を処理し、Mac に接続されている iOS デバイスまたは Mac の iOS シミュレーターでアプリを実行します。

Note

Mac ではなくクラウド ホスト型 Mac サービスを使用する場合の詳細については、「Visual Studio をクラウドでホストされた Mac に接続するよう構成する」をご覧ください。 ここでは、Visual Studio Tools for Apache Cordova を使用してビルドする場合の手順を説明します。 C++ を使用してビルドする場合は、remotebuildvcremote に置き換えます。

iOS を使用してビルドするためのツールをインストールしたら、この記事をもう一度参照してください。 Visual Studio と Mac で iOS 開発用に vcremote をすばやく構成して更新する方法について説明します。

前提条件

vcremote リモート エージェントをインストールして使用して iOS 用のコードを開発するには、まず次の前提条件が必要です。

  • macOS Mojave バージョン 10.14 以降を実行する Mac コンピューター

  • Apple ID

  • アクティブな Apple Developer Program アカウント

    配布ではなくテスト目的でのみ iOS デバイスにアプリをサイドロードすることを可能にする無料アカウントを取得できます。

  • Xcode バージョン 10.2.1 以降

    Xcode は、App Store からダウンロードできます。

  • Xcode コマンドライン ツール

    Xcode コマンドライン ツールをインストールするには、Mac 上でターミナル アプリを開き、次のコマンドを入力します。

    xcode-select --install

  • アプリに署名する他の署名 ID として Xcode で構成された Apple ID アカウント

    Xcode で署名 ID を表示または設定するには、 [Xcode] メニューを開き、 [環境設定]を選択します。 [アカウント] を選択し、自分の Apple ID を選択してから、 [詳細の表示] ボタンを選択します。 詳しい手順については、「Add your Apple ID account」 (Apple ID アカウントを追加する) を参照してください。

    署名要件の詳細については、「What is app signing」 (アプリの署名とは何か) を参照してください。

  • 開発に iOS デバイスを使用している場合は、デバイスの Xcode で構成されたプロビジョニング プロファイル

    Xcode は自動署名を提供し、必要に応じて署名証明書を作成します。 Xcode の自動署名の詳細については、「自動署名」を参照してください

    手動で署名する場合、アプリのプロビジョニング プロファイルを作成する必要があります。 プロビジョニング プロファイルを作成する方法の詳細については、「Create a development provisioning profile」 (プロビジョニング プロファイルの作成) を参照してください。

  • Node.js バージョン 18.12.1 と npm バージョン 8.19.2

    Mac にバージョン 18.12.1 のNode.jsをインストールします。 Node.js パッケージをインストールする場合は、npm バージョン 8.19.2 が付属している必要があります。 Node.jsと npm の他のバージョンでは、vcremote で使用される一部のモジュールがサポートされていない可能性があります。これにより、vcremote のインストールが失敗する可能性があります。 Node.js は、Node Version Manager などのパッケージ マネージャーを使用してインストールすることをお勧めします。 sudo を使用すると一部のモジュールがインストールに失敗する可能性があるので、コマンド sudo を使用してNode.jsをインストールしないでください。

iOS 用 vcremote をインストールする

C++ ワークロードを使用してモバイル開発をインストールすると、Visual Studio は Mac で実行されている vcremote リモート エージェントと通信して、ファイルの転送、iOS アプリのビルドと実行、デバッグ コマンドの送信を行うことができます。

vcremote をインストールする前に、前提条件を満たしており、「C++ を使用したクロスプラットフォーム モバイル開発のインストール」のインストール手順を完了していることを確認してください

vcremote をダウンロードしてインストールするには

  • Mac のターミナル アプリから、現在使用中のNode.jsバージョンが必要なバージョン 18.12.1 であることを確認します。 バージョンを確認するには、次のコマンドを実行します。

    node -v

    適切なバージョンでない場合は、「必須コンポーネント」の Node.js のインストール手順に従う必要があります。 次に Node.js を再起動します。

  • 必須の Node.js が使用されていることを確認した後、次のコマンドを実行して、その Node.js バージョンで vcremote をインストールします。

    npm install -g --unsafe-perm vcremote

    グローバル インストール (-g) スイッチが推奨されますが、必須ではありません。 グローバル インストール スイッチを使用しない場合、vcremote は、ターミナル アプリの現在のアクティブなパスの下にインストールされます。

    インストールの間に、Mac に vcremote がインストールされて、開発者モードがアクティブ化されます。 Homebrew および 2 つの npm パッケージ vcremote-libvcremote-utils もインストールされます。 インストールが完了したら、スキップしたオプションの依存関係に関する警告は無視しても安全です。

    Note

    Homebrew をインストールするには、sudo (管理者) のアクセス許可が必要です。 sudo を使用せずに vcremote をインストールする必要がある場合は、場所に Homebrew を手動で usr/local インストールし、その bin フォルダーをパスに追加できます。 詳細については、 Homebrew のドキュメントを参照してください。 開発者モードを手動で有効にするには、ターミナル アプリでコマンド DevToolsSecurity -enableを入力します。

新しいバージョンの Visual Studio に更新する場合は、vcremote の現在のバージョンにも更新する必要があります。 vcremote を更新するには、リモート エージェントをダウンロードしてインストールする手順を繰り返します。

vcremote を開始する

iOS コードをビルドして実行するには、Visual Studio で vcremote リモート エージェントが実行されている必要があります。 Visual Studio は、通信する前に vcremote とペアにする必要があります。 既定では、vcremote はセキュリティで保護された接続モード実行されます。これには、Visual Studio と Mac マシン間でクライアント証明書とサーバー証明書を転送する必要があります。

Note

vcremote のバージョン 1.0.19 以降には、Visual Studio 2022 バージョン 17.5.0 Preview 1 以降が必要です。 Visual Studio 2022 バージョン 17.4 以前のバージョンを使用している場合は、vcremote バージョン 1.0.17 をインストールします。

vcremote を開始するには

  • Mac 上のターミナル アプリから、次のように入力します。

    vcremote

    このコマンドにより、既定のビルド ディレクトリ ~/vcremote でエージェントが起動されます。 その他の構成オプションについては、「Mac で vcremote を構成する」を参照してください

vcremote を初めて起動するときに、新しいサーバー証明書を作成するたびに、Visual Studio で接続を構成するために必要な情報が提供されます。 情報には、ホスト名とポートが含まれます。 ホスト名を使用して Visual Studio でリモート エージェントを構成する場合は、ホスト名を使用して Windows から Mac に ping を実行し、到達可能であることを確認します。 そうでない場合は、代わりに IP アドレスを使用する必要があります。

リモート エージェントは、セキュリティで保護されていないモードでも使用できます。 セキュリティで保護されていないモードでは、データを暗号化しない単純な HTTP 接続を使用して、リモート エージェントを Visual Studio とペアリングできます。 セキュリティで保護されていないモードは、ご自身の責任で使用してください。 接続には、セキュリティで保護されたモードを使用することをお勧めします。

vcremote 1.0.19 以降の Visual Studio 2022 バージョン 17.5 以降:

vcremote 1.0.19 以降では、vcremote は証明書ファイルへのパスを server-cert.pem 報告します。このパスは Visual Studio にアップロードする必要があります。

vcremote 1.0.17 以前の Visual Studio 2022 バージョン 17.4 以前のバージョン:

バージョン 1.0.17 以前のバージョンの vcremote では、Visual Studio 2022 バージョン 17.4 を介して Visual Studio のバージョンと安全に通信するための PIN が生成されます。

Screenshot of the Mac Terminal window that shows the host name, port, and PIN reported when VC remote is started.

生成される PIN は 1 回限りの使い捨て PIN であり、有効期間は限られています。 時間が経過する前に Visual Studio とリモート エージェントをペアリングしない場合は、新しい PIN を生成する必要があります。 詳細については、「 Generate a new security PIN」を参照してください。

セキュリティで保護された接続モードを無効にするには

  • vcremote のセキュリティで保護された接続モードを無効にするには、Mac 上のターミナル アプリで次のコマンドを入力します。

    vcremote --secure false

セキュリティで保護された接続モードを有効にするには

  • セキュリティで保護された接続モードを有効にするには、次のコマンドを入力します。

    vcremote --secure true

リモート エージェントを開始したら、停止するまで Visual Studio から使用できます。

リモート エージェントを停止するには

  • vcremote が実行されているターミナル ウィンドウで、Control+C キーを押します。

Visual Studio で vcremote を構成する

Visual Studio から vcremote リモート エージェントに接続するには、Visual Studio オプションでリモート構成を指定する必要があります。 リモート エージェントを使用するたびに、Visual Studio は、この同じ情報を使用して Mac 上のリモート エージェントに接続します。 Mac で新しいセキュリティ証明書を生成したり、ホスト名または IP アドレスを変更したりしない限り、Visual Studio とリモート エージェントを再度ペアリングする必要はありません。

Visual Studio 2022 バージョン 17.5 以降から vcremote を構成するには

  1. エージェントが Mac でまだ実行されていない場合は、「リモート エージェントを起動する」の手順に従います。 プロジェクトを正常にペアリング、接続、ビルドするには、Visual Studio の vcremote が Mac で実行されている必要があります。

  2. Mac 上で、Mac のホスト名または IP アドレスを取得します。

    IP アドレスを取得するには、ターミナル ウィンドウで ifconfig コマンドを使用します。 アクティブなネットワーク インターフェイスの inet 下に一覧表示されているアドレスを使用します。

  3. Visual Studio のメニュー バーで、[ツール>オプション] を選択します。

  4. [オプション] ダイアログ ボックスで、[クロス プラットフォーム>C++>iOS] を展開します。

  5. [ホスト名] フィールドと [ポート] フィールドに、リモート エージェントの起動時に示された値を入力します。 ホスト名には、Mac の DNS 名または IP アドレスを使用できます。 既定のポートは 3030 です。

    Note

    ホスト名を使用して Mac に ping を実行できない場合は、IP アドレスの使用が必要な場合があります。

  6. 既定のセキュリティで保護された接続モードでリモート エージェントを使用する場合は、[セキュリティで保護されたチェック] ボックスをチェックし、アップロードのために Mac から Visual Studio にファイルを転送server-cert.pemします。 次に、[生成] ボタンを選択して新しいclient-cert.pemファイルを生成します。これはデスクトップに表示されます。 次に、クライアント証明書を Mac の下に転送します /vcremote/certs/Authorized-Clients。 (複数のクライアント証明書ファイルをこのディレクトリに転送して、複数の承認された Visual Studio マシンがこの Mac に要求を送信できるようにすることができます)。

    Note

    USB ドライブを使用して証明書を転送する場合は、転送の完了後に USB ドライブから証明書を削除します。

  7. [ペアリングする] を選択してペアリングを有効にします。

    Screenshot of the Tools Options dialog for iOS pairing. The host name, the port, the Secure checkbox, and the Remote Root values are set.

    ペアリングは、ホスト名、ポートを変更するか、新しいサーバーまたはクライアント証明書を生成するまで保持されます。 [オプション] ダイアログ ボックスでホスト名またはポートを変更する場合は、[元に戻す] ボタンを選択して変更を元に戻し、前のペアリングに戻すことができます。

    ペアリングが成功しない場合は、「リモート エージェントの開始」の手順 に従って、リモート エージェントが実行されていることを確認します。 手順に 従って、新しいサーバー証明書 を生成し、 新しいクライアント証明書を生成します。 Mac のホスト名を使用している場合は、代わりに [ホスト名] フィールドで IP アドレスを使用してみてください。

  8. [リモート ルート] フィールドのフォルダー名を更新して、Mac のホーム (~) ディレクトリ内のリモート エージェントで使用されるフォルダーを指定します。 既定の場合、リモート エージェントではリモート ルートとして /Users/<username>/vcremote が使用されます。

  9. [OK] を選択して、リモート ペアリング接続設定を保存します。

Visual Studio 2022 バージョン 17.5 より前のバージョンから vcremote を構成するには

  1. エージェントが Mac でまだ実行されていない場合は、「リモート エージェントを起動する」の手順に従います。 プロジェクトを正常にペアリング、接続、ビルドするには、Visual Studio の vcremote が Mac で実行されている必要があります。

  2. Mac 上で、Mac のホスト名または IP アドレスを取得します。

    IP アドレスを取得するには、ターミナル ウィンドウで ifconfig コマンドを使用します。 アクティブなネットワーク インターフェイスの inet 下に一覧表示されているアドレスを使用します。

  3. Visual Studio のメニュー バーで、[ツール>オプション] を選択します。

  4. [オプション] ダイアログ ボックスで、[クロス プラットフォーム>C++>iOS] を展開します。

  5. [ホスト名] フィールドと [ポート] フィールドに、リモート エージェントの起動時に示された値を入力します。 ホスト名には、Mac の DNS 名または IP アドレスを使用できます。 既定のポートは 3030 です。

    Note

    ホスト名で Mac を ping できない場合は、IP アドレスを使用する必要があります。

  6. 既定のセキュリティで保護された接続モードでリモート エージェントを使用する場合は、 [セキュア] チェック ボックスをオンにしてから、リモート エージェントから示された PIN の値を [PIN] フィールドに入力します。 セキュリティで保護されていない接続モードでリモート エージェントを使用する場合は、 [セキュア] チェック ボックスをオフにして、 [PIN] フィールドを空白のままにします。

  7. [ペアリングする] を選択してペアリングを有効にします。

    Screenshot of the Tools Options dialog for iOS pairing. The host name, the port, the Secure checkbox, the pin, and the Remote Root values are set.

    ペアリングは、ホスト名またはポートを変更するまで維持されます。 [オプション] ダイアログ ボックスでホスト名またはポートを変更した場合にその変更を元に戻すには、 [元に戻す] ボタンを選択して前のペアリングに戻します。

    ペアリングが成功しない場合は、「リモート エージェントの開始」の手順 に従って、リモート エージェントが実行されていることを確認します。 リモート エージェントの PIN が生成されてから時間が長すぎる場合は、「新しいセキュリティ PIN を生成する」の手順に従います。 その後、やり直してください。 Mac のホスト名を使用している場合は、代わりに [ホスト名] フィールドで IP アドレスを使用してみてください。

  8. [リモート ルート] フィールドのフォルダー名を更新して、Mac のホーム (~) ディレクトリ内のリモート エージェントで使用されるフォルダーを指定します。 既定の場合、リモート エージェントではリモート ルートとして /Users/<username>/vcremote が使用されます。

  9. [OK] を選択して、リモート ペアリング接続設定を保存します。

Generate a new security PIN

適用対象: vcremote バージョン 1.0.17 以前を使用する Visual Studio 2022 バージョン 17.4 以前のバージョン。

初めてリモート エージェントを起動すると、生成された PIN が期間限定で有効になります (既定では 10 分)。 時間が経過する前に Visual Studio をリモート エージェントとペアリングしない場合は、新しい PIN を生成する必要があります。

新しい PIN を生成するには

  1. エージェントを停止するか、Mac 上で 2 つ目のターミナル アプリ ウィンドウを開き、それを使用してコマンドを入力します。

  2. ターミナル アプリで、次のコマンドを入力します。

    vcremote generateClientCert

    リモート エージェントが新しい一時 PIN を生成します。 新しい PIN を使用して Visual Studio をペアリングするには、「 Visual Studio でリモート エージェントを構成する」の手順を繰り返します。

新しいクライアント証明書を生成する

適用対象: vcremote バージョン 1.0.19 以降を使用する Visual Studio 2022 バージョン 17.5 以降のバージョン。

Visual Studio でペアリングすると、新しい client-cert.pem ファイルが生成されます。 下の Mac ビルド マシンに証明書ファイルを転送します /vcremote/certs/Authorized-Clients。 この証明書を使用すると、Mac は Visual Studio マシンからの要求を承認できます。

新しいサーバー証明書を生成する

適用対象: vcremote バージョン 1.0.19 以降を使用する Visual Studio 2022 バージョン 17.5 以降のバージョン。

セキュリティ上の目的で、Visual Studio とリモート エージェントをペアリングするサーバー証明書は、Mac の IP アドレスまたはホスト名と関連付けられています。 これらの値が変更された場合、新しいサーバー証明書を生成し、新しい値で Visual Studio を再構成する必要があります。

新しいサーバー証明書を生成するには

  1. vcremote エージェントを停止します。

  2. ターミナル アプリで、次のコマンドを入力します。

    vcremote resetServerCert

  3. 確認を求めるプロンプトが表示されたら、「 Y」と入力します。

  4. Visual Studio と Mac をペアリングするには、新しく生成されたserver-cert.pemファイルを Mac から転送し、Visual Studio にアップロードします。この手順は、「Visual Studioリモート エージェントを構成する」の手順を繰り返します。

Mac で vcremote を構成する

さまざまなコマンドライン オプションを使用して、リモート エージェントを構成することができます。 たとえば、ビルド要求をリッスンするポートを指定したり、ファイル システムに保持するビルドの最大数を指定したりできます。 既定では、10 個のビルドに制限されます。 最大数を超えたビルドは、リモート エージェントによってシャットダウン時に削除されます。

リモート エージェントを構成するには

  • リモート エージェントの完全なコマンド一覧を表示するには、ターミナル アプリで次のように入力します。

    vcremote --help

  • セキュリティ保護モードを無効にして、単純な HTTP ベースの接続を有効にするには、次のように入力します。

    vcremote --secure false

    このオプションを使用する場合は、[セキュリティで保護されたチェック] ボックスをオフにします。

  • リモート エージェント ファイルの場所を指定するには、次のように入力します。

    vcremote --serverDir directory_path

    ログ ファイル、ビルド、およびサーバー証明書を配置する Mac 上の場所に置き換えます directory_path 。 既定では、この場所は /Users/<username>/vcremote です。 ビルドはこの場所でビルド番号順に編成されます。

  • バックグラウンド プロセスを使用してキャプチャ stdoutstderr 、名前の付いた server.logファイルに移動するには、次のように入力します。

    vcremote > server.log 2>&1 &

    このファイルは server.log 、ビルドの問題のトラブルシューティングに役立ちます。

  • コマンド ライン パラメーターではなく、構成ファイルを使用してエージェントを実行するには、次のように入力します。

    vcremote --config config_file_path

    JSON 形式の構成ファイルへのパスに置き換えます config_file_path 。 スタートアップ オプションとその値にダッシュを含めることはできません。

リモート エージェントの問題を解決する

iOS デバイスでのデバッグ

iOS デバイスでのデバッグが機能しない場合は、iOS デバイスとの通信に使用されるツールに問題 ideviceinstaller がある可能性があります。 このツールは通常、vcremote のインストールの間に、Homebrew からインストールされます。 回避策として次の手順に従います。

ターミナル アプリを開き、次のコマンドを順番に実行することで、ideviceinstaller とその依存関係を更新します。

  1. Homebrew が確実に更新されるようにする

    brew update

  2. libimobiledeviceusbmuxd をアンインストールします

    brew uninstall --ignore-dependencies libimobiledevice

    brew uninstall --ignore-dependencies usbmuxd

  3. 最新バージョンの libimobiledeviceusbmuxd をインストールします

    brew install --HEAD usbmuxd

    brew unlink usbmuxd

    brew link usbmuxd

    brew install --HEAD libimobiledevice

  4. ideviceinstaller をアンインストールして再インストールします

    brew uninstall ideviceinstaller

    brew install ideviceinstaller

デバイスにインストールされているアプリを一覧表示してみることで、ideviceinstaller でデバイスと通信できることを確認します。

ideviceinstaller -l

フォルダー/var/db/lockdownにアクセスできないというエラーが報告された場合ideviceinstallerは、次のコマンドを使用してフォルダーの特権を変更します。

sudo chmod 777 /var/db/lockdown

その後、ideviceinstaller でデバイスと通信できるかどうか、再度確認します。

関連項目