Nyob zoo sawv daws. Niaj hnub no peb yuav saib yuav ua li cas npaj ib qhov project siv lub tsev qiv ntawv sdl2 los khiav kev ua si ntawm Android.
Ua ntej koj yuav tsum rub tawm Android Studio, nruab nws thiab txhua yam uas yuav tsum tau ua hauv qhov kev txhim kho no. Piv txwv li, tam sim no kuv muaj Kde Neon, thiab ntawm qhov system no muaj cov ntaub ntawv /etc/environment, tib cov ntaub ntawv muaj nyob hauv ubuntu. Cov kev hloov pauv hauv qab no yuav tsum tau nkag mus rau ntawd.
ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk
Koj kuj yuav tsum rub tawm NDK los ntawm lub vev xaib official, qhib nws rau hauv koj lub tsev teev npe thiab hloov npe rau NDK. Tom ntej no koj yuav tsum rub tawm lub tsev qiv ntawv SDL2 los ntawm lub vev xaib
Txhawm rau nyeem cov ntaub ntawv hauv Android los ntawm cov cuab yeej cuab tam, koj yuav tsum siv cov haujlwm SDL_RWops. Ntawm no yog ib qho piv txwv ntawm kev siv code rau kev ua haujlwm nrog font. Hauv qhov no, peb tsis tuaj yeem siv FT_New_Face, tab sis yuav siv FT_New_Memory_Face siv cov ntaub ntawv uas twb tau nyeem lawm.
#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
Kuv kuj tau tsim cov ntaub ntawv header los txuas SDL2 headers. NO_SDL_GLEXT xav tau kev tso ua ke kom ua tiav ntawm 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
Yog li qhov project tau npaj txhij, cov shaders tau npaj rau Opengl Es 3.0. Tam sim no peb yuav tsum tau tsim ib qho haujlwm hauv Android. Txhawm rau ua qhov no, qhib lub SDL2 archive. Mus rau build-scripts. Thiab peb ua li no.
./androidbuild.sh com.xverizex.test main.cpp
Cov lus hauv qab no yuav tshwm sim.
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
Mus rau com.xverizex.test. Mus rau com.xverizex.test/app/jni/src. Peb luam peb qhov project game. Thiab peb hloov cov ntaub ntawv Android.mk, hauv kuv rooj plaub nws zoo li qhov no.
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)
Raws li koj tau pom lawm, kuv kuj suav nrog Freetype2 lub tsev qiv ntawv. Kuv pom ib qho kev npaj ua tiav ntawm github rau Android, tab sis nws tsis ua haujlwm, Kuv xav tau hloov qee yam. Peb kuj tsim ib daim ntawv teev npe app/src/main/assets. Peb tso peb cov peev txheej hauv nws (fonts, sprites, 3D qauv).
Tam sim no cia peb teeb tsa Freetype2 rau Android. Download tau ntawm kuv github
Tau qhov twg los: www.hab.com