SDL2 projekti ettevalmistamine Androidi käitamiseks

Tere kõigile. Täna vaatame, kuidas valmistada projekt ette sdl2 raamatukogu kasutamiseks mängu lansseerimiseks Androidis.

Kõigepealt tuleb alla laadida Android Studio, installida see ja kõik vajalikud arenduskeskkonna osad. Näiteks mul on praegu Kde Neon, ja sellel süsteemil on fail /etc/environment, sarnane fail on ka ubuntul. Seal tuleb seada järgmised muutujad.

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

Samuti tuleb alla laadida NDK ametlikult veebilehelt, lahti pakkida see kodukatalooge ja ümber nimetada NDK-ks. Edasi tuleb alla laadida SDL2 raamatukogu saidilt libsdl.org. Et kasutada sdl2 Androidis, on oluline mitte seda arvutiks kompileerida, kuna siis see Androidile ei kompileeru. Projekti kompileerimiseks peate looma Android Studio's projekti, mis tahes, et aktsepteerida litsentsi, vastasel juhul küsib SDL2 koostamisel litsentsi.

Failide lugemiseks Androidis ressurssidest tuleb kasutada SDL_RWops funktsioone. Siin on näide koodist, mis töötab fondiga. Sellisel juhul ei saa me kasutada FT_New_Face, vaid kasutame FT_New_Memory_Face, et kasutada juba lugenud andmeid.

#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

Loomulikult olen loonud ka päisefaili SDL2 päiste lisamiseks. NO_SDL_GLEXT on vajalik, et kompileerimine toimuks edukalt Androidile.

#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

Nii et projekt on valmis, shaderid on valmis OpenGL ES 3.0 jaoks. Nüüd tuleb luua android-project. Selleks lahti pakkida SDL2 arhiiv. Siseneme build-scripts kataloogi. Ja teeme järgmist.

./androidbuild.sh com.xverizex.test main.cpp

Tuleb selline teade.

Testimiseks seadmele ehitamiseks ja installimiseks käivitage järgmine:
cd /home/cf/programs/SDL2-2.0.10/build/com.xverizex.test
./gradlew installDebug

Liigume com.xverizex.test kataloogi. Siseneme com.xverizex.test/app/jni/src. Kopeerime oma mänguprojekti. Ja muudame faili Android.mk, minu puhul näeb see välja selline.

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

# Lisage oma rakenduse allika failid siia...
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)

Nagu olete võib-olla juba märganud, lisan ka teise raamatukogu Freetype2. Leidsin selle juba valmistoote GitHubist Androidi jaoks, kuid see ei töötanud, tuli midagi muuta. Samuti loome katalooge app/src/main/assets. Paneme sinna oma ressursid (fondid, sprites, 3D mudelid).

Seame seadistame Freetype2 Androidile. Laadige alla minu github'ist Link, ja kopeerige Freetype2 kataloog app/jni/ kataloogi. Kõik on valmis. Nüüd käivitage komando .\/gradlew installDebug com.xverizex.test. Selleks, et saaksime selle mängu Androidisse lisada, peab Androidil olema lubatud silumine. Selle aktiveerimiseks minge seadistustesse, avage "Süsteem", seejärel "Teave tahvelarvuti kohta" ja vajutage umbes kuus korda valikut "Kogumi number". Seejärel minge tagasi ja ilmub arendajate valik. Siseneme ja lubame selle, samuti lubame "USB silumise" valiku. Nüüd peame tahvelarvuti jaoks võtme saama. Selleks installime adb programmi. Käivitage konsoolis adb shell ja tahvelarvutis ilmub võtme aknas, mille tuleb aktsepteerida. Kõik, nüüd saab mänge tahvelarvutisse laadida.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster