Kukonzekera pulojekiti ya SDL2 kuti igwire ntchito pa Android

Moni nonse. Lero tiwona momwe tingakonzekerere polojekiti pogwiritsa ntchito laibulale ya sdl2 kuyendetsa masewera pa Android.

Choyamba muyenera kutsitsa situdiyo ya Android, kuyiyika ndi zonse zomwe zimafunikira pachitukuko ichi. Mwachitsanzo, ndili ndi Kde Neon, ndipo pa dongosololi pali fayilo / etc/environment, fayilo yomweyi ilipo mu ubuntu. Zosintha zotsatirazi ziyenera kulowetsedwa pamenepo.

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

Muyeneranso kutsitsa NDK kuchokera patsamba lovomerezeka, kumasula mu bukhu lanyumba lanu ndikulitchanso NDK. Kenako muyenera kukopera SDL2 laibulale pa webusaiti libsdl.org. Kuti mugwiritse ntchito sdl2 ya android, ndikofunikira kuti musaphatikize pakompyuta, chifukwa sizingaphatikizidwe ndi android. Kuti polojekitiyi ipangidwe, muyenera kupanga pulojekiti mu studio ya android, aliyense, kuti avomereze chilolezo, apo ayi SDL2 idzapempha chilolezo pomanga.

Kuti muwerenge mafayilo amtundu wa android kuchokera kuzinthu, muyenera kugwiritsa ntchito ntchito za SDL_RWops. Nachi chitsanzo cha ntchito mu code pogwira ntchito ndi mafonti. Pankhaniyi, sitingagwiritse ntchito FT_New_Face, koma tidzagwiritsa ntchito FT_New_Memory_Face kugwiritsa ntchito zomwe zidawerengedwa kale.

#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

Ndinapanganso fayilo yamutu kuti mugwirizane ndi mitu ya SDL2. NO_SDL_GLEXT ndiyofunikira kuti muphatikize bwino pa 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

Chifukwa chake polojekitiyi yakonzeka, ma shaders ali okonzeka Opengl Es 3.0. Tsopano tiyenera kupanga android-projekiti. Kuti muchite izi, tsegulani mbiri ya SDL2. Pitani ku build-scripts. Ndipo timachita monga chonchi.

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

Uthenga wotsatira udzaonekera.

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

Pitani ku com.xverizex.test. Pitani ku com.xverizex.test/app/jni/src. Timakopera pulojekiti yathu yamasewera. Ndipo timasintha fayilo ya Android.mk, mwa ine ikuwoneka ngati iyi.

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)

Monga mwina mwazindikira kale, ndikuphatikizanso laibulale ya Freetype2. Ndinapeza okonzeka pa github kwa android, koma sizinagwire ntchito, ndinafunika kusintha chinachake. Timapanganso chikwatu app/src/main/assets. Timayikamo zinthu zathu (mafonti, ma sprites, mitundu ya 3D).

Tsopano tiyeni tikonze Freetype2 ya Android. Tsitsani ku github yanga Lumikizani, ndikukopera chikwatu cha Freetype2 ku app/jni/ directory. Zonse zakonzeka. Tsopano yendetsani lamulo ./gradlew installDebug mu com.xverizex.test. Kuti muwonjezere masewerawa pa android, debugging iyenera kuyatsidwa mu android. Kuti muchite izi, muyenera kupita ku zoikamo, kupita "System", kupita "About piritsi" ndi kumadula "Mangani nambala" njira pafupifupi kasanu. Kenako bwererani ndipo njira ya opanga idzawonekera. Lowani ndikuyatsa, komanso kuyatsa njira ya "USB Debugging". Tsopano muyenera kupeza kiyi ya piritsi. Kuti muchite izi, ikani pulogalamu ya adb. Timatsegula chipolopolo cha adb mu console, ndipo kiyi ikuwonekera papiritsi yomwe iyenera kulandiridwa. Ndi zimenezo, tsopano masewera akhoza dawunilodi kuti piritsi wanu.

Source: www.habr.com

Kuwonjezera ndemanga