Nyiapake proyek SDL2 kanggo mbukak ing Android

Halo kabeh. Dina iki kita bakal weruh carane nyiyapake proyek nggunakake perpustakaan sdl2 kanggo mbukak game ing Android.

Pisanan sampeyan kudu ndownload Android Studio, nginstal lan kabeh sing dibutuhake ing lingkungan pangembangan iki. Contone, aku saiki duwe Kde Neon, lan ing sistem iki ana file /etc/environment, file sing padha ana ing ubuntu. Variabel ing ngisor iki kudu dilebokake ing kana.

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

Sampeyan uga kudu ndownload NDK saka situs web resmi, unpack menyang direktori ngarep lan ganti jeneng dadi NDK. Sabanjure sampeyan kudu ndownload perpustakaan SDL2 saka situs web libsdl.org. Kanggo nggunakake sdl2 kanggo Android, penting ora kanggo kompilasi kanggo komputer, amarga banjur ora bakal kompilasi kanggo Android. Supaya proyek bisa dikompilasi, sampeyan kudu nggawe proyek ing studio Android, sapa wae, kanggo nampa lisensi kasebut, yen SDL2 bakal njaluk lisensi nalika mbangun.

Kanggo maca file ing Android saka aset, sampeyan kudu nggunakake fungsi SDL_RWops. Iki minangka conto panggunaan kode kanggo nggarap font. Ing kasus iki, kita ora bisa nggunakake FT_New_Face, nanging bakal nggunakake FT_New_Memory_Face kanggo nggunakake data sing wis diwaca.

#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

Aku uga nggawe file header kanggo nyambungake header SDL2. NO_SDL_GLEXT dibutuhake supaya kompilasi bisa sukses ing 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

Dadi proyek wis siyap, shaders siap kanggo Opengl Es 3.0. Saiki kita kudu nggawe proyek Android. Kanggo nindakake iki, unpack arsip SDL2. Pindhah menyang mbangun-skrip. Lan kita nindakake kaya iki.

./androidbuild.sh com.xverizex.test main.cpp

Pesen ing ngisor iki bakal katon.

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

Pindhah menyang com.xverizex.test. Pindhah menyang com.xverizex.test/app/jni/src. Kita nyalin proyek game kita. Lan kita ngganti file Android.mk, ing kasusku katon kaya iki.

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)

Kaya sing wis dingerteni, aku uga kalebu perpustakaan Freetype2. Aku nemokake sing wis siap ing github kanggo Android, nanging ora bisa, aku kudu ngganti. Kita uga nggawe direktori app / src / utama / aset. Kita nyelehake sumber daya ing kana (font, sprite, model 3D).

Saiki ayo konfigurasi Freetype2 kanggo Android. Ngundhuh saka githubku link, lan nyalin direktori Freetype2 menyang direktori app/jni/. Kabeh wis siyap. Saiki jalanake printah ./gradlew installDebug ing com.xverizex.test. Supaya bisa nambah game iki menyang Android, debugging kudu diaktifake ing Android. Kanggo nindakake iki, sampeyan kudu pindhah menyang setelan, pindhah menyang "Sistem", pindhah menyang "About tablet" lan klik pilihan "Mbangun nomer" bab enem kaping. Banjur bali lan pilihan kanggo pangembang bakal katon. Mlebu lan nguripake, uga nguripake "USB Debugging" pilihan. Saiki sampeyan kudu njaluk tombol kanggo tablet. Kanggo nindakake iki, instal program adb. Kita miwiti cangkang adb ing console, lan tombol katon ing tablet sing kudu ditampa. Mekaten, saiki game bisa didownload menyang tablet.

Source: www.habr.com

Add a comment