Android рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП SDL2 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рддреИрдпрд╛рд░ рдХрд░рдирд╛

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред рдЖрдЬ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЧреЗрдо рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП sdl2 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреИрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдм рдХреЗрдбреА рдирд┐рдпреЙрди рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдПрдХ / etc / рдкрд░реНрдпрд╛рд╡рд░рдг рдлрд╝рд╛рдЗрд▓ рд╣реИ, рд╡рд╣реА рдлрд╝рд╛рдЗрд▓ ubuntu рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рд╡рд╣рд╛рдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

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

рдЖрдкрдХреЛ рдПрдирдбреАрдХреЗ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдкрдиреЗ рдШрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдирдбреАрдХреЗ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ libsdl.org рд╕реЗ SDL2 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреА рд╣реЛрдЧреА ред рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП sdl2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХрд┐рд╕реА рдХреЛ рднреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдпрдерд╛, рдПрд╕рдбреАрдПрд▓ 2 рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдЖрдк рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВрдЧреЗред

рд╕рдВрдкрддреНрддрд┐ рд╕реЗ 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 рд╣реЗрдбрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рднреА рдмрдирд╛рдИред рд╕рдВрдХрд▓рди рдХреЛ Android рдХреЗ рд▓рд┐рдП рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП 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 

рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рддреИрдпрд╛рд░ рд╣реИ, рд╢реЗрдб рдУрдкреЗрдВрдЧрд▓ рдИрдПрд╕ 3.0 рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЕрдм рдЖрдкрдХреЛ android-project рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 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 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рднреА рдХрдиреЗрдХреНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЬреАрдердм рдкрд░ рдПрдХ рддреИрдпрд╛рд░ рдПрдХ рдорд┐рд▓ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореБрдЭреЗ рдХреБрдЫ рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / src / рдореБрдЦреНрдп / рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВред рд╣рдо рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ (рдлреЛрдВрдЯ, рд╕реНрдкреНрд░рд╛рдЗрдЯ, 3 рдбреА рдореЙрдбрд▓)ред

рдЕрдм Android рдХреЗ рд▓рд┐рдП Freetype2 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдореЗрд░реЗ github рд▓рд┐рдВрдХ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ , рдФрд░ Freetype2 рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдРрдк / jni / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВред рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рдЕрдм com.xverizex.test рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ ред/gradlew installDebugред рдЗрд╕ рдЧреЗрдо рдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдПрдВ, "рд╕рд┐рд╕реНрдЯрдо" рдкрд░ рдЬрд╛рдПрдВ, "рдЯреЗрдмрд▓реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ" рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЫрд╣ рдмрд╛рд░ "рдмрд┐рд▓реНрдб рдирдВрдмрд░" рд╡рд┐рдХрд▓реНрдк рджрдмрд╛рдПрдВред рдлрд┐рд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рд╣рдо рдЕрдВрджрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, "рдпреВрдПрд╕рдмреА рдбрд┐рдмрдЧрд┐рдВрдЧ" рд╡рд┐рдХрд▓реНрдк рдХреЛ рднреА рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рдЖрдкрдХреЛ рдЯреЗрдмрд▓реЗрдЯ рдХреА рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрджрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдбреАрдмреА рд╢реЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдВрдЬреА рдЯреИрдмрд▓реЗрдЯ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рдЕрдм рдЧреЗрдо рдХреЛ рдЯреИрдмрд▓реЗрдЯ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi484526/


All Articles