A tegnapi napon végre elérhetővé vált az Android platformhoz készült NDK (Native Development Kit) amely segítségével natív betéteket készíthetünk C/C++ nyelven programjainkhoz, ezzel felgyorsítva a lomha kódrészletek működését. Kicsit sajnálom hogy nem saját magam akadtam rá a hírre hanem csak a Mobilarenán olvastam először a mai napon az újdonságról.
Gondoltam gyorsan ki is próbálom a dolgot. Nézzük mi is kell ahhoz hogy natív modulokat tudjunk készíteni és beágyazni a programjainkba. Először is kell egy feltelepített SDK amellyel majd a tényleges alkalmazásokat lefordíthatjuk és apk -ba csomagolhatjuk. Nálam e-mellé még párosult egy Eclipse Ganymede a hozzávaló Android plugin -el. Eddig semmi újdonság azoknak akik már legalább kipróbálás szintjén próbálkoztak a platformmal. A natív fordításhoz linux -os eszközökre van szükség, amely valószínűleg nem meglepő senkinek aki tudja hogy az operációs rendszer a linux kernelre épül. A készítők szerencsére gondoltak a Windows -on tevékenykedőkre így a Cygwin futtató környezettel is megoldhatjuk a fordítást. A friss Cygwin -ben én a default telepítést választottam majd némely kísérletezés után kiderült hogy a make és a gcc csomagokat is telepítenem kell, mivel ezek nem része a rendszernek alapból. A Cygwin -el való gyors ismerkedésem során rájöttem hogy a Windows -os meghajtóim a
/cygdrive/<meghajtó_betűjel>
elérési útvonalon találhatóak meg. Gyorsan bele is lépkedtem az ndk mappájába ahol a make parancsot lefuttatva azt az utasítást kaptam hogy gyorsan húzzak el a build mappába és futtassam le az host-setup.sh scriptet hogy az alap beállítások meglegyenek. Így is tettem. (Mod: ez így helytelen. Az alap NDK mappában kell kiadni az
sh build/host-setup.sh
-t hogy megfelelő helyre kerüljön a beállítás fájl) Miután a neki kellő
export ANDROID_NDK_ROOT=<NDK_Cygwin_elérési_útvonala>
paranccsal megadtam amire vágyott, a script szépen lefutott és jelezte hogy a fordító környezet készen áll.
Nézzük mivel is játszhatunk. Az docs/overview.txt -t tanulmányozva gyorsan rájöhetünk hogy a sources és apps mappa az amelyben a natív forrásokat illetve a cél projekteket elhelyezhetjük. Szerencsére példa programokat is kaptunk, én a hello-jni -vel próbálkoztam amely egy egyszerű string visszaadást prezentál natív kódból (a hívásokat egyébként JNI interface -en keresztül lehet megoldani). Ezt az NDK root -ban lefuttatott
make APP=hello-jni
paranccsal tudtam megépítettni. Ha ezzel megvagyunk az
apps/hello-jni/project/libs
helyre be is másolódik a lefordított .so modull fájl.
Jöhetett az Eclipse, gyorsan-frissen be is importáltam a projektet majd jobb klikkelve a projektre a Run as ► Android application menüpontot választva be is röffent az emulátor, az eredményt pedig alant láthatjátok. Fizikai hardver híján konkrét eszközön még sajnos nem tudtam tesztelni.
Meglehetősen biztatónak tűnik első blikkre az NDK, habár a fordítás folyamatát lenne hová egyszerűsíteni (ezt az overview.txt be is ismerik a készítők). A későbbi verziókban valószínűleg integrálódni fog az egész az SDK -ba és lesz Eclipse plugin is. Habár az NDK nagyon hasznosnak tűnik, vannak árnyoldalai is, leginkább hogy a kész alkalmazás kevésbé lesz hordozható, az Android platform új verzióinak megjelenésével valószínűleg további binárisokat kell közzétennünk hogy azok kövessék a megjelenő toolchain -eket. Így ahol lehet inkább hordozható java kódot használjunk és csak a teljesítmény kritikus részeket írjuk natív kódban.