Поделиться через


Создание приложения 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.

  1. В Visual Studio выберите Файл>Создать>Проект.

  2. В диалоговом окне Новый проект в разделе Шаблоны выберите Visual C++, >Кроссплатформенный, а затем выберите шаблон Приложение OpenGLES (Android, iOS).

  3. Присвойте приложению имя, например MyOpenGLESApp, а затем нажмите кнопку ОК.

    Снимок экрана: диалоговое окно

    Visual Studio создаст новое решение и откроет обозреватель решений.

    Снимок экрана: MyOpenGLESApp в Обозреватель решений.

  1. В Visual Studio выберите Файл>Создать>Проект.

  2. В диалоговом окне Создание нового проекта выберите шаблон Приложение OpenGLES (Android, iOS) и нажмите кнопку Далее.

  3. В диалоговом окне Настройка нового проекта введите имя в поле Имя проекта, например MyOpenGLESApp, и нажмите Создать.

    Visual Studio создаст новое решение и откроет обозреватель решений.

    Снимок экрана: MyOpenGLESApp в Обозреватель решений.

Новое решение приложения 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

  1. Выберите пункт x86 в раскрывающемся списке Платформы решения, если он еще не выбран.

    Снимок экрана: раскрывающийся список платформы решений с выделенным элементом x86.

    Используйте 32-разрядную платформу (x86) в качестве целевой для эмулятора. Чтобы выполнить сборку для устройства, выберите платформу решения, соответствующую процессору устройства. Если список Платформы решения не отображается, щелкните пункт Платформы решения в списке Добавить или удалить кнопки и выберите свою платформу.

  2. В обозревателе решений откройте контекстное меню для проекта MyOpenGLESApp.Android.Packaging и выберите пункт Собрать.

    Снимок экрана: окно Обозреватель решений с контекстным меню проекта упаковки Android с командой

    В окне "Выходные данные" отображаются выходные данные процесса сборки для общей библиотеки Android и приложения Android.

    Снимок экрана: выходные данные сборки для проектов Android.

  3. Выберите один из профилей эмулируемого устройства Android в качестве цели развертывания.

    Выберите целевой объект развертывания.

    Возможно, вы установили другие эмуляторы или подключили устройство Android. Их можно выбрать в раскрывающемся списке целевого объекта развертывания. Для запуска приложения платформа решения сборки должна совпадать с платформой целевого устройства.

  4. Нажмите F5, чтобы начать отладку, или Shift+F5 для запуска без отладки.

    Visual Studio запускает эмулятор, который за несколько секунд загружает и развертывает код. Так выглядит экран приложения в эмуляторе Android:

    Снимок экрана: приложение, работающее в эмуляторе Android.

    После запуска приложения можно задать точки останова и использовать отладчик для проверки кода, языковых стандартов и контрольных значений.

  5. Для остановки отладки нажмите 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

  1. Установите Xcode на компьютер Mac, если его у вас еще нет.

  2. Откройте приложение Xcode на компьютере Mac.

  3. Создайте проект Xcode для приложения с одним представлением. При создании проекта заполните обязательные поля. Значения могут быть произвольными, так как проект используется только для создания профиля подготовки, с помощью которого в дальнейшем будет подписываться сборка приложения.

  4. Добавьте свой идентификатор Apple ID, зарегистрированной в учетной записи программы для разработчиков Apple, в Xcode. Ваш идентификатор Apple ID используется как удостоверение подписывания приложений. Чтобы добавить удостоверение подписывания в Xcode, откройте меню Xcode и выберите пункт Preferences (Настройки). Выберите Accounts (Учетные записи) и нажмите кнопку добавления (+), чтобы добавить свой идентификатор Apple ID. См. подробные инструкции в статье о добавлении учетной записи Apple ID.

  5. В разделе общих параметров в проекте Xcode измените значение идентификатора пакета на com.<NameOfVSProject>, где <NameOfVSProject> — это имя созданного вами проекта решения Visual Studio. Например, если в Visual Studio вы создали проект с именем MyOpenGLESApp, установите для идентификатора пакета значение com.MyOpenGLESApp.

    Снимок экрана: идентификатор пакета Xcode.

  6. Чтобы включить автоматическое подписывание, установите флажок Automatically manage signing (Автоматическое управление подписыванием)**.

    Снимок экрана: значение автоматического подписывания Xcode.

  7. Выберите имя команды для идентификатора Apple ID, которое вы задали для команды разработки.

    Снимок экрана: значение команды Xcode.

Сборка и запуск приложения для iOS на устройстве iOS

  1. Запустите удаленный агент на компьютере Mac и проверьте, сопряжена ли среда Visual Studio с удаленным агентом. Чтобы запустить удаленный агент, откройте окно приложения "Терминал" и введите vcremote. Более подробную информацию см. в разделе Настройка удаленного агента в Visual Studio.

    Окно терминала Mac под управлением vcremote.

  2. Подключите устройство iOS к компьютеру Mac. При первом подключении устройства к компьютеру поступает оповещение с вопросом, является ли компьютер доверенным для получения доступа к устройству. Укажите, что компьютер Mac является доверенным для устройства.

  3. В Visual Studio в раскрывающемся списке Платформы решения выберите платформу решения, соответствующую процессору вашего устройства, если такая платформа еще не выбрана. В этом примере используется процессор ARM64.

    Снимок экрана: установка платформы решения на ARM64.

  4. В обозревателе решений откройте контекстное меню проекта MyOpenGLESApp.iOS.Application и выберите Выгрузить проект, чтобы выгрузить проект.

  5. Снова откройте контекстное меню выгруженного проекта MyOpenGLESApp.iOS.Application и выберите Edit project.pbxproj (Изменить project.pbxproj), чтобы изменить файл проекта. В файле project.pbxproj найдите атрибут buildSettings и добавьте DEVELOPMENT_TEAM, используя свой идентификатор Apple Team ID. На следующем снимке экрана показан пример значения 123456ABC для идентификатора Apple Team ID. Можно найти значение идентификатора Apple Team ID в Xcode. Перейдите к разделу параметров сборки и наведите указатель на имя группы разработки, чтобы отобразилась подсказка. В подсказке будет указан идентификатор команды.

    Снимок экрана: настройка команды разработки.

  6. Закройте файл project.pbxproj, откройте контекстное меню выгруженного проекта MyOpenGLESApp.iOS.Application и выберите Перезагрузить проект, чтобы перезагрузить проект.

  7. Теперь выполните сборку проекта MyOpenGLESApp.iOS.Application. Для этого откройте его контекстное меню и выберите Сборка.

    Используя контекстное меню для создания проекта приложения iOS.

    В окне вывода отображаются выходные данные процесса сборки. В нем отображаются результаты для статической библиотеки iOS и приложения iOS. На компьютере Mac в окне "Терминал", в котором выполняется удаленный агент, отображается команда и действие передачи файлов.

    Возможно, на компьютере Mac вам будет предложено разрешить средству подписывания кода доступ к цепочке ключей. Чтобы продолжить, нажмите Разрешить.

  8. Выберите свое устройство iOS на панели инструментов, чтобы запустить приложение на устройстве, подключенном к компьютеру Mac. Если приложение не запускается, проверьте, предоставляет ли устройство развернутому приложению разрешение на запуск. Чтобы предоставить это разрешение, последовательно выберите на устройстве Параметры>Общие>Управления устройствами. Выберите учетную запись для разработки приложений, сделайте ее доверенной и проверьте приложение. Попытайтесь еще раз запустить приложение из Visual Studio.

    Снимок экрана: приложение iOS на устройстве iOS.

    После запуска приложения можно задать точки останова и использовать отладчик Visual Studio для проверки локальных значений, стека вызовов и контрольных значений.

    Снимок экрана: отладчик в точке останова в приложении iOS.

  9. Для остановки отладки нажмите 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. Однако вы по-прежнему можете изменить исходные файлы и ресурсы. Используйте их для задания имени приложения, значка и других сведений о реализации.