Глава 2. Hello Android

Visual Studio, Android, Native activity, C++, OpenGL ES

“Родные” языки для Андроида – это Java и Kotlin.

Native activity же позволит писать код для Android-а на C++. Кроме того, Visual Studio’s Native activity шаблон включает инициализацию OpenGL ES-а.

1. Запускаем Visual Studio. Выбираем “Create a new project“. В меню шаблонов выбираем Android, потом “Native Activity Application (Android)”:

Затем – Next.


2. Следующий экран – Configure your new project:

  • Project name – p_android (“p” – for “platform”),
  • Location неправильный. Поменяем (browse) на “C:\CPP\a999hello”,
  • Place solution in the same directory (просто чтоб знать, где его потом искать):

Затем – Create.

Выглядит так:

Как видите, под “p_android” solution/каталогом создалось ДВА проекта – “p_android.NativeActivity” и “p_android.Packaging”.


3. ВАЖНО: Default platform (в верхнем меню) – ARM. Надо поменять на ARM64.

Google уже объявил, что 32 bit поддерживаться НЕ будет, так что работаем с 64.


4. Поскольку мы планируем использовать OpenGL ES 3.2, нам понадобится более высокий API level (в моем случае по умолчанию был 21).

Right-click на p_android.NativeActivity проект -> Properties (внизу),

Поменяем Configuration на All Configurations, Platform: ARM64,

Идем в General -> Target API Level, меняем на 27 (этого достаточно):

Затем – Apply, Ok.


5. Также надо поменять minSdkVersion в AndroidManifest-е на 24 (минимум для ES 3.2) и targetSdkVersion на 27 (как решили выше):

Еще, давайте поменям android:label с “@string/app_name” на “OurProject“.

Затем – Save All:


6. Теперь можно переключиться с заданного OpenGL ES 1.0 на желаемый OpenGL ES 3.2. Ссылка – в файле pch.h под p_android.NativeActivity проектом. Поменяем соотвествующую строку на “GLES3\gl32.h”:

Снова, Save All.


7. И надо поменять подключенную библиотеку. Right-click на “p_android.NativeActivity” проект -> Properties, All Configurations, ARM64, Linker -> Input, открываем Library Dependencies -> Edit.

Вручную меняем GLESv1_CM на GLESv3

Ok, Apply, Ok.


Чтобы проверить не сломали ли чего-нибудь, попробуем скомпилировать и запустить нашу программу на реальном Андроиде.

Для этого надо разрешить “USB debugging” в Settings -> Developer options на устройстве.

На всякий случай: на моем Samsung S20 телефоне “Developer Options” в Settings нЕ было. Нужно было пройти в Settings -> About phone -> Software information и кликнуть 7 раз на Build number. После этого Developer options должны появиться в списке, и тогда можно вернуться в Settings -> Developer options и разрешить-таки USB debugging.


8. Теперь включаем и разблокируем телефон и подключаем к PC USB кабелем. Телефон спросит “Allow USB debugging?” – allow (разрешить). После этого телефон должен появиться в списке доступных устройств:

Жмем зеленую стрелку для запуска программы (Configuration: Debug / ARM64):

Как и ожидалось – ошибки.


9. Игнорируем poll.h “errors”. Важно – 2 “undefined identifiers”: GL_PERSPECTIVE_CORRECTION_HINT и GL_SMOOTH в main.cpp. Строки 111 и 113 (это для GLES 1.0).

Double-click на ошибку чтобы перейти в исходный код. Просто закомментируем эти 2 строки:

Запускаем снова (зеленая стрелка) – работает! На моем S20 это выглядит как мигающий зеленый экран:

Теперь давайте отложим Андроид в сторону, и перейдем к PC.


Leave a Reply

Your email address will not be published. Required fields are marked *