Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the antispam-bee domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/ruwritingagame/public_html/wp-includes/functions.php on line 6121
Глава 2. Hello Android – Игра в Написание Игры

Глава 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 *