安裝和設定工具以使用 iOS 進行建置
您可以使用 Visual Studio 搭配使用跨平臺 行動裝置開發與 C++ 工具,以編輯、偵錯和部署 iOS 程式代碼至 iOS 模擬器或 iOS 裝置。 但是,由於授權限制,必須在 Mac 上建置並遠端執行程式碼。 若要使用 Visual Studio 建置並執行 iOS 應用程式,您必須在 Mac 上安裝及設定 vcremote遠端代理程式。 vcremote 遠端代理程式會處理來自 Visual Studio 的組建要求,並在連線到 Mac 的 iOS 裝置或 Mac 上的 iOS 模擬器上執行應用程式。
注意
如需有關使用雲端裝載 Mac 服務 (而非使用 Mac) 的相關資訊,請參閱設定 Visual Studio 以連線至雲端裝載的 Mac \(英文\)。 本指示是針對使用 Visual Studio Tools for Apache Cordova 進行建置。 若要使用指示使用 C++ 建置, 請取代 vcremote
remotebuild
。
安裝工具以使用 iOS 建置之後,請再次參閱這篇文章。 它說明如何在 Visual Studio 和 Mac 上快速設定和更新 iOS 開發的 vcremote。
必要條件
若要安裝和使用 vcremote 遠端代理程式來開發 iOS 的程式碼,您必須先具備下列必要條件:
執行 macOS Mojave 版本 10.14 或更新版本的 Mac 電腦
使用中的 Apple Developer Program 帳戶
您可以取得免費帳戶,其允許將應用程式側載到 iOS 裝置以進行測試,但無法進行散發。
Xcode 版本 10.2.1 或更新版本
您可以從 App Store 下載 Xcode。
Xcode 命令行工具
若要安裝 Xcode 命令行工具,請在 Mac 上開啟終端機應用程式,然後輸入下列命令:
xcode-select --install
在 Xcode 中設為簽署身分識別的 Apple ID 帳戶用來簽署應用程式
若要在 Xcode 中查看或設定簽署識別,請開啟 [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。 避免使用 命令
sudo
來安裝Node.js,因為某些模組在使用sudo時無法安裝。
安裝適用於 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 會安裝在終端機應用程式中目前的使用中路徑之下。
在安裝期間,
vcremote
會安裝 ,並在 Mac 上啟用開發人員模式。 Homebrew 和兩個 npm 套件vcremote-lib
也會安裝 和vcremote-utils
。 安裝完成時,針對已略過的選用相依性,您可以放心忽略相關的所有警告。注意
若要安裝 Homebrew,您必須具備 sudo (系統管理員) 存取權。 如果您需要在沒有 sudo 的情況下安裝 vcremote,您可以在位置手動
usr/local
安裝 Homebrew,並將其資料夾新增bin
至您的路徑。 如需詳細資訊,請參閱 Homebrew 文件。 若要手動啟用開發人員模式,請在 Terminal 應用程式中輸入下列命令:DevToolsSecurity -enable
如果您更新至新版本的Visual Studio,您也必須更新為目前的 vcremote 版本。 若要更新 vcremote,請重複步驟以下載並安裝遠端代理程式。
啟動 vcremote
vcremote 遠端代理程序必須執行,Visual Studio 才能建置和執行您的 iOS 程序代碼。 Visual Studio 必須與 vcremote 配對,才能進行通訊。 根據預設,vcremote 會以 安全的連線模式執行,這需要在 Visual Studio 和 Mac 機器之間傳輸用戶端和伺服器憑證。
注意
vcremote 1.0.19 版或更新版本至少需要 Visual Studio 2022 17.5.0 版 Preview 1 或更新版本。 如果您使用 Visual Studio 2022 17.4 版或更早版本,請安裝 vcremote 1.0.17 版。
啟動 vcremote
從 Mac 上的 Terminal 應用程式,輸入:
vcremote
此命令會以的預設組建目錄
~/vcremote
啟動遠端代理程式。 如需更多組態選項,請參閱 在Mac上設定 vcremote。
第一次啟動 vcremote,而且每次建立新的伺服器證書時,都會提供您在 Visual Studio 中設定連線所需的資訊。 此資訊包括主機名和埠。 如果您想要使用主機名在 Visual Studio 中設定遠端代理程式,請使用主機名從 Windows Ping Mac,以確認其可連線。 如果不行,您可能要改用 IP 位址。
您可以在不安全模式中使用遠端代理程式。 在不安全模式中,遠端代理程式可以使用不會加密數據的簡單 HTTP 連線,與 Visual Studio 配對。 以您自己的風險使用不安全模式。 建議您使用安全模式來連線:
Visual Studio 2022 17.5 版和更新版本搭配 vcremote 1.0.19 和更新版本:
在 vcremote 1.0.19 和更新版本中,vcremote 會報告憑證檔案的路徑,該檔案 server-cert.pem
必須上傳至 Visual Studio。
Visual Studio 2022 17.4 版和舊版,vcremote 1.0.17 和更早版本:
1.0.17 版和舊版的 vcremote 會產生 PIN,以便透過 Visual Studio 2022 17.4 版與 Visual Studio 版本進行安全通訊。
產生的 PIN 是供單次使用,並只在有限的期間內有效。 如果您未在到期前將 Visual Studio 與遠端代理程式配對,您必須產生新的 PIN。 如需詳細資訊,請參閱 Generate a new security PIN。
若要停用安全連線模式
若要停用 vcremote 的安全連接模式,請在 Mac 上的 Terminal 應用程式中輸入下列命令:
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
如果代理程式尚未在您的 Mac 上執行,請遵循啟動遠端代理程式中的步驟。 您的 Mac 必須執行 vcremote,Visual Studio 才能成功配對、連線及建置您的專案。
在您的 Mac 上,取得 Mac 主機名稱或 IP 位址。
您可以在 Terminal 視窗中使用 ifconfig 命令取得 IP 位址。 使用使用
inet
中網路介面下所列的位址。在 Visual Studio 選單欄上,選擇 [工具>選項]。
在 [選項] 對話框中,展開 [跨平臺>C++>iOS]。
在 [主機名稱] 和 [連接埠] 欄位中,輸入您啟動遠端代理程式時所指定的值。 主機名稱可能是您的 Mac DNS 名稱或 IP 位址。 預設連接埠是 3030。
注意
如果您無法使用主機名 Ping Mac,您可能需要使用 IP 位址。
如果您在預設安全連線模式中使用遠端代理程式,請核取 [ 安全 ] 複選框,並將檔案從 Mac 傳輸到
server-cert.pem
Visual Studio 以進行上傳。 接下來,選擇 [ 產生 ] 按鈕以產生應該出現在桌面上的新client-cert.pem
檔案。 然後,將客戶端憑證傳送至 下方/vcremote/certs/Authorized-Clients
的 Mac。 (您可以將多個用戶端憑證檔案傳送至此目錄,因此多個授權的 Visual Studio 機器可以將要求傳送至此 Mac。注意
如果您使用 USB 磁碟驅動器來傳輸憑證,請在傳輸完成之後,從 USB 磁碟驅動器刪除憑證。
若要啟用配對,請選擇 [配對]。
配對會持續存在,直到您變更主機名、埠或產生新的伺服器或客戶端憑證為止。 如果您在 [選項] 對話框中變更主機名或埠,您可以選擇 [還原] 按鈕來復原變更,並還原為先前的配對。
如果配對失敗,請遵循啟動遠端代理程式中的步驟 ,確認遠端代理程式正在執行。 請遵循步驟來 產生新的伺服器證書 和 產生新的客戶端憑證。 如果您使用 Mac 的主機名,請嘗試改用 [主機名 ] 字段中的 IP 位址。
更新 [遠端根目錄] 欄位中的資料夾名稱,以指定 Mac 主目錄 (
~
) 中遠端代理程式所使用的資料夾。 根據預設,遠端代理程式會使用/Users/<username>/vcremote
做為遠端根目錄。選擇 [確定] 以儲存配對的遠端連線設定。
從 Visual Studio 2022 17.5 版之前的版本設定 vcremote
如果代理程式尚未在您的 Mac 上執行,請遵循啟動遠端代理程式中的步驟。 您的 Mac 必須執行 vcremote,Visual Studio 才能成功配對、連線及建置您的專案。
在您的 Mac 上,取得 Mac 主機名稱或 IP 位址。
您可以在 Terminal 視窗中使用 ifconfig 命令取得 IP 位址。 使用使用
inet
中網路介面下所列的位址。在 Visual Studio 選單欄上,選擇 [工具>選項]。
在 [選項] 對話框中,展開 [跨平臺>C++>iOS]。
在 [主機名稱] 和 [連接埠] 欄位中,輸入您啟動遠端代理程式時所指定的值。 主機名稱可能是您的 Mac DNS 名稱或 IP 位址。 預設連接埠是 3030。
注意
如果您無法使用主機名稱 ping 到 Mac,就需要使用 IP 位址。
如果您是在預設的安全連線模式中使用遠端代理程式,請核取 [安全] 核取方塊,然後在 [Pin] 欄位中輸入遠端代理程式指定的 PIN 值。 如果您是在不安全的連線模式中使用遠端代理程式,請清除 [安全] 核取方塊,並將 [Pin] 欄位保留空白。
若要啟用配對,請選擇 [配對]。
配對會一直保存,直到您變更主機名稱或連接埠為止。 如果您變更 [選項] 對話方塊中的主機名稱或連接埠,要復原變更時,請選擇 [還原] 按鈕以還原為先前的配對。
如果配對失敗,請遵循啟動遠端代理程式中的步驟 ,確認遠端代理程式正在執行。 如果在產生遠端代理程式 PIN 之後經過太多時間,請遵循產生新的安全性 PIN 中的步驟。 然後再試一次。 如果您使用 Mac 的主機名,請嘗試改用 [主機名 ] 字段中的 IP 位址。
更新 [遠端根目錄] 欄位中的資料夾名稱,以指定 Mac 主目錄 (
~
) 中遠端代理程式所使用的資料夾。 根據預設,遠端代理程式會使用/Users/<username>/vcremote
做為遠端根目錄。選擇 [確定] 以儲存配對的遠端連線設定。
Generate a new security PIN
適用於:Visual Studio 2022 17.4 版和更早版本,使用 vcremote 1.0.17 版和更早版本。
第一次啟動遠端代理程式時,產生的 PIN 碼是有時效性的—預設為 10 分鐘。 如果您未在到期前將 Visual Studio 與遠端代理程式配對,您必須產生新的 PIN。
產生新的 PIN 碼
停止代理程式,或在 Mac 上開啟第二個 Terminal 應用程式視窗,以在其中輸入命令。
在 Terminal 應用程式中,輸入下列命令:
vcremote generateClientCert
遠端代理程式會產生新的暫存 PIN。 若要使用新的 PIN 碼配對 Visual Studio,請重複 在 Visual Studio 中設定遠端代理程式中的步驟。
產生新的客戶端憑證
適用於:Visual Studio 2022 17.5 版和更新版本,使用 vcremote 1.0.19 版和更新版本。
當您在 Visual Studio 上配對時,會產生新的 client-cert.pem
檔案。 將憑證檔案傳送至 底下的 /vcremote/certs/Authorized-Clients
Mac 組建計算機。 此憑證可讓 Mac 授權來自 Visual Studio 計算機的要求。
產生新的伺服器憑證
適用於:Visual Studio 2022 17.5 版和更新版本,使用 vcremote 1.0.19 版和更新版本。
為了安全性目的,使用遠端代理程式配對出的 Visual Studio 伺服器憑證會與 Mac 的 IP 或主機名稱相關。 如果上述值有所變更,您就必須產生新的伺服器憑證,然後重新使用新值來設定 Visual Studio。
若要產生新的伺服器憑證
vcremote
停止代理程式。在 Terminal 應用程式中,輸入下列命令:
vcremote resetServerCert
當提示確認時,請輸入
Y
。若要將Visual Studio與Mac配對,請從Mac傳送新產生的
server-cert.pem
檔案,並將其上傳至Visual Studio,重複在Visual Studio 中設定遠端代理程式中的步驟。
在 Mac 上設定 vcremote
您可以使用各種命令列選項來設定遠端代理程式。 例如,您可以指定要接聽組建要求的通訊埠,並指定要在檔案系統上維護的最大組建數目。 預設上限為 10 個組建。 遠端代理程式會在關閉時,移除超出上限的組建。
若要設定遠端代理程式
若要查看遠端代理程式命令的完整清單,請在 Terminal 應用程式中輸入:
vcremote --help
若要停用安全模式並啟用簡單的 HTTP 型連線,請輸入:
vcremote --secure false
當您使用此選項時,請清除 [ 安全] 複選框。
若要指定遠端代理程式檔的位置,請輸入:
vcremote --serverDir directory_path
將 取代
directory_path
為 Mac 上的位置,以放置記錄檔、組建和伺服器憑證。 根據預設,此位置為/Users/<username>/vcremote
。 在這個位置中,組建會依組建編號排列。若要使用背景程式來擷取和
stderr
擷取stdout
名為server.log
的檔案,請輸入:vcremote > server.log 2>&1 &
此
server.log
檔案可協助針對建置問題進行疑難解答。若要使用組態檔 (而不是命令列參數) 執行代理程式,請輸入:
vcremote --config config_file_path
以 JSON 格式的組態檔路徑取代
config_file_path
。 啟動選項及其值不得包含破折號。
針對遠端代理程式進行疑難排解
在 iOS 裝置上進行偵錯
如果 iOS 裝置上的偵錯無法運作,則工具可能會發生問題 ideviceinstaller
,此工具可用來與 iOS 裝置通訊。 此工具通常會在安裝 期間從 Homebrew 安裝 vcremote
。 請遵循後續步驟作為因應措施:
依序執行下列命令來開啟終端機應用程式並更新 ideviceinstaller
及其相依性:
確認 Homebrew 已完成更新
brew update
卸載
libimobiledevice
和usbmuxd
brew uninstall --ignore-dependencies libimobiledevice
brew uninstall --ignore-dependencies usbmuxd
安裝和的
libimobiledevice
最新版本usbmuxd
brew install --HEAD usbmuxd
brew unlink usbmuxd
brew link usbmuxd
brew install --HEAD libimobiledevice
卸載並重新安裝
ideviceinstaller
brew uninstall ideviceinstaller
brew install ideviceinstaller
ideviceinstaller
嘗試列出裝置上安裝的應用程式,以確認可以與裝置通訊:
ideviceinstaller -l
如果 ideviceinstaller
報告無法存取資料夾 /var/db/lockdown
的錯誤,請使用此指令變更資料夾的權限:
sudo chmod 777 /var/db/lockdown
然後再次確認是否可以 ideviceinstaller
與裝置通訊。