ආයුබෝවන් සියල්ලටම. අද අපි Android මත ක්රීඩාවක් ධාවනය කිරීම සඳහා sdl2 පුස්තකාලය භාවිතයෙන් ව්යාපෘතියක් සකස් කරන්නේ කෙසේදැයි බලමු.
මුලින්ම ඔබට Android Studio බාගත කර, එය ස්ථාපනය කිරීම සහ මෙම සංවර්ධන පරිසරය තුළ අවශ්ය සියල්ල. උදාහරණයක් ලෙස, මා සතුව දැන් Kde Neon ඇත, මෙම පද්ධතියේ ගොනුව /etc/environment ඇත, එම ගොනුව ubuntu හි පවතී. පහත විචල්යයන් එහි ඇතුළත් කළ යුතුය.
ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk
ඔබ නිල වෙබ් අඩවියෙන් NDK බාගත කර එය ඔබගේ මුල් නාමාවලියට ඉවත් කර NDK ලෙස නැවත නම් කළ යුතුය. ඊළඟට ඔබ වෙබ් අඩවියෙන් SDL2 පුස්තකාලය බාගත කළ යුතුය
වත්කම් වලින් android හි ගොනු කියවීමට, ඔබ 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 සඳහා සූදානම්. දැන් අපි android-project එකක් හදන්න ඕන. මෙය සිදු කිරීම සඳහා, SDL2 සංරක්ෂිතය ඉවත් කරන්න. build-scripts වෙත යන්න. ඒ වගේම අපි එය කරන්නේ මේ ආකාරයටයි.
./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 පුස්තකාලය ද ඇතුළත් කරමි. මම android සඳහා github මත සූදානම් කළ එකක් සොයා ගත්තෙමි, නමුත් එය වැඩ කළේ නැත, මට යමක් වෙනස් කිරීමට අවශ්ය විය. අපි නාමාවලි යෙදුමක් / src / ප්රධාන / වත්කම් ද නිර්මාණය කරමු. අපි අපේ සම්පත් එහි තබමු (අකුරු, ස්ප්රයිට්, ත්රිමාණ ආකෘති).
දැන් අපි Android සඳහා Freetype2 වින්යාස කරමු. මගේ github එකෙන් බාගන්න
මූලාශ්රය: www.habr.com