Hasznos scriptek cocos2d-x-el készülő Android játék fejlesztéshez

Posted by | · · | Cégélet · Webstar Works | 2 hozzászólás Hasznos scriptek cocos2d-x-el készülő Android játék fejlesztéshez című bejegyzéshez

Ebben a bejegyzésben két hasznos scriptet szeretnék megosztani veletek. Az első script dinamikusan befűzi a fordítandó fájlokat, a második az összes futó emulátorra egyszerre kiküldi az alkalmazást, ezzel időt spórolva nekünk.

list.sh

Módosítottunk és felhasználtunk egy cocos2d-x-ből származó szkriptet, ami a jni mappában található és list.sh a  neve. Eredetileg annyit tud hogy parancssorból futtatva és megadva neki egy mappát paraméterként rekurzívan végigmegy a mappa tartalmán (végtelen mélységig) és kiírja a kimenetre a “.cpp” kiterjesztéssel rendelkező fájlokat.

pl:


./list.sh ../../Classes

eredménye a fenti példa esetében a következő:


../../Classes/AppDelegate.cpp
../../Classes/HelloWorldScene.cpp 

Ezt használtuk a fájlok elérési útjának automatikus befűzésére a jni/Android.mk “LOCAL_SRC_FILES” változójába.

Használata jni/Android.mk fájlban:


LOCAL_SRC_FILES += $(shell cd $(LOCAL_PATH); ./list.sh ../../Classes)

Egy kis módosításra szorult miután bevezettük a saját statikus függvénykönyvtárainkat (A statikus függvénykönyvtárak mappáiban van egy Android.mk fájl).

A következőre változott a list.sh tartalma:


#!/bin/bash

list_alldir()
{
    for file in /*
    do
if [ ! -f $file/Android.mk ]; then
        if [ -f $file ]; then
            echo $file | egrep '.c(pp)?$'
        fi
        
        if [ -d $file ]; then
            list_alldir $file            
        fi
fi
    done
}

if [ $# -gt 0 ]; then
    list_alldir ""
else
    list_alldir "."
fi

Ez annyival többet tud, hogy bevonja a “.c” kiterjesztésű fájlokat, valamint a legfontosabb, hogy azokat a mappákat kihagyja amelyek tartalmaznak “Android.mk” nevű fájlt, mivel azok valószínűsíthetően statikus függvénykönyvtárak forrását tartalmazzák.

runOnAllEmulators.sh

Ez a script a lefordított alkalmazást telepíti és futtatja az összes futó android emulátoron. (minimális módosítással az összes csatlakoztatott eszközön telepíthetjük és futtathatjuk egyszerre az alkalmazást). Maga a szkript igen egyszerű, lekéri az összes futó emulátor nevét, mindegyikre feltelepíti, majd elindítja a kívánt alkalmazást, az egyetlen paramétere az alkalmazás neve (kis és nagy betűk között nem tesz különbséget)


#!/bin/sh

PWD=`pwd`

APP_DIR=`ls |grep -i ""`
APP_NAME=`ls $APP_DIR/bin |grep -i ""|awk -F"." '{print }'`

cd $APP_DIR/src

PACKAGE="`find -iname "$APP_NAME" -type d|tr -d "."|tr "/" "."|cut -c 2-`"

cd $PWD

if [ -n "$APP_DIR" ] && [ -n "$APP_NAME" ] && [ -n "$PACKAGE" ]; then

   DEVICES=$(adb devices | egrep "emulator"| egrep "(device)$"| awk '{print }';)

   for d in $DEVICES; do
      echo "INSTALL to $d"
      adb -s $d install -r $APP_DIR/bin/$APP_NAME.apk>/dev/null && adb -s $d shell am start -n $PACKAGE/.$APP_NAME && echo "$d COMPLETED" &
   done
else
   echo "ERROR"
fi

exit

Használjátok egészséggel a fenti scripteket, ha hibát találtok valamelyikben, kérlek jelezzétek, szívesen fogadom a javaslatokat kommentben.


2 hozzászólás

hron84 says:

2013. szeptember 9. at 14:07

Az elso script szinte biztosan egy korabbi verzio, mert az a .c fajlokat teljes mertekben figyelmen kivul hagyja.
Raadasul hibas is, mert a gyokermappatol szamol, ami azt jelentene, hogy az osszes projekt osszes cpp fajljat fellistazza.

Reply

Kákonyi Roland says:

2013. szeptember 10. at 08:30

Köszönöm a hozzászólásodat, javítottam az általad jelzett hibákat.
Igen, egy korábbi verzió volt a script, a második probléma pedig egy elgépelés volt, “$1/*” helyett “/*” került a bejegyzésbe, ami valóban a gyökérmappától kezdve végigment volna a teljes rendszeren.
Remélem hasznosnak találtad a bejegyzésemet. Az idekapcsolódó egyéb bejegyzéseimet a http://blog.webstar.hu/tag/android-cocos2dx/ címen találod.

Reply

Leave a comment