SDL2 projekto paruošimas veikti „Android“.

Sveiki visi. Šiandien apžvelgsime, kaip parengti projektą naudojant sdl2 biblioteką, kad būtų galima paleisti žaidimą „Android“.

Pirmiausia turite atsisiųsti Android Studio, įdiegti ją ir viską, ko reikia šioje kūrimo aplinkoje. Pavyzdžiui, dabar turiu Kde Neon, o šioje sistemoje yra failas /etc/environment, tas pats failas yra ir ubuntu. Ten reikia įvesti šiuos kintamuosius.

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

Taip pat turite atsisiųsti NDK iš oficialios svetainės, išpakuoti jį į savo namų katalogą ir pervadinti į NDK. Tada turite atsisiųsti SDL2 biblioteką iš svetainės libsdl.org. Norint naudoti sdl2 android, svarbu jo nekompiliuoti kompiuteriui, nes tada jis nebus kompiliuojamas android. Kad projektas būtų kompiliuojamas, reikia sukurti projektą android studijoje, bet kurioje, priimti licenciją, kitaip SDL2 kurdamas paprašys licencijos.

Norėdami nuskaityti failus „Android“ iš išteklių, turite naudoti SDL_RWops funkcijas. Čia pateikiamas darbo su šriftu naudojimo kode pavyzdys. Šiuo atveju negalime naudoti FT_New_Face, bet vietoj to naudosime FT_New_Memory_Face, kad naudotume jau nuskaitytus duomenis.

#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

Taip pat sukūriau antraštės failą SDL2 antraštėms prijungti. Norint, kad kompiliavimas būtų sėkmingas „Android“, reikalingas 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

Taigi projektas paruoštas, šešėliai paruošti Opengl Es 3.0. Dabar turime sukurti „Android“ projektą. Norėdami tai padaryti, išpakuokite SDL2 archyvą. Eikite į kūrimo scenarijus. Ir mes tai darome taip.

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

Pasirodys toks pranešimas.

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

Eikite į com.xverizex.test. Eikite į com.xverizex.test/app/jni/src. Nukopijuojame savo žaidimo projektą. Ir keičiame Android.mk failą, mano atveju jis atrodo taip.

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)

Kaip jau galbūt pastebėjote, įtraukiu ir Freetype2 biblioteką. Radau paruoštą github, skirtą android, bet jis neveikė, reikėjo kažką keisti. Taip pat sukuriame katalogą app/src/main/assets. Jame talpiname savo išteklius (šriftus, sprites, 3D modelius).

Dabar sukonfigūruokime „Freetype2“, skirtą „Android“. Atsisiųsti iš mano github ryšysir nukopijuokite Freetype2 katalogą į app/jni/ katalogą. Viskas paruošta. Dabar paleiskite komandą ./gradlew installDebug com.xverizex.test. Kad galėtumėte pridėti šį žaidimą prie „Android“, „Android“ turi būti įjungtas derinimas. Norėdami tai padaryti, turite eiti į nustatymus, eikite į „Sistema“, eikite į „Apie planšetinį kompiuterį“ ir maždaug šešis kartus spustelėkite parinktį „Sukurti numerį“. Tada grįžkite ir pasirodys kūrėjų parinktis. Įeikite ir įjunkite, taip pat įjunkite parinktį „USB derinimas“. Dabar reikia gauti planšetinio kompiuterio raktą. Norėdami tai padaryti, įdiekite adb programą. Konsolėje paleidžiame adb apvalkalą, o planšetiniame kompiuteryje pasirodo raktas, kurį reikia priimti. Viskas, dabar žaidimus galima atsisiųsti į planšetinį kompiuterį.

Šaltinis: www.habr.com

Добавить комментарий