Příprava projektu SDL2 ke spuštění na Androidu

Ahoj všichni. Dnes se podíváme, jak připravit projekt pomocí knihovny sdl2 pro spuštění hry na Androidu.

Nejprve si musíte stáhnout Android Studio, nainstalovat jej a vše, co je v tomto vývojovém prostředí vyžadováno. Například aktuálně mám Kde Neon a na tomto systému je soubor /etc/environment, stejný soubor existuje v ubuntu. Tam je nutné takové proměnné registrovat.

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

Musíte si také stáhnout NDK z oficiálních stránek, rozbalit jej do svého domovského adresáře a přejmenovat na NDK. Dále si musíte z webu stáhnout knihovnu SDL2 libsdl.org. Chcete-li použít sdl2 pro Android, je důležité jej nezkompilovat pro počítač, protože pak nebude kompilován pro Android. Aby se projekt zkompiloval, musíte vytvořit projekt v android studiu, jakýkoli, abyste přijali licenci, jinak při sestavování SDL2 požádá o licenci.

Chcete-li číst soubory v systému Android z prostředků, musíte použít funkce SDL_RWops. Zde je příklad použití v kódu pro práci s písmem. V tomto případě nemůžeme použít FT_New_Face, ale místo toho použijeme FT_New_Memory_Face k použití již přečtených dat.

#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: %sn", 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

Také jsem vytvořil soubor záhlaví pro připojení záhlaví SDL2. Pro úspěšnou kompilaci pro Android je vyžadován NO_SDL_GLEXT.

#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

Takže projekt je připraven, shadery jsou připraveny pro Opengl Es 3.0. Nyní musíme vytvořit projekt pro Android. Chcete-li to provést, rozbalte archiv SDL2. Přejděte na build-scripts. A my tak činíme.

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

Tato zpráva se objeví.

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

Přejděte na com.xverizex.test. Přejděte na com.xverizex.test/app/jni/src. Zkopírujte svůj herní projekt. A změníme soubor Android.mk, v mém případě to vypadá takto.

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)

Jak jste si mohli všimnout, zahrnujem i knihovnu Freetype2. Našel jsem hotový na githubu pro android, ale nefungoval, musel jsem něco změnit. Vytvoříme také adresář app/src/main/assets. Vkládáme do něj naše zdroje (fonty, sprity, 3D modely).

Nyní nastavíme Freetype2 pro Android. Stáhnout z mého githubu Odkaza zkopírujte adresář Freetype2 do adresáře app/jni/. Vše je připraveno. Nyní spustíme příkaz ./gradlew installDebug v com.xverizex.test. Aby bylo možné přidat tuto hru do Androidu, musí být v Androidu povoleno ladění. Chcete-li to provést, musíte jít do nastavení, přejděte na „Systém“, přejděte na „O tabletu“ a asi šestkrát klikněte na možnost „Číslo sestavení“. Poté se vraťte a objeví se možnost pro vývojáře. Jdeme dovnitř a zapneme, také zapneme možnost „Ladění přes USB“. Nyní potřebujeme získat klíč k tabletu. Chcete-li to provést, nainstalujte program adb. Spustíme adb shell v konzole a na tabletu se objeví klíč, který je třeba přijmout. Vše, nyní lze hry stáhnout do tabletu.

Zdroj: www.habr.com

Přidat komentář