Fejlesztőkörnyezet felkészítése Cocos2D keretrendszerben készült IOS játék Androidra portolására 2. rész

Posted by | · · · · · · | Webstar Works | 2 hozzászólás Fejlesztőkörnyezet felkészítése Cocos2D keretrendszerben készült IOS játék Androidra portolására 2. rész című bejegyzéshez

Bírjuk működésre az 1. részben létrehozott projektünket az ADT Eclipse-ben.
Az előző bejegyzés gondolatmenetét követve elkészítettem a folyamat következő lépését, ez a bejegyzés feltételezi az előző bejegyzésben leírtak sikeres elvégzését.

Az ADT Eclipse és a projekt beállításai

adt-logo

Nyissuk meg az ADT Eclipse-t, majd válasszuk ki workspace-nek a $HOME/workspace-t.
(Ha alapból nem lenne beállítva.)

IDE beállítása

Plugin-ek
Indítsd el az ADT-t (futtassuk a $HOME/android/eclipse/eclipse& paranccsal). Menj a Help menübe majd válaszd ki az Install New Software menüpontot. A lenyíló menüben ki kell választani az “Android Developer Tools Update Site – http://dl-ssl.google.com/android/eclipse/” pontot. A megjelenő 2 telepíthető plugin csoport közül pipáld ki mindkettőt, majd a next gombra kattintva menj végig a folyamaton (fogadd el a licenc feltételeket, stb.). Ezek mellé még telepítsd az itt leírt módon a Sequoyah pluginokat.

Android NDK elérési út
Szükséges még beállítani az Android NDK könyvtárát, ezt az ADT-ben a Window/Preferences pontjában, az Android/NDK almenüben tehetjük meg. Ide be kell írni (vagy tallózni) a $HOME/android/ndk mappát.

ADT C++ Code Analysis finomhangolása
Az ADT nem tökéletes még az Android NDK eszközökkel való fejlesztésben, így van három olyan hiba, amit fordítás során mindig jelez, de ezek valójában nem állnak fent. Ezek a “Method cannot be resolved”, a “Symbol is not resolved” és a “Type cannot be resolved” hibaüzenetek.
Egyszerűen megmondhatjuk az Eclipse-nek, hogy hagyja figyelmen kívül ezeket. Ezt a Window/Preferences ablakban, a C/C++ / Code Analysis menüben, a listából a képen kijelölve látható elemek elől a pipákat. Ezzel meg is oldottuk ezt a problémát.

code-analysis123

Importálás

Fájl/Import menüben válasszuk a General/Existing Projects into Workspace pontot majd nyomjunk Next-et, tallózzuk be a $HOME/workspace/HelloCocos2dx mappát, majd a két HelloCpp projekt elől vegyük ki a pipákat és válasszuk a Finish-t.

import-project
Ezután megjelenik két projekt a bal oldali workspace-en. (HURRÁ!!!)
Számos hibát jelez, ezeket szépen sorban megoldjuk.

Be kell állítanunk a java build path-ban kapcsolódó projektnek az ötletesen java névvel ellátott projektet
A HelloCocos projekten jobb klikk/properties menüben a “JavaBuild Path”/”Project”s képernyőn az Add gomb megnyomása után lehet kiválasztani.
required-project

Meg kell mondanunk az ADT-nek, hogy ez egy Natív, NDK-t használó projekt
Jobb klikk a projekten New/Other menü, majd az ablakban válasszuk a C/C++ / Convert to C/C++ Project. Itt kizárólag a HelloCocos projekt legyen kipipálva, Project type legyen Makefile project, Toolchain pedig az Android GCC.

add-c-nature-1 add-c-nature-2

Be kell állítanunk a cocos2d-x által ajánlott egyedi fordítási folyamatot
Nem meglepő módon ebből is csináltunk saját verziót, mert mi ugye ilyen elégedetlenek vagyunk néha a kézhez kapott dolgokkal. 🙂 A mi változatunkban megegyezés szerinti helyet használ az Android SDK és NDK helyének (ez a $HOME/android/sdk,ndk). Emellett dinamikusan bevonja a fordításba a projektünkben létrehozott összes forrásfájlját, amit alapból nem tesz meg sem az Android NDK sem a cocos2d-x. Ez a módosított szkript is benne van a korábban (előző bejegyzésben) említett, letölthető tömörített fájlban. (vagy innen) A projekten jobb egér/properties ablakot megnyitva, a C/C++Build képernyőn vegyük ki a pipát a “Use default build command” elől és írjuk be a következőt:

/bin/bash ${workspace_loc:/HelloCocos}/build_native.sh

A ${workspace_loc:/HelloCocos} elérési útban a “HelloCocos” a projekt neve, így értelemszerűen helyettesíthető az adott projekt nevével.

build

Ha elindítjuk a projektünk fordítását (projekten jobb klikk/build project) láthatjuk, hogy szépen dolgozik. Nem kell megijedni, nem tart mindig ilyen hosszú ideig. Az első fordításnál lefordítja a teljes cocos2d-x könyvtárat, ezt a későbbiekben csak akkor fordítja újra, ha előtte clean-eljük a projektünket, vagy módosítunk a cocos2d-x könyvtár fájljaiban.
Ha most nyomunk egy futtatást, akkor szépen elindul a HelloCpp példaalkalmazás a csatlakoztatott eszközünkön (vagy futó emulátoron). Ezt kellene látnunk az eszközön, ha minden rendben ment:
Screenshot_2013-03-11-16-22-04

De hol vannak a forrásfájljaim????

Ez egy nagyon jó kérdés. A projekt beállításainál (projekten jobb klikk/properties) a “C/C++ General / Paths and Symbols” menü “Source Location” oldalán nyomjunk egy “Link Folder” gombot, majd pipáljuk ki a “Link to folder in the file system” checkbox-ot és írjuk be a bemeneti mezőbe a következőt:

${WORKSPACE_LOC}/HelloCocos2dx/Classes

Majd nyomjunk egy “Finish”, majd egy “OK” gombot. Ezek után megjelenik egy “Classes” mappa a projektünkben, ahol megtaláljuk a cocos2d-x HelloCpp példájának másolatát. Ezek a C/C++ forrásfájlok, amik a projekthez tartoznak, ezen kívül még a projekt jni mappájában is van egy main.cpp fájl, ezen keresztül kapcsolódik a Java kód a C/C++ kóddal. A Java források a megszokott helyen az src mappában találhatóak.

Kódkiegészítés Eclipse-ben? Hogyan?

Az alábbi beállítással életre kelthetjük a kódkiegészítést is az Eclipse-ben, ami az egyik, ha nem a legnagyobb segítségünk lesz a fejlesztés során. Ezt úgy tehetjük meg, hogy a már emlétett “C/C++ General / Paths and Symbols” menü “Source Location” oldalán ismét egy “Link Folder” gombot nyomva beírjuk a bemeneti mezőbe a következőt:

${WORKSPACE_LOC}/HelloCocos2dx/cocos2d-x

Ebből a lépésből az következik, hogy ezáltal elérjük a cocos2d-x forrásfájljait is, sokat tanulhatunk ha böngésszük ezeket. Amint magára talál a C/C++ indexer (a biztonság kedvéért végezzünk el egy fordítást, ez elindítja az indexelő szolgáltatás frissítését) életre kel a (helyzet érzékeny) kódkiegészítés, amit a megszokott módon ctrl+space billentyűkombinációval érünk el. Tádáám!

Összefoglalás

A fent leírt módszerekkel beállítottunk az ADT Eclipse fejlesztőeszközünket és beimportáltuk a korábban létrehozott projektünket. A projekt beállításainak finomhangolásával képesek vagyunk fejleszteni és fordítani a fejlesztőkörnyezetből. Nem utolsó sorban pedig működésre bírtuk a helyzet érzékeny kódkiegészítést is.
A témába kapcsolódóan még három bejegyzést tervezünk, a hasznos külső függvénykönyvtárakról, a fordítás gyorsításáról, valamint a fejlesztés során hasznos (egyedi) eszközökről, szkriptekről.
Minden tapasztalatomat belegyűjtöttem ebbe a bejegyzésbe a fejlesztőkörnyezet felépítéséről, sőt volt, amire a bejegyzés írása közben jöttem rá. 🙂
Lehet, hogy így nem lett rövid a bejegyzés, de aki végigcsinálja a leírt folyamatot, bizonyosan egy működőképes alap Android-os cocos2d-x projektet kap.
Aki windows-on próbálja összetákolni ezt a fejlesztőkörnyezetet, annak elengedhetetlen lesz a cygwin telepítése, a többi különbséget viszont neki kell kitapasztalnia.
Én pár hónappal ezelőtt windows környezetben próbáltam életre kelteni a fent leírt eszközöket, majd rengeteg jövőbeli fejfájás elkerülése végett inkább átpártoltam Xubuntu-ra. Egy kollégám szintén felépítette ugyanezt a környezetet OSX 10.8 Mountain Lion operációs rendszeren, tapasztalataival sokat hozzátéve a részletekhez. Köszi Vili! 🙂
Innen kezdődik az igazi móka, amikor már csak a portolásra kell figyelni.
Portolásra fel!


2 hozzászólás

Android-os cocos2d-x játék fordításának felgyorsítása | Webstar Blog says:

2013. április 9. at 14:56

[…] megoldások feltételezik a korábbi példák projekt környezetét, melyek elérhetőek itt, itt és […]

Reply

Webstar Blog | Hasznos külső könyvtárak cocos2d-x keretrendszerben való fejlesztéshez says:

2013. május 9. at 12:50

[…] feltételezik két korábbi bejegyzésünk során létrehozott példaprojekt környezetét, itt és itt találjátok a kapcsolódó […]

Reply

Leave a comment