Inatayarisha mradi wa SDL2 utakaoendeshwa kwenye Android

Salaam wote. Leo tutaangalia jinsi ya kuandaa mradi kwa kutumia maktaba ya sdl2 kuendesha mchezo kwenye Android.

Kwanza unahitaji kupakua Android Studio, isakinishe, na kila kitu kingine kinachohitajika kwa mazingira haya ya uundaji. Kwa mfano, kwa sasa nina KDE Neon, na katika mfumo huu kuna faili /etc/environment, na faili hiyo hiyo ipo katika ubuntuUnahitaji kusajili vigezo vifuatavyo hapo.

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

Pia unahitaji kupakua NDK kutoka kwa tovuti rasmi, kuifungua kwenye orodha yako ya nyumbani na kuibadilisha kuwa NDK. Ifuatayo, unahitaji kupakua maktaba ya SDL2 kutoka kwa wavuti libsdl.org. Ili kutumia sdl2 kwa android, ni muhimu sio kuikusanya kwa kompyuta, kwa sababu basi haitakusanya kwa android. Ili mradi uungwe, unahitaji kuunda mradi katika studio ya android, mtu yeyote, ili kukubali leseni, vinginevyo SDL2 itaomba leseni wakati wa kujenga.

Ili kusoma faili kwenye android kutoka kwa vipengee, unahitaji kutumia vitendaji vya SDL_RWops. Hapa kuna mfano wa matumizi katika nambari ya kufanya kazi na fonti. Katika hali hii, hatuwezi kutumia FT_New_Face, lakini badala yake tutatumia FT_New_Memory_Face kutumia data ambayo tayari imesomwa.

#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

Pia niliunda faili ya kichwa cha habari ili kujumuisha vichwa vya habari vya SDL2. NO_SDL_GLEXT inahitajika ili mkusanyiko ufanikiwe. 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

Kwa hivyo mradi uko tayari, vivuli viko tayari kwa Opengl Es 3.0. Sasa tunahitaji kuunda mradi wa android. Ili kufanya hivyo, fungua kumbukumbu ya SDL2. Nenda kwa maandishi ya ujenzi. Na tunafanya hivi.

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

Ujumbe ufuatao utaonekana.

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

Nenda kwenye com.xverizex.test. Nenda kwenye com.xverizex.test/app/jni/src. Nakili mradi wako wa mchezo. Na ubadilishe faili. Android.mk, katika kesi yangu inaonekana hivi.

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)

Kama unaweza kuwa umegundua tayari, ninajumuisha pia maktaba ya Freetype2. Nilipata iliyotengenezwa tayari kwenye github ya admin, lakini haikufanya kazi, nilihitaji kubadilisha kitu. Pia tunaunda saraka programu/src/main/assets. Tunaweka rasilimali zetu ndani yake (fonti, sprites, mifano ya 3D).

Sasa hebu tuweke Freetype2 kwa ajili ya AndroidPakua kutoka GitHub yangu Link, na unakili saraka ya Freetype2 kwenye programu/jni/ saraka. Yote ni tayari. Sasa endesha amri ./gradlew installDebug katika com.xverizex.test. Ili uweze kuongeza mchezo huu kwenye android, utatuzi lazima uwezeshwe katika android. Ili kufanya hivyo, unahitaji kwenda kwenye mipangilio, nenda kwenye "Mfumo", nenda kwenye "Kuhusu kibao" na ubofye chaguo la "Jenga nambari" karibu mara sita. Kisha rudi nyuma na chaguo la watengenezaji litaonekana. Ingia na uiwashe, pia washa chaguo la "USB Debugging". Sasa unahitaji kupata ufunguo wa kibao. Ili kufanya hivyo, sasisha programu ya adb. Tunazindua ganda la adb kwenye koni, na ufunguo unaonekana kwenye kompyuta kibao ambayo lazima ukubaliwe. Hiyo ni, sasa michezo inaweza kupakuliwa kwenye kompyuta yako ndogo.

Chanzo: mapenzi.com

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster