Kugadzirira SDL2 purojekiti yekushandisa pa Android

Mhoroi mose. Nhasi tichatarisa maitiro ekugadzirira chirongwa uchishandisa sdl2 raibhurari yekumhanyisa mutambo pa Android.

Kutanga iwe unofanirwa kudhawunirodha Android Studio, kuiisa uye zvese zvinodiwa munzvimbo ino yekuvandudza. Semuenzaniso, ini zvino ndine Kde Neon, uye pane ino system pane faira /etc/environment, iyo yakafanana faira iripo mu ubuntu. Izvi zvinotevera zvakasiyana zvinoda kuiswa ipapo.

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

Iwe zvakare unofanirwa kudhawunirodha NDK kubva kune yepamutemo webhusaiti, kuiburitsa mudhairekitori rako repamba uye uipe zita rekuti NDK. Tevere iwe unofanirwa kudhawunirodha SDL2 raibhurari kubva pawebhusaiti libsdl.org. Kuti ushandise sdl2 yeandroid, zvakakosha kuti urege kuiunganidza iyo komputa, nekuti ipapo haizounganidzire android. Kuti purojekiti iunganidzwe, unofanirwa kugadzira purojekiti muandroid studio, chero ipi zvayo, kugamuchira rezinesi, zvikasadaro SDL2 inokumbira rezinesi paunenge uchivaka.

Kuti uverenge mafaera muandroid kubva pazvinhu, unofanirwa kushandisa iyo SDL_RWops mabasa. Heino muenzaniso wekushandiswa mukodhi yekushanda nefonti. Muchiitiko ichi, hatigone kushandisa FT_New_Face, asi toshandisa 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 kubatanidza SDL2 misoro. NO_SDL_GLEXT inodiwa kuti kuunganidzwa kubudirire 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 tinozviita seizvi.

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

Meseji inotevera 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. Isu tinotevedzera chirongwa chedu chemutambo. Uye isu tinoshandura 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 ndinosanganisirawo raibhurari yeFreetype2. Ndakawana yakagadzirira-yakagadzirwa pa github ye android, asi haina kushanda, ndaida kuchinja chimwe chinhu. Isu zvakare tinogadzira dhairekitori app/src/main/assets. Isu tinoisa zviwanikwa zvedu mairi (mafonti, sprites, 3D mhando).

Zvino ngatigadzirirei Freetype2 ye Android. Dhawunirodha kubva kugithub yangu batanidzo, uye kopira iyo Freetype2 dhairekitori kuapp/jni/dhairekitori. Zvese zvagadzirira. Zvino shandisa murairo ./gradlew installDebug mu com.xverizex.test. Kuti ukwanise kuwedzera mutambo uyu kuandroid, debugging inofanirwa kugoneswa muandroid. Kuti uite izvi, unofanirwa kuenda kune zvigadziriso, enda ku "System", enda ku "About tablet" uye tinya "Build number" sarudzo kanenge katanhatu. Wobva wadzokera uye sarudzo yevagadziri ichaonekwa. Pinda mukati woibatidza, wobatidzawo "USB Debugging" sarudzo. Iye zvino unoda kuwana kiyi yehwendefa. Kuti uite izvi, isa iyo adb chirongwa. Isu tinotangisa iyo adb shell mune console, uye kiyi inoonekwa muhwendefa iyo inofanirwa kugamuchirwa. Ndizvozvo, ikozvino mitambo inogona kutorwa pahwendefa rako.

Source: www.habr.com

Voeg