هيلو سڀ. اڄ اسان ڏسنداسين ته ڪيئن هڪ پروجيڪٽ تيار ڪجي sdl2 لائبريري استعمال ڪندي Android تي گيم هلائڻ لاءِ.
پهرين توهان کي Android اسٽوڊيو ڊائون لوڊ ڪرڻ جي ضرورت آهي، ان کي انسٽال ڪريو ۽ هر شي جيڪا هن ترقي واري ماحول ۾ گهربل آهي. مثال طور، مون وٽ هاڻي 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 هيڊرز کي ڳنڍڻ لاءِ هڪ هيڊر فائل پڻ ٺاهي آهي. NO_SDL_GLEXT جي ضرورت آهي تاليف لاءِ 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
تنهن ڪري پروجيڪٽ تيار آهي، شيڊرز Opengl Es 3.0 لاءِ تيار آهن. هاڻي اسان کي هڪ Android-پروجيڪٽ ٺاهڻ جي ضرورت آهي. هن کي ڪرڻ لاء، 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 لائبريري. مون کي Android لاءِ گيٿب تي هڪ تيار ٿيل هڪ مليو، پر اهو ڪم نه ڪيو، مون کي ڪجهه تبديل ڪرڻ جي ضرورت آهي. اسان هڪ ڊاريڪٽري ايپ/src/main/assets پڻ ٺاهيندا آهيون. اسان ان ۾ اسان جا وسيلا رکون ٿا (فونٽس، اسپرائٽس، 3D ماڊل).
هاڻي اچو ته Android لاءِ Freetype2 ترتيب ڏيو. منهنجي گيتب تان ڊائون لوڊ ڪريو
جو ذريعو: www.habr.com