Salama daholo. Androany isika dia hijery ny fomba hanomanana tetikasa amin'ny fampiasana ny tranomboky sdl2 mba hampandehanana lalao amin'ny Android.
Voalohany dia mila misintona ianao Android Studio, apetraho izany, ary izay rehetra ilaina amin'ity tontolo fampandrosoana ity. Ohatra, manana KDE Neon aho amin'izao fotoana izao, ary ato amin'ity rafitra ity dia misy rakitra /etc/environment, ary io rakitra io ihany no misy ao amin'ny ubuntuMila misoratra anarana ireto variables manaraka ireto ianao ao.
ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk
Mila misintona ny NDK amin'ny tranokala ofisialy ihany koa ianao, sokafy ao amin'ny lahatahiry an-tranonao ary avereno anarana ho NDK. Avy eo dia mila misintona ny tranomboky SDL2 avy amin'ny tranokala ianao . Ny fampiasana sdl2 ho an'ny android dia zava-dehibe ny tsy hanangonana azy ho an'ny solosaina, satria tsy hatambatra ho an'ny android izany. Mba hanangonana ny tetikasa dia mila mamorona tetikasa ao amin'ny studio android ianao, na iza na iza, mba hanaiky ny fahazoan-dàlana, raha tsy izany dia hangataka fahazoan-dàlana ny SDL2 rehefa manorina.
Raha te hamaky rakitra amin'ny Android avy amin'ny fananana ianao dia mila mampiasa ny fiasa SDL_RWops. Ity misy ohatra iray amin'ny fampiasana code amin'ny fiasana amin'ny endritsoratra. Amin'ity tranga ity dia tsy afaka mampiasa FT_New_Face isika, fa hampiasa ny FT_New_Memory_Face kosa hampiasa ny angona efa novakiana.
#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
Namorona rakitra lohateny ihany koa aho mba hampidirana lohateny SDL2. Ilaina ny NO_SDL_GLEXT mba hahomby ny fanangonana. 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
Noho izany dia efa vonona ny tetikasa, efa vonona amin'ny Opengl Es 3.0 ny shaders. Mila mamorona tetikasa android isika izao. Mba hanaovana izany, esory ny rakitra SDL2. Mandehana any amin'ny build-scripts. Ary manao izany izahay.
./androidbuild.sh com.xverizex.test main.cpp
Ity hafatra manaraka ity dia hiseho.
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
Mandehana any amin'ny com.xverizex.test. Mandehana any amin'ny com.xverizex.test/app/jni/src. Adikao ny tetikasan'ny lalaonao. Ary ovay ny rakitra. Android.mk, raha ny amiko dia toy izao no endriny.
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)
Araka ny efa tsikaritrareo dia ampidiriko ihany koa ny tranomboky Freetype2. Nahita iray efa vita aho tao amin'ny github ho an'ny android, saingy tsy nety izany, mila nanova zavatra aho. Mamorona lahatahiry app/src/main/assets ihany koa izahay. Apetrakay ao anatiny ny loharanonay (fonts, sprites, models 3D).
Andao isika izao hametraka ny Freetype2 ho an'ny AndroidSintomy avy amin'ny GitHub-ko , ary kopia ny lahatahiry Freetype2 amin'ny lahatahiry app/jni/. Efa vonona ny rehetra. Alefaso izao ny baiko ./gradlew installDebug ao amin'ny com.xverizex.test. Mba hahafahana manampy ity lalao ity amin'ny android dia tsy maintsy alefa amin'ny android ny debugging. Mba hanaovana izany dia mila mandeha any amin'ny toe-javatra ianao, mandehana any amin'ny "System", mankanesa any amin'ny "About tablet" ary tsindrio ny safidy "Build number" in-enina. Avy eo miverena ary hiseho ny safidy ho an'ny mpamorona. Midira ary avereno izany, avereno ihany koa ny safidy "USB Debugging". Ankehitriny dia mila maka fanalahidy ho an'ny takelaka ianao. Mba hanaovana izany, apetraho ny programa adb. Mandeha ny akorandriaka adb ao amin'ny console izahay, ary misy fanalahidy iray hita ao amin'ny takelaka izay tsy maintsy ekena. Izay ihany, azo alaina amin'ny takelakao ny lalao.
Source: www.habr.com
