Kugadzirira SDL2 purojekiti yekushandisa pa Android

Mhoroi mose. Nhasi tichaona magadzirirwo eprojekiti uchishandisa sdl2 raibhurari yekumhanyisa mutambo paandroid.

Kutanga, iwe unofanirwa kudhawunirodha Android Studio, kuiisa uye zvese zvinodiwa munzvimbo ino yekuvandudza. Semuenzaniso, ndine Kde Neon ikozvino, uye mune ino system mune faira /etc/environment, iyo faira yakafanana iri muubuntu. Iwe unofanirwa kunyoresa ma variables akadaro ipapo.

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

Iwe zvakare unofanirwa kudhawunirodha NDK kubva pawebhusaiti yepamutemo, unzip iyo kune yako dhairekitori uye uipe zita rekuti NDK. Tevere, iwe unofanirwa kudhawunirodha SDL2 raibhurari kubva pawebhusaiti libsdl.org. Kuti ushandise sdl2 ye android, zvakakosha kuti urege kuiunganidza kune komputa, nekuti ipapo haizounganidzire android. Kuunganidza purojekiti, unofanirwa kugadzira purojekiti mune android studio, chero, kugamuchira rezinesi, zvikasadaro kana uchivaka SDL2 unokumbira rezinesi.

Kuti uverenge mafaera muandroid kubva pazvinhu, unofanirwa kushandisa SDL_RWops mabasa. Heino muenzaniso wekuishandisa mune kodhi yekushanda nefont. Muchiitiko ichi, hatigone kushandisa FT_New_Face, asi isu tichashandisa FT_New_Memory_Face kushandisa data rakatoverengwa.

#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

Ini zvakare ndakagadzira faira remusoro kuti ubatanidze SDL2 misoro. NO_SDL_GLEXT inodiwa kuti uunganidze zvakabudirira paAndroid.

#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

Saka purojekiti yakagadzirira, shaders yakagadzirira Opengl Es 3.0. Iye zvino tinoda kugadzira android-purojekiti. Kuti uite izvi, sunungura iyo SDL2 archive. Enda kune kuvaka-scripts. Uye ita izvi.

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

Meseji yakaita seiyi ichabuda.

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

Enda kucom.xverizex.test. Enda kucom.xverizex.test/app/jni/src. Kopa purojekiti yako yemutambo. Uye shandura iyo Android.mk faira, mune yangu inotaridzika seizvi.

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)

Sezvaungave watoona kare, ini zvakare ndinobatanidza iyo Freetype2 raibhurari. Ndakawana yakagadzirira-yakagadzirwa pa github ye android, asi haina kushanda, ndaida kuchinja chimwe chinhu. Uyewo gadzira iyo app/src/main/assets directory. Isu tinoisa zviwanikwa zvedu (mafonti, sprites, 3d modhi) mairi.

Zvino ngatiisei Freetype2 ye Android. Dhawunirodha kubva kugithub yangu batanidzo, uye kopira iyo Freetype2 dhairekitori kuapp/jni/dhairekitori. Zvese zvagadzirira. Zvino shandisa ./gradlew installDebug command mu com.xverizex.test. Kuti ukwanise kuwedzera mutambo uyu kuandroid, debugging inofanirwa kugoneswa muandroid. Kuti uite izvi, enda kune zvigadziriso, enda ku "System", enda ku "About tablet" uye tinya "Build number" sarudzo kanenge katanhatu. Wobva wadzokera uye sarudzo yekuvandudza ichaonekwa. Pinda mukati woibatidza, wogonesa iyo "USB debugging" sarudzo. Iye zvino unoda kuwana kiyi yehwendefa. Kuti uite izvi, isa iyo adb chirongwa. Mhanya iyo adb shell mune console, uye kiyi inoonekwa pahwendefa, iyo yaunoda kugamuchira. Ndizvozvo, ikozvino unogona kudhawunirodha mitambo pahwendefa.

Source: www.habr.com

Voeg