{"id":55442,"date":"2020-01-21T00:00:00","date_gmt":"2020-01-20T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/podgotovka-sdl2-proekta-dlya-zapuska-na-android"},"modified":"2020-02-18T14:03:33","modified_gmt":"2020-02-18T11:03:33","slug":"podgotovka-sdl2-proekta-dlya-zapuska-na-android","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/podgotovka-sdl2-proekta-dlya-zapuska-na-android","title":{"rendered":"Priprava SDL2-projekta za zagon na androidu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Pozdravljeni vsi. Danes bomo pogledali, kako pripraviti projekt z uporabo knji\u017enice sdl2 za zagon igre na androidu.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nNajprej morate prenesti Android Studio, ga namestiti in vse, kar potrebujete v tem okolju za razvoj. Na primer, trenutno imam Kde Neon, v tem sistemu obstaja datoteka \/etc\/environment, enaka datoteka je tudi v ubuntu. Tam morate zapisati te spremenljivke.<\/p>\n<pre><code class=\"plaintext\">ANDROID_HOME=\/home\/username\/Android\/Sdk\nANDROID_NDK_HOME=\/home\/username\/ndk\n<\/code><\/pre>\n<p>\nPrav tako morate prenesti NDK s uradne spletne strani, ga razpakirati v doma\u010di imenik in preimenovati v NDK. Nato morate prenesti knji\u017enico SDL2 s spletne strani <noindex><a rel=\"nofollow\" href=\"https:\/\/www.libsdl.org\/\">libsdl.org<\/a><\/noindex>. Da bi lahko uporabljali sdl2 za android, je pomembno, da je ne kompajlirate za ra\u010dunalnik, saj se tako ne bo skompajlirala za android. Da se projekt skompajliira, morate ustvariti projekt v android studio, kakr\u0161en koli, da sprejmete licenco, sicer bo SDL2 pri gradnji zahteval licenco.<\/p>\n<p>Za branje datotek v androidu iz assets morate uporabiti funkcije SDL_RWops. Tukaj je primer uporabe v kodi za delo s pisavami. V tem primeru ne moremo uporabiti FT_New_Face, ampak namesto tega bomo uporabili FT_New_Memory_Face, da uporabimo \u017ee prebrane podatke.<\/p>\n<pre><code class=\"cpp\">#ifdef __ANDROID__\n        snprintf ( path, 254, &quot;fonts\/%s&quot;, file );\n        SDL_RWops *rw = SDL_RWFromFile(path, &quot;r&quot; );\n        char *memory = ( char * ) calloc ( rw-&gt;hidden.androidio.size, 1 );\n        SDL_RWread(rw, memory, 1, rw-&gt;hidden.androidio.size );\n\n        FT_New_Memory_Face(*this-&gt;ft_library, ( const FT_Byte  * )memory, rw-&gt;hidden.androidio.size, 0, &this;-&gt;face );\n        SDL_RWclose(rw);\n        free ( memory );\n#else\n        snprintf ( path, 254, &quot;%s\/fonts\/%s&quot;, DEFAULT_ASSETS, file );\n        if ( access ( path, F_OK ) ) {\n                fprintf ( stderr, &quot;not found font: %sn&quot;, path );\n                exit ( EXIT_FAILURE );\n        }\n        struct stat st;\n        stat ( path, &st; );\n        FILE *rw = fopen ( path, &quot;r&quot; );\n        char *memory = ( char * ) calloc ( st.st_size, 1 );\n        fread ( memory, 1, st.st_size, rw );\n\n        FT_New_Memory_Face ( *this-&gt;ft_library, ( const FT_Byte * ) memory, st.st_size, 0, &this;-&gt;face );\n        fclose ( rw );\n        free ( memory );\n#endif\n\n<\/code><\/pre>\n<p>\nPrav tako sem ustvaril naslovno datoteko za povezovanje SDL2 glav. NO_SDL_GLEXT je potreben, da se kompilacija uspe\u0161no izvede za Android.<\/p>\n<pre><code class=\"cpp\">#ifdef __ANDROID__\n#include &quot;SDL.h&quot;\n#include &quot;SDL_video.h&quot;\n#include &quot;SDL_events.h&quot;\n#define NO_SDL_GLEXT \n#include &quot;SDL_opengl.h&quot;\n#include &quot;SDL_opengles2.h&quot;\n#else\n#include &lt;SDL2\/SDL.h&gt;\n#include &lt;SDL2\/SDL_video.h&gt;\n#include &lt;SDL2\/SDL_opengl.h&gt;\n#include &lt;SDL2\/SDL_opengles2.h&gt;\n#endif\n<\/code><\/pre>\n<p>\nTorej je projekt pripravljen, shadri so pripravljeni za Opengl Es 3.0. Zdaj morate ustvariti android-project. To storite tako, da razpakirate arhiv SDL2. Vstopite v build-scripts. In izvede to.<\/p>\n<pre><code class=\"bash\">.\/androidbuild.sh com.xverizex.test main.cpp\n<\/code><\/pre>\n<p>\nPojavilo se bo tak\u0161no sporo\u010dilo.<\/p>\n<pre><code class=\"bash\">Za gradnjo in namestitev na napravo za testiranje za\u017eenite naslednje:\ncd \/home\/cf\/programs\/SDL2-2.0.10\/build\/com.xverizex.test\n.\/gradlew installDebug\n<\/code><\/pre>\n<p>\nPreidite v com.xverizex.test. Pojdite v com.xverizex.test\/app\/jni\/src. Kopirajte svoj projekt igre. In spremenite datoteko Android.mk, v mojem primeru izgleda tako.<\/p>\n<pre><code class=\"cpp\">LOCAL_PATH := $(call my-dir)\n\ninclude $(CLEAR_VARS)\n\nLOCAL_MODULE := main\n\nSDL_PATH := ..\/SDL\nFREETYPE_PATH := ..\/Freetype2\n\nLOCAL_C_INCLUDES := $(LOCAL_PATH)\/$(SDL_PATH)\/include $(LOCAL_PATH)\/$(FREETYPE_PATH)\/include\n\n# Dodajte svoje datoteke izvorne aplikacije tukaj...\nLOCAL_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\n\nLOCAL_SHARED_LIBRARIES := SDL2 Freetype2\n\nLOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog \n\ninclude $(BUILD_SHARED_LIBRARY)\n<\/code><\/pre>\n<p>\nKot ste morda \u017ee opazili, dodajam tudi knji\u017enico Freetype2. Na\u0161el sem \u017ee pripravljeno na githubu za android, vendar ni delovala, potrebne so bile nekatere spremembe. Prav tako ustvarite imenik app\/src\/main\/assets. Vanj bomo postavili na\u0161e vire (pisave, sprite, 3D modeli).<\/p>\n<p>Sedaj bomo konfigurirali Freetype2 za Android. Prenesite z mojega githuba. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/xverizex\/Android-Freetype2\">Povezava<\/a><\/noindex>, in kopirajte mapo Freetype2 v mapo app\/jni\/. Vse je pripravljeno. Zdaj za\u017eenite ukaz .\/gradlew installDebug v com.xverizex.test. Da bi lahko dodali to igro v Android, mora biti odkrivanje napak omogo\u010deno. Za to pojdite v nastavitve, izberite 'Sistem', nato 'O tabli\u010dnem ra\u010dunalniku' in \u0161estkrat pritisnite na opcijo '\u0160tevilka gradnje'. Nato se vrnite nazaj in pojavila se bo opcija za razvijalce. Vstopite in omogo\u010dite to mo\u017enost ter tudi omogo\u010dite mo\u017enost 'Odkrivanje napak prek USB'. Zdaj potrebujete klju\u010d za tabli\u010dni ra\u010dunalnik. Za to namestite program adb. V konzoli za\u017eenite adb shell in na tabli\u010dnem ra\u010dunalniku se prika\u017ee klju\u010d, ki ga je treba sprejeti. Vse, zdaj lahko nalagate igre na tabli\u010dni ra\u010dunalnik.<br \/>\n<br \/>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/484526\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 sdl2 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0433\u0440\u044b \u043d\u0430 android. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c Android Studio, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0451 \u0438 \u0432\u0441\u0451 \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443 \u043c\u0435\u043d\u044f \u0441\u0435\u0439\u0447\u0430\u0441 Kde Neon, \u0438 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u0430\u0439\u043b \/etc\/environment, \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0444\u0430\u0439\u043b \u0435\u0441\u0442\u044c \u0438 \u0432 ubuntu. \u0422\u0430\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55442","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/podgotovka-sdl2-proekta-dlya-zapuska-na-android\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 SDL2-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 android | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/podgotovka-sdl2-proekta-dlya-zapuska-na-android\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-20T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:33+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Priprava SDL2-projekta za zagon na androidu | ProHoster","description":"Hello everyone.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/podgotovka-sdl2-proekta-dlya-zapuska-na-android","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 SDL2-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 android | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.","og:url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/podgotovka-sdl2-proekta-dlya-zapuska-na-android","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-20T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:33+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55442","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:44:25","updated":"2022-10-04 17:24:27","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/55442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=55442"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/55442\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=55442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=55442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=55442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}