Подготовка Проекта Sdl2 Для Запуска На Android

Всем привет. Сегодня мы рассмотрим, как подготовить проект с использованием библиотеки sdl2 для запуска игры на Android. Для начала вам необходимо скачать Android Studio, установить ее и все, что требуется в данной среде разработки.

Например, у меня сейчас стоит Kde Neon, и в этой системе есть файл /etc/environment, такой же файл существует и в ubuntu. Туда необходимо ввести следующие переменные.

  
  
  
  
  
   

ANDROID_HOME=/home/username/Android/Sdk ANDROID_NDK_HOME=/home/username/ndk

Вам также необходимо скачать NDK с официального сайта, распаковать его в домашний каталог и переименовать в NDK. Далее вам необходимо скачать библиотеку SDL2 с сайта.

libsdl.org .

Чтобы использовать sdl2 для Android, важно не компилировать его для компьютера, потому что тогда он не будет компилироваться для Android. Чтобы проект скомпилировался, вам необходимо создать проект в студии Android, любой, чтобы принять лицензию, иначе SDL2 запросит лицензию при сборке.

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

В этом случае мы не можем использовать FT_New_Face, а вместо этого будем использовать FT_New_Memory_Face для использования уже прочитанных данных.



#ifdef __ANDROID__ snprintf ( path, 254, "fonts/%s", file ); SDL_RWops *rw = SDL_RWFromFile(path, "r" ); char *memory = ( char * ) calloc ( rw->hidden.androidio.size, 1 ); SDL_RWread(rw, memory, 1, rw->hidden.androidio.size ); FT_New_Memory_Face(*this->ft_library, ( const FT_Byte * )memory, rw->hidden.androidio.size, 0, &this;->face ); SDL_RWclose(rw); free ( memory ); #else snprintf ( path, 254, "%s/fonts/%s", DEFAULT_ASSETS, file ); if ( access ( path, F_OK ) ) { fprintf ( stderr, "not found font: %s\n", path ); exit ( EXIT_FAILURE ); } struct stat st; stat ( path, &st; ); FILE *rw = fopen ( path, "r" ); char *memory = ( char * ) calloc ( st.st_size, 1 ); fread ( memory, 1, st.st_size, rw ); FT_New_Memory_Face ( *this->ft_library, ( const FT_Byte * ) memory, st.st_size, 0, &this;->face ); fclose ( rw ); free ( memory ); #endif

Я также создал файл заголовка для подключения заголовков SDL2. NO_SDL_GLEXT необходим для успешной компиляции на Android.

#ifdef __ANDROID__ #include "SDL.h" #include "SDL_video.h" #include "SDL_events.h" #define NO_SDL_GLEXT #include "SDL_opengl.h" #include "SDL_opengles2.h" #else #include <SDL2/SDL.h> #include <SDL2/SDL_video.h> #include <SDL2/SDL_opengl.h> #include <SDL2/SDL_opengles2.h> #endif

Итак, проект готов, шейдеры готовы для Opengl Es 3.0. Теперь нам нужно создать android-проект. Для этого распакуйте архив SDL2. Зайдите в скрипты сборки.

И мы делаем это вот так.



.

/androidbuild.sh com.xverizex.test main.cpp

Появится следующее сообщение.



To build and install to a device for testing, run the following: cd /home/cf/programs/SDL2-2.0.10/build/com.xverizex.test .

/gradlew installDebug

Перейдите на com.xverizex.test. Перейдите по адресу com.xverizex.test/app/jni/src. Копируем наш игровой проект. И меняем файл Android.mk, в моем случае он выглядит так.



LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := main SDL_PATH := .

/SDL FREETYPE_PATH := .

/Freetype2 LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include $(LOCAL_PATH)/$(FREETYPE_PATH)/include # Add your application source files here. LOCAL_SRC_FILES := .

/engine/lang.cpp .

/engine/actor.cpp .

/engine/sprite.cpp .

/engine/shaders.cpp .

/engine/box.cpp .

/engine/menubox.cpp .

/engine/load_manager.cpp .

/engine/main.cpp .

/engine/font.cpp .

/engine/model.cpp .

/engine/button.cpp .

/theme.cpp .

/level_manager.cpp .

/menu/menu.cpp LOCAL_SHARED_LIBRARIES := SDL2 Freetype2 LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog include $(BUILD_SHARED_LIBRARY)

Как вы, возможно, уже заметили, я также включаю библиотеку Freetype2. Нашёл на гитхабе готовый под андроид, но он не заработал, нужно было что-то изменить.

Мы также создаем каталог app/src/main/assets. Размещаем в нем наши ресурсы (шрифты, спрайты, 3D модели).

Теперь давайте настроим Freetype2 для Android. Скачать с моего github Связь и скопируйте каталог Freetype2 в каталог app/jni/.

Все готово.

Теперь запустите команду .

/gradlew installDebug в com.xverizex.test. Чтобы иметь возможность добавить эту игру на Android, в Android должна быть включена отладка.

Для этого вам нужно зайти в настройки, зайти в «Система», перейти в «О планшете» и около шести раз нажать опцию «Номер сборки».

Затем вернитесь назад и появится опция для разработчиков.

Зайдите и включите его, также включите опцию «Отладка по USB».

Теперь вам нужно получить ключ для планшета.

Для этого установите программу adb. Запускаем в консоли оболочку adb, и в планшете появляется ключ, который надо принять.

Всё, теперь игры можно скачивать на планшет. Теги: #*nix #Разработка игр #Android #Разработка Android #C++ #sdl2

Вместе с данным постом часто просматривают: