مرحبا بالجميع. سنرى اليوم كيفية إعداد مشروع باستخدام مكتبة sdl2 لتشغيل اللعبة على نظام أندرويد.
تحتاج أولاً إلى تنزيل Android Studio وتثبيته وكل ما هو مطلوب في هذه البيئة من أجل التطوير. على سبيل المثال ، لدي الآن Kde Neon ، وعلى هذا النظام يوجد ملف / etc / environment ، يوجد نفس الملف في أوبونتو. هناك لا بد من تسجيل هذه المتغيرات.
ANDROID_HOME=/home/username/Android/Sdk ANDROID_NDK_HOME=/home/username/ndk
تحتاج أيضًا إلى تنزيل NDK من الموقع الرسمي ، وفك ضغطه في الدليل الرئيسي الخاص بك وإعادة تسميته إلى NDK. بعد ذلك ، تحتاج إلى تنزيل مكتبة
SDL2 من
libsdl.org . لاستخدام sdl2 لنظام أندرويد ، من المهم عدم تجميعه لجهاز كمبيوتر ، لأنه لن يقوم بترجمة لنظام 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: %s\n", 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. لقد وجدت واحدة جاهزة على جيثب لنظام أندرويد ، لكنها لم تنجح ، وكان علي تغيير شيء ما. أيضا إنشاء التطبيق / src / main / دليل الأصول. نضع مواردنا فيه (الخطوط ، العفاريت ، النماذج ثلاثية الأبعاد).
الآن قم بتكوين Freetype2 لنظام Android. قم بتنزيل
رابط github الخاص بي ، وانسخ دليل Freetype2 إلى التطبيق / jni / directory. كل شيء جاهز. الآن قم بتشغيل الأمر com.xverizex.test ./gradlew installDebug. لإضافة هذه اللعبة إلى android ، يجب تمكين تصحيح الأخطاء في android. للقيام بذلك ، انتقل إلى الإعدادات ، انتقل إلى "النظام" ، انتقل إلى "حول الجهاز اللوحي" واضغط على خيار "إنشاء رقم" حوالي ست مرات. ثم العودة وسيظهر خيار للمطورين. نذهب ونشغلها ، ونشغل أيضًا خيار "تصحيح أخطاء USB". تحتاج الآن إلى الحصول على مفتاح الجهاز اللوحي. للقيام بذلك ، قم بتثبيت برنامج adb. نطلق shell adb في وحدة التحكم ، ويظهر المفتاح على الجهاز اللوحي ، والذي يجب قبوله. هذا كل شيء ، الآن يمكن تنزيل الألعاب على الجهاز اللوحي.