Moien alleguer. Haut wäerte mir kucken wéi e Projet mat der sdl2 Bibliothéik virbereet fir e Spill op Android ze lafen.
Als éischt musst Dir Android Studio eroflueden, installéieren an alles wat an dësem Entwécklungsëmfeld erfuerderlech ass. Zum Beispill hunn ech elo Kde Neon, an op dësem System gëtt et eng Datei /etc/environment, déi selwecht Datei existéiert op Ubuntu. Déi folgend Variabelen mussen do agefouert ginn.
ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk
Dir musst och NDK vun der offizieller Websäit eroflueden, et an Ärem Heemverzeichnis auspacken an et op NDK ëmbenennen. Als nächst musst Dir d'SDL2 Bibliothéik vun der Websäit eroflueden
Fir Dateien op Android aus Verméigen ze liesen, musst Dir d'SDL_RWops Funktiounen benotzen. Hei ass e Beispill vu Gebrauch am Code fir mat enger Schrëft ze schaffen. An dësem Fall kënne mir FT_New_Face net benotzen, mee wäerten amplaz FT_New_Memory_Face benotzen fir d'Donnéeën ze benotzen déi scho gelies goufen.
#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
Ech hunn och eng Headerdatei erstallt fir SDL2 Header ze verbannen. NO_SDL_GLEXT ass gebraucht fir d'Kompilatioun op Android erfollegräich ze sinn.
#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
Also de Projet ass prett, d'Shaders si prett fir Opengl Es 3.0. Elo musse mir en Android-Projet erstellen. Fir dëst ze maachen, packt de SDL2 Archiv aus. Gitt op Build-Skripte. A mir maachen et esou.
./androidbuild.sh com.xverizex.test main.cpp
De folgende Message wäert schéngen.
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
Gitt op com.xverizex.test. Gitt op com.xverizex.test/app/jni/src. Mir kopéieren eise Spillprojet. A mir änneren d'Android.mk Datei, a mengem Fall gesäit et esou aus.
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)
Wéi Dir vläicht scho gemierkt hutt, enthalen ech och d'Freetype2 Bibliothéik. Ech hunn e fäerdeg gemaach op github fir Android fonnt, awer et huet net geschafft, ech muss eppes änneren. Mir erstellen och eng Verzeechnes App/src/main/assets. Mir setzen eis Ressourcen dran (Schrëften, Sprites, 3D Modeller).
Loosst eis elo Freetype2 fir Android konfiguréieren. Download vu mengem Github
Source: will.com