تحضير مشروع SDL2 للتشغيل على android

أهلاً بكم. سنرى اليوم كيفية إعداد مشروع باستخدام مكتبة sdl2 لتشغيل اللعبة على android.

تحتاج أولاً إلى تنزيل Android Studio وتثبيته وكل ما هو مطلوب في بيئة التطوير هذه. على سبيل المثال ، لدي حاليًا Kde Neon ، وهناك ملف / etc / بيئة على هذا النظام ، نفس الملف موجود في ubuntu. هناك لا بد من تسجيل مثل هذه المتغيرات.

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

تحتاج أيضًا إلى تنزيل NDK من الموقع الرسمي ، وفك ضغطه إلى دليل منزلك وإعادة تسميته إلى NDK. بعد ذلك ، تحتاج إلى تنزيل مكتبة SDL2 من الموقع libsdl.org. لاستخدام sdl2 لنظام Android ، من المهم عدم تجميعه للكمبيوتر لأنه لن يتم تجميعه لنظام Android. لكي يتم تجميع المشروع ، تحتاج إلى إنشاء مشروع في android studio ، أي واحد ، لقبول الترخيص ، وإلا فإنه عند إنشاء 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. لقد وجدت واحدة جاهزة على جيثب لنظام أندرويد ، لكنها لم تنجح ، واضطررت إلى تغيير شيء ما. نقوم أيضًا بإنشاء دليل app / src / main / الأصول. نضع مواردنا فيه (خطوط ، نقوش متحركة ، نماذج ثلاثية الأبعاد).

لنقم الآن بإعداد Freetype2 لنظام Android. تنزيل من جيثب الخاص بي لينك، وانسخ دليل Freetype2 إلى دليل app / jni /. كل شيء جاهز. الآن نقوم بتشغيل الأمر ./gradlew installDebug في com.xverizex.test. لتتمكن من إضافة هذه اللعبة إلى android ، يجب تمكين تصحيح الأخطاء في android. للقيام بذلك ، عليك الذهاب إلى الإعدادات ، والذهاب إلى "النظام" ، والانتقال إلى "حول الجهاز اللوحي" والنقر على خيار "رقم الإصدار" حوالي ست مرات. ثم ارجع وسيظهر خيار المطورين. ندخل ونشغلها ، ونشغل أيضًا خيار "التصحيح عبر USB". الآن نحن بحاجة للحصول على مفتاح الجهاز اللوحي. للقيام بذلك ، قم بتثبيت برنامج adb. نقوم بتشغيل adb shell في وحدة التحكم ، ويظهر مفتاح على الجهاز اللوحي يجب قبوله. كل شيء ، الآن يمكن تنزيل الألعاب على الجهاز اللوحي.

المصدر: www.habr.com

إضافة تعليق