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 . 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 , 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
