重要
從 Visual Studio 2026 (18.0 版) 開始,不再支援 iOS 和 Android 的 C++ 行動開發工作負載,以及嵌入式和 IoT 工具 (RTOS 檢視器、序列監視器、周邊裝置檢視器和 ST 專案匯入) ,並將在未來的更新中移除。 「使用 C++ 進行行動開發」工作負載中包含的 Android NDK 仍受支援。 OpenGL 支援已不再提供。 它最後一次可在 Visual Studio 17.3 中使用。
您可以針對共用通用程式碼的 iOS 應用程式與 Android 應用程式,建立 Visual Studio 方案和專案。 本文會引導您完成合併的解決方案範本。 它會建立 iOS 應用程式和 Android Native Activity 應用程式。 這兩個應用程式有通用的 C++ 程式碼,該程式碼使用 OpenGL ES 在每個平台上顯示相同的動畫旋轉立方體。 OpenGL ES (OpenGL for Embedded Systems 或 GLES) 是 2D 和 3D 圖形 API。 在許多行動裝置上都支援它。
需求
以下是為 iOS 和 Android 建立 OpenGL ES 應用程式的系統需求。 否則,請安裝 Visual Studio Installer 中的「使用 C++ 進行行動開發」工作負載。 若要取得 OpenGL ES 範本,以及為 iOS 建置,請包含選擇性的 C++ iOS 開發工具。 若要建置 Android,請安裝 C++ Android 開發工具和必要的第三方工具:Android NDK、Apache Ant 和 Google Android 模擬器。
為了提升 Intel 平臺上的模擬器效能,其中一個選項是安裝 Intel 硬體加速執行管理員 (HAXM)。 如需詳細指示,請參閱 使用 C++ 安裝跨平臺行動裝置開發。
若要建置及測試 iOS 應用程式,您需要 Mac 電腦。 根據安裝指示進行設定。 如需如何設定 iOS 開發環境的詳細資訊,請參閱安裝和設定工具以使用 iOS 進行建置。
建立新的 OpenGLES 應用程式專案
在本教學課程中,您會先建立新的 OpenGL ES 應用程式項目,然後在 Android 模擬器中建置並執行它。 接下來,您會建置適用於 iOS 的應用程式,然後在 iOS 裝置上執行該應用程式。
在 Visual Studio 中,選擇 [檔案]>[新增]>[專案]。
在 [新增專案] 對話方塊的 [範本] 底下,選擇 [Visual C++]>[跨平台],然後選擇 [OpenGLES 應用程式 (Android、iOS)] 範本。
提供應用程式的名稱,例如 MyOpenGLESApp,然後選擇 [ 確定]。
Visual Studio 會建立新的方案,並開啟方案總管。
在 Visual Studio 中,選擇 [檔案]>[新增]>[專案]。
在 [ 建立新專案 ] 對話框中,選取 OpenGLES 應用程式 (Android, iOS) 範本,然後選擇 [ 下一步]。
在 [設定新專案] 對話框中,在 [專案名稱] 中輸入 MyOpenGLESApp 之類的名稱,然後選擇 [建立]。
Visual Studio 會建立新的方案,並開啟方案總管。
新的 OpenGL ES 應用程式方案包含三個程式庫專案和兩個應用程式專案。 Library 資料夾包含共用程式碼專案,以及參考共用程式代碼的兩個平臺特定專案:
MyOpenGLESApp.Android.NativeActivity包含參考和黏附程式碼,可讓您的應用程式當作 Native Activity 在 Android 上實作。 黏附程式碼的進入點是在 main.cpp 中實作的,其中包含MyOpenGLESApp.Shared中共用的通用程式碼。 先行編譯標頭檔位於 pch.h 中。 這個 Native Activity 應用程式專案會編譯至 專案所挑選的共用程式庫 (MyOpenGLESApp.Android.Packaging) 檔案中。MyOpenGLESApp.iOS.StaticLibrary會建立 iOS 靜態程式庫 (.a) 檔案,其中包含MyOpenGLESApp.Shared中的共用程式碼。 它會連結到由MyOpenGLESApp.iOS.Application專案所建立的應用程式。MyOpenGLESApp.Shared包含可跨平台運作的共用程式碼。 它使用前置處理器巨集來進行平台專屬程式碼的條件式編譯。 共用程式碼會由MyOpenGLESApp.Android.NativeActivity與MyOpenGLESApp.iOS.StaticLibrary中的專案參考挑選。
該方案包含兩個專案,分別為 Android 和 iOS 平台建置應用程式:
MyOpenGLESApp.Android.Packaging會建立部署在 Android 裝置或模擬器上時所使用的 .apk 檔案。 此檔案中包含資源以及您設定資訊清單屬性所在的 AndroidManifest.xml 檔案。 其中也包含用來控制建置流程的 build.xml 檔案。 根據預設,它會設定為啟始專案,以便直接從 Visual Studio 部署及執行。MyOpenGLESApp.iOS.Application包含資源和 Objective-C 黏附程式代碼,以建立 iOS 應用程式,以連結至 中的MyOpenGLESApp.iOS.StaticLibraryC++靜態庫程式碼。 這個專案會建立組建套件,並由 Visual Studio 和遠端代理程式傳輸到您的 Mac。 當您建置這個專案時,Visual Studio 會傳送檔案和命令,以在 Mac 上建置及部署應用程式。
建置並執行 Android 應用程式
範本所建立的方案會將 Android 應用程式設定為預設專案。 您可以建置並執行這個應用程式,以確認您的安裝和設定。 針對初始測試,在 Android 版模擬器安裝的其中一個裝置設定檔上執行應用程式。 如果您想要在另一個目標上測試應用程式,您可以載入目標模擬器。 或者,將裝置連線到您的電腦。
建置並執行 Android Native Activity 應用程式
如果尚未選取,請從 [方案平台] 下拉式清單中選擇 [x86]。
使用 x86 將目標設定為模擬器。 若要將目標設定為裝置,請根據裝置處理器來選擇方案平台。 如果未顯示 [方案平台] 清單,請從 [新增或移除按鈕] 清單中選擇 [方案平台],然後選擇您的平台。
在 [方案總管] 中,開啟
MyOpenGLESApp.Android.Packaging專案的捷徑功能表,然後選擇 [建置]。
[輸出] 視窗會顯示 Android 共用程式庫和 Android 應用程式的建置流程輸出。
選擇其中一個模擬的 Android 裝置設定檔作為部署目標。
您可能已安裝其他模擬器,或已連線 Android 裝置。 您可以在部署目標下拉式清單中選擇它們。 若要執行應用程式,所建置的方案平台必須符合目標裝置的平台。
按 F5 開始偵錯,或 Shift+F5 啟動而不偵錯。
Visual Studio 會啟動模擬器,這需要幾秒的時間來載入及部署您的程式碼。 以下是應用程式出現在模擬器中的方式:
在您的應用程式啟動之後,您可以設定中斷點,並使用偵錯工具,以逐步執行程式碼、檢查區域變數及監看值。
按 Shift+F5 停止偵錯。
模擬器是分開的程序,會繼續執行。 您可以將程式碼多次編輯、編譯及部署至相同的模擬器。 您的應用程式會出現在模擬器的應用程式集合中,並可由此直接啟動。
產生的 Android Native Activity 應用程式和連結庫專案會將C++共用程式代碼放在動態連結庫中。 其中包含與Android平臺介面的「黏附」程序代碼。 大部分的應用程式程式代碼都位於連結庫中。 指令清單、資源和建置指示位於封裝專案中。 共用程式碼會從 NativeActivity 專案中的 main.cpp 呼叫。 如需如何對 Android Native Activity 進行程式設計的詳細資訊,請參閱 Android 開發人員 NDK 的 概念 頁面。
Visual Studio 會使用 Android NDK 建置 Android 原生活動專案。 它會使用 Clang 作為平臺工具組。 Visual Studio 會將專案的屬性對應至目標平臺上的編譯、鏈接和偵錯命令。 如需詳細資料,請開啟 MyOpenGLESApp.Android.NativeActivity 專案的 [屬性頁] 對話方塊。 如需有關命令列參數的詳細資訊,請參閱 Clang Compiler 使用者手冊。
在 iOS 裝置上建置並執行 iOS 應用程式
您可以在 Visual Studio 中建立和編輯 iOS 應用程式專案。 由於授權限制,必須從 Mac 建置及部署它。 Visual Studio 會與 Mac 上所執行的遠端代理程式通訊,以傳輸專案檔,並執行建置、部署和偵錯命令。 安裝並設定 Mac 和 Visual Studio 以進行通訊,才能建置 iOS 應用程式。 如需詳細指示,請參閱安裝和設定工具以使用 iOS 進行建置。 在 Mac 上執行遠端代理程式,並將它與 Visual Studio 配對。 然後,您可以建置並執行 iOS 應用程式,以確認您的安裝和設定。
若要將應用程式部署至 iOS 裝置,請先在 Xcode 中設定自動登入。 自動簽署會建立布建配置檔來簽署應用程式的組建。
若要在 Xcode 上設定自動簽署
如果您尚未安裝,請在 Mac 上安裝 Xcode 。
在 Mac 上開啟 Xcode 應用程式。
建立一個新的單一檢視應用程式 Xcode 專案。 在專案建立期間填寫必填欄位。 這些值可以是任意的,因為專案僅用於建立稍後用來簽署應用程式組建的佈建設定檔。
將您在 Apple Developer Program 帳戶中註冊的 Apple ID 加入到 Xcode 中。 您的 Apple ID 會當作簽署應用程式的簽署身分識別使用。 若要在 Xcode 中新增簽署身分識別,請開啟 [Xcode] 功能表,並選擇 [喜好設定]。 選取 [帳戶],然後按一下 [新增] 按鈕 (+) 來新增您的 Apple ID。 如需詳細指示,請參閱新增您的 Apple ID 帳戶 \(英文\)。
從 Xcode 專案的 [一般] 設定中,將 [套件組合識別碼] 的值變更為
com.<NameOfVSProject>,其中<NameOfVSProject>是與您所建立的 Visual Studio 方案專案相同的名稱。 例如,如果您在 Visual Studio 上建立一個稱為MyOpenGLESApp的專案,則將 [套件組合識別碼] 設定為com.MyOpenGLESApp。
若要啟用自動簽署,請核取。 自動管理簽署**。
選取您當作開發小組新增之 Apple ID 的小組名稱。
若要在 iOS 裝置上建置並執行 iOS 應用程式
在 Mac 上執行遠端代理程式,並確認 Visual Studio 已與遠端代理程式搭配使用。 若要啟動遠端代理程式,請開啟終端機應用程式視窗並輸入
vcremote。 如需詳細資訊,請參閱 在 Visual Studio 中設定遠端代理程式。
將 iOS 裝置連接到 Mac。 當您第一次將裝置連接到電腦時,會出現一個警示,詢問您是否信任存取您裝置的電腦。 讓裝置信任 Mac 電腦。
在 Visual Studio 上,根據您裝置的處理器,從 [方案平台] 下拉式清單中選擇方案平台 (如果尚未選取)。 此範例中為 ARM64 處理器。
在 [方案總管] 中,開啟 MyOpenGLESApp.iOS.Application 專案的捷徑功能表,然後選擇 [卸載專案] 來卸載專案。
再次開啟已卸載之 MyOpenGLESApp.iOS.Application 專案的捷徑功能表,然後選擇 [編輯 project.pbxproj] 來編輯專案檔。 在
project.pbxproj檔案中,尋找buildSettings屬性,然後使用 Apple Team ID 新增DEVELOPMENT_TEAM。 以下螢幕擷取畫面會針對 Apple Team ID 顯示123456ABC的範例值。 您可以從 Xcode 找到 Apple Team ID 的值。 移至 [組建設定],並將滑鼠指標停留在您的開發小組名稱上,以顯示工具提示。 工具提示會顯示您的小組識別碼。
關閉
project.pbxproj檔案,然後開啟已卸載之 MyOpenGLESApp.iOS.Application 專案的捷徑功能表,並選擇 [重新載入專案] 來重新載入專案。現在,開啟 MyOpenGLESApp.iOS.Application 專案的捷徑功能表,然後選擇 [建置],以建置該專案。
[輸出] 視窗會顯示建置程序的輸出。 它會顯示 iOS 靜態庫和 iOS 應用程式的結果。 在 Mac 上,執行遠端代理程式的終端機視窗會顯示命令和檔案傳輸活動。
在 Mac 電腦上,系統可能會提示您允許 Codesign 存取您的 Keychain。 選擇 [允許] 繼續進行。
在工具列上選擇您的 iOS 裝置,以便在連接到 Mac 的裝置上執行應用程式。 如果應用程式未啟動,請確認裝置是否授予已部署的應用程式在裝置上執行的權限。 您可以前往裝置上的 [設定]>[一般]>[裝置管理] 來設定此權限。 選取您的開發人員應用程式帳戶、信任您的帳戶,然後驗證應用程式。 再次嘗試從 Visual Studio 執行應用程式。
在您的應用程式啟動之後,您可以設定中斷點,並使用 Visual Studio 偵錯工具來檢查區域變數、查看呼叫堆疊及監看值。
按 Shift+F5 停止偵錯。
產生的 iOS 應用程式和程式庫專案會將 C++ 程式碼放在只實作共用程式碼的靜態程式庫中。 大多數應用程式程式碼會位於
Application專案中。 對這個範本專案中之共用程式庫程式碼的呼叫會在 GameViewController.m 檔案中進行。 為了建置您的 iOS 應用程式,Visual Studio 使用 Xcode 平台工具組,該工具組需要與 Mac 上所執行的遠端用戶端進行通訊。Visual Studio 會將專案檔傳輸至遠端用戶端。 然後它會傳送命令,以使用 Xcode 建置應用程式。 遠端用戶端會將組建狀態資訊傳回 Visual Studio。 成功建置應用程式時,Visual Studio 可以傳送命令來執行和偵錯應用程式。 Visual Studio 中的偵錯工具可控制在連接至 Mac 的 iOS 裝置上所執行的應用程式。 Visual Studio 會將專案屬性對應至目標 iOS 平臺上用來編譯、鏈接和偵錯的選項。 如需編譯器命令列選項詳細資料,請開啟 MyOpenGLESApp.iOS.StaticLibrary 專案的 [屬性頁] 對話方塊。
自訂您的應用程式
您可以修改共用的 C++ 程式碼,加入或變更一般常見功能。 將和項目中共用程式代碼MyOpenGLESApp.Android.NativeActivityMyOpenGLESApp.iOS.Application的呼叫變更為相符。 您可以使用前置處理器巨集,來指定通用程式碼中的平台專屬區段。 當您針對 Android 建置時,系統會預先定義前置處理器巨集 __ANDROID__ 。 當您針對 iOS 建置時,系統會預先定義前置處理器巨集 __APPLE__ 。
若要查看特定項目平臺的 IntelliSense,請選擇內容切換器下拉式清單中的專案。 它位於編輯器視窗頂端的導覽列中。
目前專案所使用之程式碼中的 IntelliSense 問題會以紅色波浪線標示。 其他專案中的紫色波浪線標記問題。 Visual Studio 不支援 Java 或 Objective-C 檔案的程式碼顏色標示或 IntelliSense。 不過,您仍然可以修改來源檔案和資源。 使用它們來設定您的應用程式名稱、圖示和其他實作詳細數據。