Halo sadayana. Dinten ieu kami bakal ningali kumaha nyiapkeun proyék nganggo perpustakaan sdl2 pikeun ngajalankeun kaulinan dina Android.
Mimiti anjeun kedah ngaunduh Android Studio, pasang, sareng sadayana anu diperyogikeun pikeun lingkungan pamekaran ieu. Salaku conto, ayeuna kuring gaduh KDE Neon, sareng dina sistem ieu aya file /etc/environment, sareng file anu sami aya di ubuntuAnjeun kedah ngadaptarkeun variabel-variabel ieu di dinya.
ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk
Anjeun ogé kedah ngaunduh NDK tina situs wéb resmi, ngabongkar kana diréktori bumi anjeun sareng ganti nami janten NDK. Satuluyna anjeun kudu ngundeur perpustakaan SDL2 ti website . Ngagunakeun sdl2 pikeun android, hal anu penting pikeun henteu compile eta pikeun komputer, sabab lajeng moal compile pikeun android. Dina raraga pikeun proyék pikeun compile, Anjeun kudu nyieun hiji proyék di studio android, nu mana wae nu, pikeun nampa lisénsi nu, disebutkeun SDL2 bakal ménta lisénsi nalika ngawangun.
Pikeun maca file dina android tina aset, anjeun kedah nganggo fungsi SDL_RWops. Ieu conto pamakean kode pikeun damel sareng font. Dina hal ieu, urang teu bisa make FT_New_Face, tapi gantina bakal ngagunakeun FT_New_Memory_Face pikeun pamakéan data nu geus 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: %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
Kuring ogé nyieun file header pikeun ngasupkeun header SDL2. NO_SDL_GLEXT diperyogikeun supados kompilasina suksés. 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 geus siap, shaders geus siap pikeun Opengl Es 3.0. Ayeuna urang kudu nyieun hiji android-proyék. Jang ngalampahkeun ieu, unpack arsip SDL2. Pindah ka ngawangun-skrip. Sareng urang ngalakukeun sapertos kieu.
./androidbuild.sh com.xverizex.test main.cpp
Pesen di handap ieu bakal 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
Buka com.xverizex.test. Buka com.xverizex.test/app/jni/src. Salin proyék kaulinan anjeun. Teras robih filena. Android.mk, dina kasus kuring katingalina sapertos kieu.
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)
Sakumaha anjeun parantos terang, kuring kalebet perpustakaan Freetype2. Kuring manggihan hiji siap-dijieun on github pikeun android, tapi teu dianggo, Kuring diperlukeun pikeun ngarobah hiji hal. Urang ogé nyieun hiji aplikasi diréktori / src / utama / asset. Urang nempatkeun sumberdaya urang di dinya (fonts, sprites, model 3D).
Ayeuna hayu urang nyetel Freetype2 kanggo AndroidUnduh ti GitHub kuring , sarta salin diréktori Freetype2 kana diréktori app/jni/. Kabéh geus siap. Ayeuna ngajalankeun paréntah ./gradlew installDebug di com.xverizex.test. Pikeun tiasa nambihan kaulinan ieu kana android, debugging kedah diaktipkeun dina android. Jang ngalampahkeun ieu, anjeun kudu indit ka setélan, buka "System", buka "Ngeunaan tablet" teras klik dina pilihan "Bangun Jumlah" ngeunaan genep kali. Teras uih deui sareng pilihan pikeun pamekar bakal muncul. Lebetkeun sareng hurungkeun, ogé hurungkeun pilihan "USB Debugging". Ayeuna anjeun kedah kéngingkeun konci pikeun tablet. Jang ngalampahkeun ieu, pasang program adb. Urang ngaluncurkeun cangkang adb dina konsol, sareng konci muncul dina tablet anu kedah ditampi. Éta éta, ayeuna kaulinan tiasa diunduh kana tablet anjeun.
sumber: www.habr.com
