ஆண்ட்ராய்டில் இயங்குவதற்கு SDL2 திட்டத்தைத் தயார்படுத்துகிறது

அனைவருக்கும் வணக்கம். ஆண்ட்ராய்டில் கேமை இயக்க sdl2 நூலகத்தைப் பயன்படுத்தி ஒரு திட்டத்தை எவ்வாறு தயாரிப்பது என்பதை இன்று பார்ப்போம்.

முதலில் நீங்கள் ஆண்ட்ராய்டு ஸ்டுடியோவைப் பதிவிறக்கம் செய்து, அதை நிறுவி, இந்த வளர்ச்சி சூழலில் தேவையான அனைத்தையும் செய்ய வேண்டும். எடுத்துக்காட்டாக, என்னிடம் இப்போது Kde Neon உள்ளது, இந்த கணினியில் ஒரு கோப்பு /etc/environment உள்ளது, அதே கோப்பு உபுண்டுவில் உள்ளது. பின்வரும் மாறிகளை அங்கு உள்ளிட வேண்டும்.

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

நீங்கள் அதிகாரப்பூர்வ இணையதளத்தில் இருந்து NDK ஐ பதிவிறக்கம் செய்து, அதை உங்கள் முகப்பு கோப்பகத்தில் திறந்து NDK என மறுபெயரிட வேண்டும். அடுத்து நீங்கள் SDL2 நூலகத்தை இணையதளத்தில் இருந்து பதிவிறக்கம் செய்ய வேண்டும் libsdl.org. android க்கு sdl2 ஐப் பயன்படுத்த, அதை கணினிக்காக தொகுக்காமல் இருப்பது முக்கியம், ஏனெனில் அது android க்காக தொகுக்காது. ப்ராஜெக்ட் தொகுக்க, உரிமத்தை ஏற்க, ஆண்ட்ராய்டு ஸ்டுடியோவில் ஏதேனும் ஒரு திட்டத்தை உருவாக்க வேண்டும், இல்லையெனில் SDL2 கட்டும் போது உரிமம் கேட்கும்.

ஆண்ட்ராய்டில் உள்ள கோப்புகளை சொத்துக்களிலிருந்து படிக்க, நீங்கள் SDL_RWops செயல்பாடுகளைப் பயன்படுத்த வேண்டும். எழுத்துருவுடன் வேலை செய்வதற்கான குறியீட்டைப் பயன்படுத்துவதற்கான எடுத்துக்காட்டு இங்கே. இந்த வழக்கில், எங்களால் FT_New_Face ஐப் பயன்படுத்த முடியாது, ஆனால் ஏற்கனவே படித்த தரவைப் பயன்படுத்த FT_New_Memory_Face ஐப் பயன்படுத்துவோம்.

#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

SDL2 தலைப்புகளை இணைக்க ஒரு தலைப்பு கோப்பையும் உருவாக்கினேன். Android இல் தொகுக்க NO_SDL_GLEXT தேவை.

#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

எனவே திட்டம் தயாராக உள்ளது, ஷேடர்கள் Opengl Es 3.0 க்கு தயாராக உள்ளன. இப்போது நாம் ஒரு ஆண்ட்ராய்டு திட்டத்தை உருவாக்க வேண்டும். இதைச் செய்ய, SDL2 காப்பகத்தைத் திறக்கவும். பில்ட்-ஸ்கிரிப்ட்களுக்குச் செல்லவும். நாங்கள் அதை இப்படி செய்கிறோம்.

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

பின்வரும் செய்தி தோன்றும்.

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

com.xverizex.test க்குச் செல்லவும். com.xverizex.test/app/jni/src க்குச் செல்லவும். நாங்கள் எங்கள் விளையாட்டு திட்டத்தை நகலெடுக்கிறோம். நாங்கள் Android.mk கோப்பை மாற்றுகிறோம், என் விஷயத்தில் இது போல் தெரிகிறது.

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)

நீங்கள் ஏற்கனவே கவனித்திருக்கலாம், நான் Freetype2 நூலகத்தையும் சேர்க்கிறேன். ஆண்ட்ராய்டுக்கான கிதுப்பில் ஆயத்தமான ஒன்றைக் கண்டுபிடித்தேன், ஆனால் அது வேலை செய்யவில்லை, நான் ஏதாவது மாற்ற வேண்டும். நாங்கள் ஒரு கோப்பக பயன்பாட்டை/src/main/assets உருவாக்குகிறோம். எங்கள் வளங்களை அதில் வைக்கிறோம் (எழுத்துருக்கள், உருவங்கள், 3D மாதிரிகள்).

இப்போது Android க்காக Freetype2 ஐ உள்ளமைப்போம். எனது கிட்ஹப்பில் இருந்து பதிவிறக்கவும் இணைப்பு, மற்றும் Freetype2 கோப்பகத்தை app/jni/ கோப்பகத்திற்கு நகலெடுக்கவும். எல்லாம் தயார். இப்போது com.xverizex.test இல் ./gradlew installDebug கட்டளையை இயக்கவும். இந்த கேமை ஆண்ட்ராய்டில் சேர்க்க, ஆண்ட்ராய்டில் பிழைத்திருத்தம் இயக்கப்பட்டிருக்க வேண்டும். இதைச் செய்ய, நீங்கள் அமைப்புகளுக்குச் சென்று, "சிஸ்டம்" என்பதற்குச் சென்று, "டேப்லெட் பற்றி" என்பதற்குச் சென்று, "பில்ட் எண்" விருப்பத்தை ஆறு முறை கிளிக் செய்ய வேண்டும். பின் திரும்பிச் செல்லவும், டெவலப்பர்களுக்கான விருப்பம் தோன்றும். உள்ளே சென்று அதை இயக்கவும், "USB பிழைத்திருத்தம்" விருப்பத்தையும் இயக்கவும். இப்போது நீங்கள் டேப்லெட்டுக்கான விசையைப் பெற வேண்டும். இதைச் செய்ய, adb நிரலை நிறுவவும். நாங்கள் கன்சோலில் adb ஷெல்லைத் தொடங்குகிறோம், மேலும் டேப்லெட்டில் ஒரு விசை தோன்றும், அது ஏற்றுக்கொள்ளப்பட வேண்டும். அவ்வளவுதான், இப்போது கேம்களை உங்கள் டேப்லெட்டில் பதிவிறக்கம் செய்யலாம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்