Tere kÔigile. TÀna nÀeme, kuidas sdl2 teegi abil projekti ette valmistada, et mÀng Androidis kÀitada.
Esmalt peate alla laadima Android Studio, installige see ja kĂ”ik muu selle arenduskeskkonna jaoks vajalik. NĂ€iteks mul on praegu KDE Neon ja selles sĂŒsteemis on fail /etc/environment ning sama fail asub ka ubuntuSeal peate registreerima jĂ€rgmised muutujad.
ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk
Samuti peate NDK ametlikult saidilt alla laadima, lahti pakkima oma kodukataloogi ja nimetama ĂŒmber NDK-ks. JĂ€rgmisena peate saidilt alla laadima SDL2 teegi . Androidi jaoks sdl2 kasutamiseks on oluline mitte kompileerida seda arvuti jaoks, sest siis see ei kompileeri androidi jaoks. Projekti koostamiseks peate litsentsi vastuvĂ”tmiseks looma android stuudios projekti, mis tahes, vastasel juhul kĂŒsib see SDL2 ehitamisel litsentsi.
Androidis failide lugemiseks varadest peate kasutama SDL_RWopsi funktsioone. Siin on nÀide selle kasutamisest koodis fondiga töötamiseks. Sel juhul ei saa me kasutada FT_New_Face, kuid selle asemel kasutame juba loetud andmete kasutamiseks 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: %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
Samuti lÔin pÀisefaili, et lisada SDL2 pÀised. Kompileerimise Ônnestumiseks on vaja NO_SDL_GLEXT-i. 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
Seega on projekt valmis, varjutajad Opengl Es 3.0 jaoks valmis. NĂŒĂŒd peame looma android-projekti. Selleks pakkige arhiiv SDL2 lahti. Minge ehitusskriptide juurde. Ja me teeme seda.
./androidbuild.sh com.xverizex.test main.cpp
See teade ilmub.
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
Mine aadressile com.xverizex.test. Mine aadressile com.xverizex.test/app/jni/src. Kopeeri oma mÀnguprojekt. Ja muuda faili. Android.mk, minu puhul nÀeb see vÀlja selline.
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)
Nagu olete mÀrganud, lisan ka Freetype2 teegi. Leidsin githubist androidile valmis, aga see ei töötanud, pidin midagi muutma. Samuti loome kataloogi app/src/main/assets. Me paneme sellesse oma ressursid (fondid, spraidid, 3D-mudelid).
NĂŒĂŒd seadistame Freetype2 selleks AndroidLaadi alla minu GitHubist ja kopeerige Freetype2 kataloog kataloogi app/jni/. KĂ”ik on valmis. NĂŒĂŒd kĂ€ivitame failis com.xverizex.test kĂ€su ./gradlew installDebug. Selle mĂ€ngu androidile lisamiseks peab androidis olema lubatud silumine. Selleks peate minema seadetesse, minema jaotisse "SĂŒsteem", minge jaotisse "Teave tahvelarvuti kohta" ja klĂ”psama umbes kuus korda valikut "Ehitamise number". SeejĂ€rel minge tagasi ja ilmub arendajatele mĂ”eldud valik. Me lĂ€heme sisse ja lĂŒlitame selle sisse, samuti lĂŒlitame sisse valiku "Silumine USB kaudu". NĂŒĂŒd peame saama tahvelarvuti vĂ”tme. Selleks installige programm adb. KĂ€ivitame konsoolis adb-kesta ja tahvelarvutile ilmub vĂ”ti, mis tuleb aktsepteerida. KĂ”ik, nĂŒĂŒd saab mĂ€nge tahvelarvutisse alla laadida.
Allikas: www.habr.com
