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 eroflueden Android Studio, installéiert et, an alles anescht wat fir dës Entwécklungsumgebung gebraucht gëtt. Zum Beispill, ech hunn de Moment KDE Neon, an an dësem System gëtt et eng Datei /etc/environment, an déiselwecht Datei existéiert an ubuntuDir musst do déi folgend Variabelen registréieren.
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 sdl2 fir Android ze benotzen, ass et wichteg et net fir de Computer ze kompiléieren, well et dann net fir Android kompiléiert gëtt. Fir de Projet ze kompiléieren, musst Dir e Projet am Android Studio erstellen, iergendeen, fir d'Lizenz ze akzeptéieren, soss freet SDL2 eng Lizenz beim Bauen.
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 Header-Datei erstallt, déi SDL2-Headeren enthält. NO_SDL_GLEXT ass néideg, fir datt d'Kompilatioun erfollegräich ass. 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
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. Kopéiert Äert Spillprojet. An ännert d'Datei. Android.mk, 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).
Elo loosst eis Freetype2 opstellen fir AndroidVun mengem GitHub eroflueden , a kopéiert de Freetype2 Verzeichnis an den App/jni/ Verzeichnis. Alles ass prett. Fuert elo de Kommando ./gradlew installDebug an com.xverizex.test. Fir dëst Spill op Android ze addéieren, muss Debugging an Android aktivéiert sinn. Fir dëst ze maachen, musst Dir op d'Astellunge goen, op "System" goen, op "Iwwer Tablet" a klickt op d'Optioun "Build Number" ongeféier sechs Mol. Da gitt zréck an d'Optioun fir Entwéckler erschéngt. Gitt an a schalt et op, schalt och d'Optioun "USB Debugging" un. Elo musst Dir e Schlëssel fir den Tablet kréien. Fir dëst ze maachen, installéiert den adb Programm. Mir starten d'adb Shell an der Konsole, an e Schlëssel erschéngt am Tablet deen akzeptéiert muss ginn. Dat ass et, elo kënnen Spiller op Ärem Tablet erofgeluede ginn.
Source: will.com
