Android-də işləmək üçün SDL2 layihəsi hazırlanır

Hamıya salam. Bu gün biz Android-də oyunu idarə etmək üçün sdl2 kitabxanasından istifadə edərək layihənin necə hazırlanacağını görəcəyik.

Əvvəlcə Android Studio-nu yükləməli, onu quraşdırmalı və bu inkişaf mühitində tələb olunan hər şeyi etməlisiniz. Məsələn, məndə hazırda Kde Neon var və bu sistemdə /etc/environment faylı var, eyni fayl ubuntuda da var. Orada belə dəyişənləri qeydiyyatdan keçirmək lazımdır.

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

Siz həmçinin NDK-nı rəsmi saytdan yükləməli, onu ev kataloqunuza çıxarmalı və adını NDK olaraq dəyişdirməlisiniz. Sonra, saytdan SDL2 kitabxanasını yükləməlisiniz libsdl.org. Android üçün sdl2 istifadə etmək üçün onu kompüter üçün tərtib etməmək vacibdir, çünki o, android üçün tərtib etməyəcək. Layihənin tərtib edilməsi üçün lisenziyanı qəbul etmək üçün hər hansı bir android studiyasında layihə yaratmalısınız, əks halda SDL2 qurarkən lisenziya tələb olunacaq.

Aktivlərdən Android-də faylları oxumaq üçün siz SDL_RWops funksiyalarından istifadə etməlisiniz. Burada şriftlə işləmək üçün kodda istifadə nümunəsidir. Bu halda, biz FT_New_Face-dən istifadə edə bilmərik, əksinə, artıq oxunmuş məlumatları istifadə etmək üçün FT_New_Memory_Face-dən istifadə edəcəyik.

#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

Həmçinin SDL2 başlıqlarını birləşdirmək üçün başlıq faylı yaratdım. Android üçün uğurlu tərtib etmək üçün NO_SDL_GLEXT tələb olunur.

#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

Beləliklə, layihə hazırdır, şeyderlər Opengl Es 3.0 üçün hazırdır. İndi bir android-layihə yaratmalıyıq. Bunu etmək üçün SDL2 arxivini açın. Quraşdırma skriptlərinə keçin. Və biz belə edirik.

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

Bu mesaj görünəcək.

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

com.xverizex.test saytına keçin. com.xverizex.test/app/jni/src ünvanına keçin. Oyun layihənizi kopyalayın. Və biz Android.mk faylını dəyişdiririk, mənim vəziyyətimdə bu belə görünür.

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)

Bildiyiniz kimi, mən Freetype2 kitabxanasını da daxil edirəm. Mən android üçün github-da hazır tapdım, amma alınmadı, nəyisə dəyişməli oldum. Biz həmçinin app/src/main/assets kataloqunu yaradırıq. Biz öz resurslarımızı ora qoyuruq (şriftlər, spritlər, 3d modellər).

İndi Android üçün Freetype2-ni quraşdıraq. Mənim github-dan yükləyin əlaqə, və Freetype2 kataloqunu app/jni/ qovluğuna köçürün. Hamısı hazırdır. İndi com.xverizex.test-də ./gradlew installDebug əmrini işlədirik. Bu oyunu Android-ə əlavə etmək üçün Android-də sazlama aktivləşdirilməlidir. Bunu etmək üçün parametrlərə keçməlisiniz, "Sistem"ə keçin, "Planş haqqında" bölməsinə keçin və təxminən altı dəfə "Quraşdırma nömrəsi" seçimini basın. Sonra geri qayıdın və tərtibatçılar üçün seçim görünəcək. Biz daxil oluruq və onu yandırırıq, həmçinin "USB vasitəsilə sazlama" seçimini yandırırıq. İndi planşetin açarını almalıyıq. Bunun üçün adb proqramını quraşdırın. Konsolda adb qabığını işə salırıq və planşetdə qəbul edilməli olan bir açar görünür. Hər şey, indi oyunları tabletə yükləmək olar.

Mənbə: www.habr.com

Добавить комментарий