Valmistellaan SDL2-projektia Android-käyttöä varten

Hei kaikki. Tänään tarkastelemme, kuinka valmistella projekti käyttämällä sdl2-kirjastoa pelin suorittamiseksi Androidilla.

Ensin sinun on ladattava Android Studio, asennettava se ja kaikki, mitä tässä kehitysympäristössä tarvitaan. Esimerkiksi minulla on nyt Kde Neon, ja tässä järjestelmässä on tiedosto /etc/environment, sama tiedosto on olemassa ubuntussa. Seuraavat muuttujat on syötettävä sinne.

ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk

Sinun on myös ladattava NDK viralliselta verkkosivustolta, purettava se kotihakemistoosi ja nimettävä se uudelleen NDK:ksi. Seuraavaksi sinun on ladattava SDL2-kirjasto verkkosivustolta libsdl.org. Jos haluat käyttää sdl2:ta Androidille, on tärkeää olla kääntämättä sitä tietokoneelle, koska silloin se ei käänny Androidille. Jotta projekti voidaan kääntää, sinun on luotava projekti Android studiossa, missä tahansa, hyväksyäksesi lisenssin, muuten SDL2 pyytää lisenssiä rakentaessaan.

Jos haluat lukea tiedostoja androidissa resursseista, sinun on käytettävä SDL_RWops-toimintoja. Tässä on esimerkki koodin käytöstä fontin kanssa työskentelemiseen. Tässä tapauksessa emme voi käyttää FT_New_Facea, vaan käytämme sen sijaan FT_New_Memory_Facea jo luettujen tietojen käyttämiseen.

#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

Loin myös otsikkotiedoston SDL2-otsikoiden yhdistämiseksi. NO_SDL_GLEXT tarvitaan, jotta käännös onnistuisi Androidissa.

#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

Joten projekti on valmis, varjostimet ovat valmiita Opengl Es 3.0:lle. Nyt meidän on luotava Android-projekti. Tee tämä purkamalla SDL2-arkisto. Siirry kohtaan build-scripts. Ja teemme sen näin.

./androidbuild.sh com.xverizex.test main.cpp

Seuraava viesti tulee näkyviin.

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

Siirry osoitteeseen com.xverizex.test. Siirry osoitteeseen com.xverizex.test/app/jni/src. Kopioimme peliprojektimme. Ja muutamme Android.mk-tiedostoa, minun tapauksessani se näyttää tältä.

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)

Kuten olet ehkä jo huomannut, sisällytän myös Freetype2-kirjaston. Löysin valmiin githubista Androidille, mutta se ei toiminut, minun piti muuttaa jotain. Luomme myös hakemiston app/src/main/assets. Sijoitamme siihen resurssimme (fontit, spritet, 3D-mallit).

Määritetään nyt Freetype2 Androidille. Lataa githubistani Linkkija kopioi Freetype2-hakemisto app/jni/-hakemistoon. Kaikki on valmista. Suorita nyt komento ./gradlew installDebug tiedostossa com.xverizex.test. Jotta voit lisätä tämän pelin Androidiin, virheenkorjauksen on oltava käytössä Androidissa. Voit tehdä tämän siirtymällä asetuksiin, siirtymällä kohtaan "Järjestelmä", "Tietoja tabletista" ja napsauttamalla "Build number" -vaihtoehtoa noin kuusi kertaa. Palaa sitten takaisin ja kehittäjien vaihtoehto tulee näkyviin. Mene sisään ja kytke se päälle, ota myös käyttöön "USB-virheenkorjaus" -vaihtoehto. Nyt sinun on hankittava tabletin avain. Voit tehdä tämän asentamalla adb-ohjelman. Käynnistämme adb-kuoren konsolissa, ja tablet-laitteeseen tulee avain, joka on hyväksyttävä. Siinä kaikki, nyt voit ladata pelejä tablet-laitteeseen.

Lähde: will.com

Lisää kommentti