Создание приложения OpenGL ES в Android и iOS
Вы можете создавать решения Visual Studio и проекты для приложений iOS и Android с общим кодом. В этой статье описывается объединенный шаблон решения. Он создает как приложение iOS, так и приложение для собственного действия Android. Приложения имеют общий код C++, который использует технологию OpenGL ES для отображения одинакового анимированного вращающегося куба на обеих платформах. OpenGL ES (OpenGL for Embedded Systems или GLES) — это 2D и трехмерный графический API. Она поддерживается на многих мобильных устройствах.
Требования
Внимание
Поддержка OpenGL больше недоступна. Последнее доступно в Visual Studio 17.3.
Ниже приведены требования к системе для создания приложения OpenGL ES для iOS и Android. Установите рабочую нагрузку разработки мобильных приложений на языке C++ в Visual Studio Installer, если еще не сделали этого. Для получения шаблонов OpenGL ES, а также для создания приложения для iOS, включите дополнительные инструменты разработки C++ для iOS. Чтобы создать для Android, установите средства разработки android на C++ и необходимые сторонние средства: Android NDK, Apache Ant и Google Android Emulator.
Для повышения производительности эмулятора на платформах Intel можно установить Intel Hardware Accelerated Execution Manager (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 включает в себя три проекта библиотек и два проекта приложений. Папка библиотек включает общий проект кода. И два проекта для конкретной платформы, ссылающиеся на общий код:
MyOpenGLESApp.Android.NativeActivity
содержит ссылки и связующий код, который реализует приложение в качестве Native Activity для Android. Точки входа из связующего кода реализованы в файле main.cpp, который включает общий код изMyOpenGLESApp.Shared
. Предкомпилированные заголовки находятся в файле pch.h. Этот проект приложения Native Activity компилируется в файл общей библиотеки (с расширением .so), который передается в проект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
создает файл с расширением .apk для развертывания на устройстве или в эмуляторе Android. Этот файл содержит ресурсы и файл AndroidManifest.xml, в котором задаются свойства манифеста. В него также входит файл build.xml, управляющий процессом сборки Ant. По умолчанию он задан как начальный проект, который можно развернуть и запустить непосредственно из Visual Studio.MyOpenGLESApp.iOS.Application
содержит ресурсы и код прилипания Objective-C для создания приложения iOS, которое ссылается на код статической библиотеки C++ вMyOpenGLESApp.iOS.StaticLibrary
. Этот проект создает пакет сборки, который передается на компьютер Mac средой Visual Studio и удаленным агентом. При сборке этого проекта среда Visual Studio отправляет файлы и команды для сборки и развертывания приложения на компьютере Mac.
Сборка и запуск приложения Android
Решение, созданное с помощью шаблона, задает приложение Android в качестве проекта по умолчанию. Вы можете выполнить сборку и запуск этого приложения, чтобы проверить его установку и настройку. Для первоначального теста запустите приложение в одном из профилей устройств, установленных эмулятором для Android. Если вы предпочитаете тестировать приложение на другом целевом объекте, вы можете загрузить целевой эмулятор. Или подключите устройство к компьютеру.
Сборка и запуск приложения Android Native Activity
Выберите пункт x86 в раскрывающемся списке Платформы решения, если он еще не выбран.
Используйте 32-разрядную платформу (x86) в качестве целевой для эмулятора. Чтобы выполнить сборку для устройства, выберите платформу решения, соответствующую процессору устройства. Если список Платформы решения не отображается, щелкните пункт Платформы решения в списке Добавить или удалить кнопки и выберите свою платформу.
В обозревателе решений откройте контекстное меню для проекта
MyOpenGLESApp.Android.Packaging
и выберите пункт Собрать.В окне "Выходные данные" отображаются выходные данные процесса сборки для общей библиотеки Android и приложения Android.
Выберите один из профилей эмулируемого устройства Android в качестве цели развертывания.
Возможно, вы установили другие эмуляторы или подключили устройство Android. Их можно выбрать в раскрывающемся списке целевого объекта развертывания. Для запуска приложения платформа решения сборки должна совпадать с платформой целевого устройства.
Нажмите F5, чтобы начать отладку, или Shift+F5 для запуска без отладки.
Visual Studio запускает эмулятор, который за несколько секунд загружает и развертывает код. Так выглядит экран приложения в эмуляторе Android:
После запуска приложения можно задать точки останова и использовать отладчик для проверки кода, языковых стандартов и контрольных значений.
Для остановки отладки нажмите SHIFT+F5.
Эмулятор является отдельным процессом, который продолжает выполняться. Вы можете изменять, компилировать и развертывать код несколько раз в одном эмуляторе. Ваше приложение находится в коллекции приложений эмулятора, откуда его можно запускать напрямую.
Созданные проекты приложений и библиотек Android Native Activity помещают общий код C++ в динамическую библиотеку. Он включает в себя "клей" код для интерфейса с платформой Android. Большая часть кода приложения находится в библиотеке. Инструкции по манифесту, ресурсам и сборке находятся в проекте упаковки. Общий код вызывается из main.cpp в проекте NativeActivity. Более подробную информацию о программировании Android Native Activity см. на странице Concepts (Основные понятия) в Android Developer NDK.
Visual Studio создает проекты android Native Activity с помощью Android NDK. Он использует Clang в качестве набора инструментов платформы. Visual Studio сопоставляет свойства проекта с командами компиляции, ссылки и отладки на целевой платформе. Чтобы получить подробные сведения, откройте диалоговое окно Страницы свойств для проекта MyOpenGLESApp.Android.NativeActivity. Более подробную информацию о параметрах командной строки см. в руководстве пользователя компилятора Clang.
Сборка и запуск приложения для iOS на устройстве iOS
Вы создаете и редактируете проект приложения iOS в Visual Studio. Из-за ограничений лицензирования она должна быть создана и развернута на компьютере Mac. Visual Studio взаимодействует с удаленным агентом, запущенным на компьютере Mac, для передачи файлов проекта и выполнения команд сборки, развертывания и отладки. Перед сборкой приложения iOS настройте компьютер Mac и среду Visual Studio для обмена данными. Подробные инструкции см. в разделе Установка и настройка средств для разработки с помощью iOS. Запустите удаленный агент на компьютере Mac и свяйте его с Visual Studio. Затем можно создать и запустить приложение iOS, чтобы проверить установку и настройку.
Чтобы развернуть приложение на устройстве iOS, сначала настройте автоматический вход в Xcode. Автоматическое подписание создает профиль подготовки для подписи сборки приложения.
Настройка автоматического подписывания в Xcode
Установите Xcode на компьютер Mac, если его у вас еще нет.
Откройте приложение Xcode на компьютере Mac.
Создайте проект Xcode для приложения с одним представлением. При создании проекта заполните обязательные поля. Значения могут быть произвольными, так как проект используется только для создания профиля подготовки, с помощью которого в дальнейшем будет подписываться сборка приложения.
Добавьте свой идентификатор Apple ID, зарегистрированной в учетной записи программы для разработчиков Apple, в Xcode. Ваш идентификатор Apple ID используется как удостоверение подписывания приложений. Чтобы добавить удостоверение подписывания в Xcode, откройте меню Xcode и выберите пункт Preferences (Настройки). Выберите Accounts (Учетные записи) и нажмите кнопку добавления (+), чтобы добавить свой идентификатор Apple ID. См. подробные инструкции в статье о добавлении учетной записи Apple ID.
В разделе общих параметров в проекте Xcode измените значение идентификатора пакета на
com.<NameOfVSProject>
, где<NameOfVSProject>
— это имя созданного вами проекта решения Visual Studio. Например, если в Visual Studio вы создали проект с именемMyOpenGLESApp
, установите для идентификатора пакета значениеcom.MyOpenGLESApp
.Чтобы включить автоматическое подписывание, установите флажок Automatically manage signing (Автоматическое управление подписыванием)**.
Выберите имя команды для идентификатора Apple ID, которое вы задали для команды разработки.
Сборка и запуск приложения для iOS на устройстве iOS
Запустите удаленный агент на компьютере Mac и проверьте, сопряжена ли среда Visual Studio с удаленным агентом. Чтобы запустить удаленный агент, откройте окно приложения "Терминал" и введите
vcremote
. Более подробную информацию см. в разделе Настройка удаленного агента в Visual Studio.Подключите устройство iOS к компьютеру Mac. При первом подключении устройства к компьютеру поступает оповещение с вопросом, является ли компьютер доверенным для получения доступа к устройству. Укажите, что компьютер Mac является доверенным для устройства.
В Visual Studio в раскрывающемся списке Платформы решения выберите платформу решения, соответствующую процессору вашего устройства, если такая платформа еще не выбрана. В этом примере используется процессор ARM64.
В обозревателе решений откройте контекстное меню проекта MyOpenGLESApp.iOS.Application и выберите Выгрузить проект, чтобы выгрузить проект.
Снова откройте контекстное меню выгруженного проекта MyOpenGLESApp.iOS.Application и выберите Edit project.pbxproj (Изменить project.pbxproj), чтобы изменить файл проекта. В файле
project.pbxproj
найдите атрибутbuildSettings
и добавьтеDEVELOPMENT_TEAM
, используя свой идентификатор Apple Team ID. На следующем снимке экрана показан пример значения123456ABC
для идентификатора Apple Team ID. Можно найти значение идентификатора Apple Team ID в Xcode. Перейдите к разделу параметров сборки и наведите указатель на имя группы разработки, чтобы отобразилась подсказка. В подсказке будет указан идентификатор команды.Закройте файл
project.pbxproj
, откройте контекстное меню выгруженного проекта MyOpenGLESApp.iOS.Application и выберите Перезагрузить проект, чтобы перезагрузить проект.Теперь выполните сборку проекта MyOpenGLESApp.iOS.Application. Для этого откройте его контекстное меню и выберите Сборка.
В окне вывода отображаются выходные данные процесса сборки. В нем отображаются результаты для статической библиотеки iOS и приложения iOS. На компьютере Mac в окне "Терминал", в котором выполняется удаленный агент, отображается команда и действие передачи файлов.
Возможно, на компьютере Mac вам будет предложено разрешить средству подписывания кода доступ к цепочке ключей. Чтобы продолжить, нажмите Разрешить.
Выберите свое устройство 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 управляет работой приложения на устройстве iOS, подключенном к компьютеру Mac. Visual Studio сопоставляет свойства проекта с параметрами, используемыми для компиляции, связывания и отладки на целевой платформе iOS. Чтобы получить подробную информацию о параметрах командной строки компилятора, откройте диалоговое окно Страницы свойств для проекта MyOpenGLESApp.iOS.StaticLibrary.
Настройка приложений
Вы можете изменить общий код C++, чтобы добавить или изменить общие функциональные возможности. Измените вызовы общего кода в MyOpenGLESApp.Android.NativeActivity
и MyOpenGLESApp.iOS.Application
проектах на соответствие. Для указания разделов общего кода, предназначенных для конкретной платформы, можно использовать макросы препроцессора. При выполнении сборки для Android предварительно определен макрос препроцессора __ANDROID__
. При выполнении сборки для iOS предварительно определен макрос препроцессора __APPLE__
.
Чтобы просмотреть IntelliSense для конкретной платформы проекта, выберите проект в раскрывающемся списке переключателя контекста. Он находится в панели навигации в верхней части окна редактора.
Проблемы, найденные IntelliSense в коде текущего проекта, подчеркиваются красной волнистой линией. Проблема с фиолетовой волнистой линией в других проектах. Visual Studio не поддерживает выделение кода цветом и технологию IntelliSense для файлов с кодом Java и Objective-C. Однако вы по-прежнему можете изменить исходные файлы и ресурсы. Используйте их для задания имени приложения, значка и других сведений о реализации.