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