SDL2 նախագծի պատրաստման գործընթացը Android-ում գործարկելու համար

Բարև բոլորը։ Այսօր մենք կդիտարկենք, թե ինչպես պատրաստել նախագիծ sdl2 գրադարանից, որպեսզի խաղը գործի Android-ում:

Եռություն առաջինը, պետք է ներբեռնել Android Studio-ն, տեղադրել այն և ամեն ինչ, ինչ անհրաժեշտ է այս միջավայրում մշակելու համար։ Օրինակ, ինձ մոտ այժմ Kde Neon է, և այս համակարգում կա ֆայլ etcenvironment, այնպես जैसे ֆայլ կա նաև ubuntu-ում։ Այնտեղ անհրաժեշտ է գրել հետևյալ փոփոխականները։

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

Նաեւ անհրաժեշտ է ներբեռնել NDK պաշտոնական կայքից, unpack այն տնային կատեգորիա և վերանվանել այն NDK: Այնուհետև անհրաժեշտ է ներբեռնել SDL2 գրադարանը `libsdl.org` կայքից: . SdL2-ի օգտագործման համար Android-ում, կարևոր է, որ այն չկառուցվի համակարգչի համար, քանի որ հակառակ դեպքում այն չի հավաքվի Android-ի համար: Նախագիծը հավաքելու համար պետք է ստեղծել նախագիծ Android Studio-ում, ցանկացած, որպեսզի ընդունել լիցենզիան, այլապես SDL2-ը հավաքման ժամանակ պահանջելու է լիցենզիա:Android-ում assets-ից ֆայլեր ընթերցելու համար անհրաժեշտ է օգտագործել SDL_RWops ֆունկցիաները: Ստորև օրինակ կոդում, որը վերաբերում է 字体 (font)-ի աշխատելուն: Այս դեպքում մենք չենք կարող օգտագործել FT_New_Face, իսկ դրա փոխարեն ներգրավել ենք FT_New_Memory_Face, որպեսզի օգտագործենք արդեն կարդացված տվյալները:

Ինձ առաջարկվել է նաև ստեղծել SDL2 ֆայլի գլխագիր: NO_SDL_GLEXT պետք է, որպեսզի կուտակումը ճիշտ անցնի Android-ի համար:

#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

Այսպիսով, նախագիծն արդեն պատրաստ է, շեդերները պատրաստ են Opengl Es 3.0-ի համար: Հիմա պետք է создать android-project: Այդ նպատակով unpack անում ենք SDL2 արխիվը: Մուտք ենք գործում build-scripts, ու կատարվում է այնպես:

#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

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

Այսպիսով, կհայտնվի հետևյալ հաղորդագրությունը:

Դա սարքի վրա հավաքելու և տեղադրելու համար, պետք է կատարել հետևյալը: cd \/home\/cf\/programs\/SDL2-2.0.10\/build\/com.xverizex.test .\/gradlew installDebug

Օրինակ, մուտք ենք գործում com.xverizex.test: մուտք ենք գործում com.xverizex.test\/app\/jni\/src: Կոպի՛րում ենք մեր խաղի նախագիծը: Եվ փոխում ենք Android.mk ֆայլին, իմ դեպքում դա выглядит так:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := mainSDL_PATH := ..\/SDL FREETYPE_PATH := ..\/Freetype2LOCAL_C_INCLUDES := $(LOCAL_PATH)\/$(SDL_PATH)\/include $(LOCAL_PATH)\/$(FREETYPE_PATH)\/include# Այստեղ պետք է ավելացնել ձեր հավելվածի աղբյուրի ֆայլերը... 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.cppLOCAL_SHARED_LIBRARIES := SDL2 Freetype2LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -lloginclude $(BUILD_SHARED_LIBRARY)

Ինչպես արդեն նկատել եք, ես ավելացնում եմ նաև Freetype2 գրադարանը: Ես գտել եմ արդեն պատրաստված GitHub-ում Android-ի համար, բայց այն աշխատելուց մերժել է, հարկավոր էր մի քանի բան փոխել: Նաեւ ստեղծում ենք каталог app\/src\/main\/assets: Այցե մեր ռեսուրսները ( գրառումները, սփրայթները, 3D մոդելները ):

Այժմ կարգավորենք Freetype2-ը Android-ի համար: Ներբռնում ենք իմ GitHub-ից:

Link Link, և Freetype2 կատալոգը պատճենում ենք app/jni/ կատալոգ։ Ամեն բան պատրաստ է։ Այժմ запускаем команду в com.xverizex.test . /gradlew installDebug։ Android-ի համար այս խաղը ավելացնելու համար android-ում պետք է ակտիվացվի կատարումը։ Bunun için настроить нужно перейти в настройки, перейти в «Система», перейти в «О планшете» и нажать շուրջ տասը անգամ «Номер сборки» ընտրությունը։ Դրանից հետո պետք է վերադառնանք և կհայտնվի զարգացման ընտրություն։ Ներկա ենք և ակտիվացնում, նաև ակտիվացնում ենք «USB-ով կատարումը» ընտրությունը։ Այժմ անհրաժեշտ է ստանալ բանալին: Bunun için устанавливаем программ adb։ Запускаем консоли adb shell и на планшете появляется ключ, который необходимо принять։ Ամեն ինչ, հիմա խաղերը կարող են հանգստացվել планшետում։

Ընտանիք: habr.com

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster