Hoi allegearre. Hjoed sille wy sjen nei hoe't jo in projekt tariede mei de sdl2-bibleteek om in spultsje op Android út te fieren.
Earst moatte jo Android Studio downloade, it ynstallearje en alles dat nedich is yn dizze ûntwikkelingsomjouwing. Bygelyks, ik haw no Kde Neon, en op dit systeem is d'r in triem /etc/environment, itselde bestân bestiet yn ubuntu. De folgjende fariabelen moatte dêr ynfierd wurde.
ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk
Jo moatte ek NDK downloade fan 'e offisjele webside, it útpakke yn jo thúsmap en omneame it nei NDK. Folgjende moatte jo de SDL2-bibleteek downloade fan 'e webside
Om bestannen yn Android te lêzen fan aktiva, moatte jo de SDL_RWops-funksjes brûke. Hjir is in foarbyld fan gebrûk yn koade foar wurkjen mei in lettertype. Yn dit gefal kinne wy FT_New_Face net brûke, mar sille ynstee FT_New_Memory_Face brûke om de gegevens te brûken dy't al lêzen binne.
#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
Ik haw ek in kopteksttriem makke om SDL2-koppen te ferbinen. NO_SDL_GLEXT is nedich foar kompilaasje om te slagjen op 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
Dat it projekt is klear, de shaders binne klear foar Opengl Es 3.0. No moatte wy in android-projekt oanmeitsje. Om dit te dwaan, útpakke it SDL2-argyf. Gean nei build-skripts. En wy dogge it sa.
./androidbuild.sh com.xverizex.test main.cpp
It folgjende berjocht sil ferskine.
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
Gean nei com.xverizex.test. Gean nei com.xverizex.test/app/jni/src. Wy kopiearje ús spultsje projekt. En wy feroarje it Android.mk-bestân, yn myn gefal sjocht it der sa út.
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)
Lykas jo miskien al opmurken hawwe, befetsje ik ek de Freetype2-bibleteek. Ik fûn in klear makke op github foar android, mar it wurke net, ik moast wat feroarje. Wy meitsje ek in mapapp/src/main/assets. Wy pleatse ús boarnen deryn (lettertypen, sprites, 3D-modellen).
Litte wy no Freetype2 foar Android konfigurearje. Download fan myn github
Boarne: www.habr.com