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