Notiek SDL2 projekta sagatavošana darbam operētājsistēmā Android

Sveiki visiem. Šodien mēs apskatīsim, kā sagatavot projektu, izmantojot sdl2 bibliotēku, lai palaistu spēli operētājsistēmā Android.

Vispirms jālejupielādē Android Studio, jāinstalē un viss, kas nepieciešams šajā izstrādes vidē. Piemēram, man tagad ir Kde Neon, un šajā sistēmā ir fails /etc/environment, tas pats fails pastāv ubuntu. Tur jāievada šādi mainīgie.

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

Jums arī jālejupielādē NDK no oficiālās vietnes, jāizpako tas savā mājas direktorijā un jāpārdēvē par NDK. Tālāk no vietnes jālejupielādē SDL2 bibliotēka libsdl.org. Lai izmantotu sdl2 priekš android, svarīgi to nekompilēt datoram, jo ​​tad tas netiks kompilēts android. Lai projekts varētu kompilēties, jums ir jāizveido projekts android studio, jebkurā, lai pieņemtu licenci, pretējā gadījumā SDL2 pieprasīs licenci, veidojot.

Lai Android ierīcē nolasītu failus no līdzekļiem, jums ir jāizmanto SDL_RWops funkcijas. Šeit ir piemērs izmantošanai kodā darbam ar fontu. Šajā gadījumā mēs nevaram izmantot FT_New_Face, bet tā vietā izmantosim FT_New_Memory_Face, lai izmantotu jau nolasītos datus.

#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

Es arī izveidoju galvenes failu, lai savienotu SDL2 galvenes. NO_SDL_GLEXT ir nepieciešams, lai kompilācija būtu veiksmīga operētājsistēmā 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

Tātad projekts ir gatavs, ēnotāji ir gatavi Opengl Es 3.0. Tagad mums ir jāizveido android projekts. Lai to izdarītu, izsaiņojiet SDL2 arhīvu. Dodieties uz build-scripts. Un mēs to darām šādi.

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

Tiks parādīts šāds ziņojums.

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

Dodieties uz com.xverizex.test. Dodieties uz com.xverizex.test/app/jni/src. Mēs kopējam mūsu spēles projektu. Un mēs mainām Android.mk failu, manā gadījumā tas izskatās šādi.

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)

Kā jūs, iespējams, jau pamanījāt, es iekļauju arī Freetype2 bibliotēku. Es atradu gatavu github for Android, bet tas nedarbojās, man vajadzēja kaut ko mainīt. Mēs arī izveidojam direktoriju app/src/main/assets. Mēs tajā ievietojam savus resursus (fontus, spraitus, 3D modeļus).

Tagad konfigurēsim Freetype2 operētājsistēmai Android. Lejupielādēt no mana github saite, un kopējiet Freetype2 direktoriju uz app/jni/ direktoriju. Viss ir gatavs. Tagad failā com.xverizex.test palaidiet komandu ./gradlew installDebug. Lai varētu pievienot šo spēli operētājsistēmai Android, operētājsistēmā Android ir jāiespējo atkļūdošana. Lai to izdarītu, atveriet iestatījumus, atveriet sadaļu "Sistēma", dodieties uz "Par planšetdatoru" un apmēram sešas reizes noklikšķiniet uz opcijas "Build number". Pēc tam atgriezieties un parādīsies izstrādātāju opcija. Ieejiet un ieslēdziet to, kā arī ieslēdziet opciju “USB atkļūdošana”. Tagad jums ir jāsaņem planšetdatora atslēga. Lai to izdarītu, instalējiet programmu adb. Mēs palaižam adb apvalku konsolē, un planšetdatorā parādās atslēga, kas ir jāpieņem. Tas arī viss, tagad spēles var lejupielādēt planšetdatorā.

Avots: www.habr.com

Pievieno komentāru