Ho lokisa morero oa SDL2 o tla sebetsa ho Android

Lumelang bohle. Kajeno re tla sheba mokhoa oa ho lokisa morero ho sebelisa laeborari ea sdl2 ho tsamaisa papali ho Android.

Pele o hloka ho jarolla Studio ea Android, ho e kenya le tsohle tse hlokahalang tikolohong ena ea nts'etsopele. Ka mohlala, hona joale ke na le Kde Neon, 'me tsamaisong ena ho na le faele /etc/tikoloho, faele e tšoanang e teng ho ubuntu. Lintlha tse latelang li hloka ho kenngoa moo.

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

U boetse u hloka ho khoasolla NDK webosaeteng ea semmuso, u e lokolle bukeng ea hau ea lapeng ebe u e reha NDK. E latelang o hloka ho khoasolla laebrari ea SDL2 webosaeteng libsdl.org. Ho sebelisa sdl2 bakeng sa android, ke habohlokoa hore u se ke ua e bokella bakeng sa k'homphieutha, hobane ka nako eo e ke ke ea bokella bakeng sa android. E le hore morero o kopane, o hloka ho theha morero ho android studio, mang kapa mang, ho amohela laesense, ho seng joalo SDL2 e tla kopa laesense ha u haha.

Ho bala lifaele ho android ho tsoa ho thepa, o hloka ho sebelisa ts'ebetso ea SDL_RWops. Mona ke mohlala oa tšebeliso ea khoutu bakeng sa ho sebetsa ka fonte. Tabeng ena, re ke ke ra sebelisa FT_New_Face, empa ho e-na le hoo, re tla sebelisa FT_New_Memory_Face ho sebelisa lintlha tse seng li baliloe.

#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

Ke boetse ke thehile faele ea hlooho ho hokahanya lihlooho tsa SDL2. NO_SDL_GLEXT ea hlokahala bakeng sa ho kopanya ho atleha ho 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

Kahoo morero o se o lokile, li-shaders li se li loketse Opengl Es 3.0. Joale re hloka ho theha projeke ea android. Ho etsa sena, bula polokelo ea polokelo ea SDL2. Eya ho build-scripts. 'Me re etsa joalo.

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

Molaetsa o latelang o tla hlaha.

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

Eya ho com.xverizex.test. Eya ho com.xverizex.test/app/jni/src. Re kopitsa morero oa rona oa papali. 'Me re fetola faele ea Android.mk, tabeng ea ka e shebahala tjena.

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)

Joalokaha e ka 'na eaba u se u hlokometse, ke kenyelletsa laebrari ea Freetype2. Ke fumane e lokiselitsoeng ho github bakeng sa android, empa ha ea ka ea sebetsa, ke ne ke hloka ho fetola ho hong. Re boetse re theha directory app/src/main/assets. Re beha lisebelisoa tsa rona ho eona (lifonti, li-sprites, mehlala ea 3D).

Joale ha re lokiseng Freetype2 bakeng sa Android. Khoasolla ho tsoa ho github ea ka Link, 'me u kopitse bukana ea Freetype2 ho app/jni/ directory. Tsohle di lokile. Joale tsamaisa taelo ./gradlew installDebug ho com.xverizex.test. Ho khona ho kenya papali ena ho android, debugging e tlameha ho lumelloa ho android. Ho etsa sena, o lokela ho ea ho li-setting, u ee "System", u ee ho "About tablet" 'me u tobetse khetho ea "Haha nomoro" ka makhetlo a tšeletseng. Ebe u khutlela morao 'me khetho ea bahlahisi e tla hlaha. Kena 'me u e bulele, hape o bulele khetho ea "USB Debugging". Hona joale o hloka ho fumana senotlolo bakeng sa letlapa. Ho etsa sena, kenya lenaneo la adb. Re qala khetla ea adb ka har'a console, 'me senotlolo se hlaha letlapeng le lokelang ho amoheloa. Ke eona, hona joale lipapali li ka khoasolloa letlapeng la hau.

Source: www.habr.com

Eketsa ka tlhaloso