Tionscadal SDL2 a ullmhú le rith ar Android

Dia duit gach duine. Inniu beimid ag féachaint ar conas tionscadal a ullmhú ag baint úsáide as an leabharlann sdl2 chun cluiche a reáchtáil ar Android.

Ar dtús ní mór duit Android Studio a íoslódáil, é a shuiteáil agus gach rud atá ag teastáil sa timpeallacht forbartha seo. Mar shampla, tá Kde Neon agam anois, agus ar an gcóras seo tá comhad /etc/environment, tá an comhad céanna i ubuntu. Ní mór na hathróga seo a leanas a chur isteach ann.

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

Ní mór duit freisin NDK a íoslódáil ón láithreán gréasáin oifigiúil, é a dhíphacáil isteach i do eolaire baile agus é a athainmniú go NDK. Ansin caithfidh tú an leabharlann SDL2 a íoslódáil ón suíomh Gréasáin libsdl.org. Chun sdl2 a úsáid le haghaidh android, tá sé tábhachtach gan é a thiomsú don ríomhaire, mar ansin ní thiomsóidh sé le haghaidh android. Chun an tionscadal a thiomsú, ní mór duit tionscadal a chruthú i stiúideo android, aon cheann, chun glacadh leis an gceadúnas, nó iarrfaidh SDL2 ceadúnas agus tú ag tógáil.

Chun comhaid in android ó shócmhainní a léamh, ní mór duit na feidhmeanna SDL_RWops a úsáid. Seo sampla úsáide i gcód chun oibriú le cló. Sa chás seo, ní féidir linn FT_New_Face a úsáid, ach ina ionad sin úsáidfimid FT_New_Memory_Face chun na sonraí atá léite cheana féin a úsáid.

#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

Chruthaigh mé comhad ceanntásca freisin chun ceanntásca SDL2 a nascadh. Tá NO_SDL_GLEXT ag teastáil le go n-éireoidh le tiomsú ar 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

Mar sin tá an tionscadal réidh, tá na shaders réidh le haghaidh Opengl Es 3.0. Anois caithfimid tionscadal android a chruthú. Chun seo a dhéanamh, díphacáil an chartlann SDL2. Téigh go dtí tógáil-scripts. Agus déanaimid é mar seo.

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

Beidh an teachtaireacht seo a leanas le feiceáil.

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

Téigh go dtí com.xverizex.test. Téigh go dtí com.xverizex.test/app/jni/src. Déanaimid cóip dár dtionscadal cluiche. Agus athraíonn muid an comhad Android.mk, i mo chás tá sé mar seo.

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)

Mar a thug tú faoi deara cheana, tá leabharlann Freetype2 san áireamh agam freisin. Fuair ​​​​mé ceann réidh ar github le haghaidh android, ach níor oibrigh sé, bhí orm rud éigin a athrú. Cruthaímid aip eolaire/src/príomhshócmhainní freisin. Cuirimid ár n-acmhainní ann (clónna, sprites, samhlacha 3D).

Anois déanaimis Freetype2 a chumrú do Android. Íosluchtaigh ó mo github Nasc, agus cóipeáil an t-eolaire Freetype2 chuig an app/jni/ eolaire. Tá gach réidh. Anois reáchtáil an t-ordú ./gradlew installDebug i com.xverizex.test. Chun a bheith in ann an cluiche seo a chur le android, ní mór dífhabhtaithe a chumasú in android. Chun seo a dhéanamh, ní mór duit dul go dtí socruithe, téigh go dtí "Córas", téigh go dtí "About tablet" agus cliceáil ar an rogha "Tóg uimhir" thart ar sé huaire. Ansin, téigh ar ais agus beidh an rogha d'fhorbróirí le feiceáil. Téigh isteach agus cas air, cas ar an rogha "USB Dífhabhtaithe" freisin. Anois ní mór duit eochair a fháil don táibléad. Chun seo a dhéanamh, suiteáil an clár adb. Seolaimid an bhlaosc adb sa chonsól, agus tá eochair le feiceáil sa táibléad nach mór glacadh leis. Sin é, anois is féidir cluichí a íoslódáil chuig do tablet.

Foinse: will.com

Add a comment