Halo semuanya. Hari ini kita akan melihat bagaimana mempersiapkan proyek menggunakan perpustakaan sdl2 untuk menjalankan game di android.
Pertama, Anda perlu mengunduh Android Studio, menginstalnya dan semua yang diperlukan di lingkungan ini untuk pengembangan. Sebagai contoh, saya sekarang memiliki Kde Neon, dan pada sistem ini ada file / etc / environment, file yang sama ada di ubuntu. Di sana perlu untuk mendaftarkan variabel-variabel tersebut.
ANDROID_HOME=/home/username/Android/Sdk ANDROID_NDK_HOME=/home/username/ndk
Anda juga perlu mengunduh NDK dari situs web resmi, unzip ke direktori home Anda dan ganti namanya menjadi NDK. Selanjutnya, Anda perlu mengunduh perpustakaan
SDL2 dari
libsdl.org . Untuk menggunakan sdl2 untuk android, penting untuk tidak mengkompilasinya untuk komputer, karena itu tidak akan dikompilasi untuk android. Agar proyek dapat dikompilasi, Anda perlu membuat proyek di studio android, siapa pun untuk dapat menerima lisensi, jika tidak, saat membangun SDL2, Anda akan meminta lisensi.
Untuk membaca file di android dari aset, Anda harus menggunakan fungsi SDL_RWops. Berikut ini adalah contoh penggunaan dalam kode font. Dalam hal ini, kami tidak dapat menggunakan FT_New_Face, tetapi sebaliknya kami akan menggunakan FT_New_Memory_Face untuk menggunakan data yang sudah dibaca.
#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
Saya juga membuat file header untuk menghubungkan header SDL2. NO_SDL_GLEXT diperlukan agar kompilasi berhasil untuk 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
Jadi proyek sudah siap, shader siap untuk Opengl Es 3.0. Sekarang Anda perlu membuat proyek-android. Untuk melakukan ini, bongkar arsip SDL2. Pergi ke membangun-skrip. Dan kami melakukannya.
./androidbuild.sh com.xverizex.test main.cpp
Pesan ini akan muncul.
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
Pergi ke com.xverizex.test. Kami pergi ke com.xverizex.test / app / jni / src. Salin proyek game Anda. Dan kami mengubah file Android.mk, dalam kasus saya terlihat seperti ini.
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)
Seperti yang mungkin Anda perhatikan, saya juga menghubungkan perpustakaan Freetype2. Saya menemukan yang sudah jadi di github untuk android, tetapi tidak berhasil, saya harus mengubah sesuatu. Juga buat direktori app / src / main / assets. Kami menempatkan sumber daya kami di dalamnya (font, sprite, model 3d).
Sekarang konfigurasikan Freetype2 untuk Android. Unduh dari
Tautan github saya, dan salin direktori Freetype2 ke direktori app / jni /. Semuanya sudah siap. Sekarang jalankan perintah com.xverizex.test ./gradlew installDebug. Untuk menambahkan game ini ke android, debugging harus diaktifkan di android. Untuk melakukan ini, pergi ke pengaturan, pergi ke "Sistem", pergi ke "Tentang tablet" dan tekan opsi "Bangun nomor" sekitar enam kali. Kemudian kembali dan opsi untuk pengembang akan muncul. Kami masuk dan menyalakannya, juga mengaktifkan opsi "USB Debugging". Sekarang Anda perlu mendapatkan kunci untuk tablet. Untuk melakukan ini, instal program adb. Kami meluncurkan adb shell di konsol, dan kunci muncul di tablet, yang harus diterima. Itu saja, sekarang game bisa diunduh ke tablet.