Hej alle. I dag vil vi se, hvordan man forbereder et projekt ved hjælp af sdl2-biblioteket til at køre spillet på Android.
Først skal du downloade Android Studio, installer det og alt andet, der kræves til dette udviklingsmiljø. For eksempel har jeg i øjeblikket KDE Neon, og i dette system er der en fil /etc/environment, og den samme fil findes i ubuntuDu skal registrere følgende variabler der.
ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk
Du skal også downloade NDK fra den officielle side, udpakke den til din hjemmemappe og omdøbe den til NDK. Dernæst skal du downloade SDL2-biblioteket fra webstedet . For at bruge sdl2 til Android er det vigtigt ikke at kompilere det til computer, for så vil det ikke kompilere til Android. For at projektet kan kompilere, skal du oprette et projekt i Android Studio, en hvilken som helst, for at acceptere licensen, ellers vil det bede om en licens, når du bygger SDL2.
For at læse filer i Android fra aktiver skal du bruge SDL_RWops-funktionerne. Her er et eksempel på at bruge det i kode til at arbejde med en skrifttype. I dette tilfælde kan vi ikke bruge FT_New_Face, men i stedet vil vi bruge FT_New_Memory_Face til at bruge de allerede læste data.
#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
Jeg har også oprettet en header-fil, der inkluderer SDL2-headere. NO_SDL_GLEXT er nødvendig for at kompileringen kan lykkes. 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
Så projektet er klar, shaders er klar til Opengl Es 3.0. Nu skal vi lave et Android-projekt. For at gøre dette skal du pakke arkivet SDL2 ud. Gå til build-scripts. Og det gør vi.
./androidbuild.sh com.xverizex.test main.cpp
Denne meddelelse vises.
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
Gå til com.xverizex.test. Gå til com.xverizex.test/app/jni/src. Kopiér dit spilprojekt. Og rediger filen. Android.mk, i mit tilfælde ser det sådan ud.
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)
Som du måske har bemærket, inkluderer jeg også Freetype2-biblioteket. Jeg fandt en færdiglavet en på github til android, men den virkede ikke, jeg var nødt til at ændre noget. Vi opretter også mappen app/src/main/assets. Vi lægger vores ressourcer i det (skrifttyper, sprites, 3d-modeller).
Lad os nu sætte Freetype2 op til AndroidDownload fra min GitHub , og kopier Freetype2-mappen til app/jni/-mappen. Alt er klar. Nu kører vi kommandoen ./gradlew installDebug i com.xverizex.test. For at kunne tilføje dette spil til Android, skal fejlfinding være aktiveret i Android. For at gøre dette skal du gå til indstillingerne, gå til "System", gå til "Om tablet" og trykke på "Byg nummer"-indstillingen omkring seks gange. Gå derefter tilbage, og muligheden for udviklere vises. Vi går ind og tænder den, tænder også for muligheden "Fejlretning via USB". Nu skal vi have nøglen til tabletten. For at gøre dette skal du installere adb-programmet. Vi starter adb-skallen i konsollen, og der kommer en nøgle op på tabletten, som skal accepteres. Alt, nu kan spillene downloades til tabletten.
Kilde: www.habr.com
