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
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
Source: www.habr.com