Tanulás dolgozni Android NDK, vagy hogyan kell használni a C kódot java projektek

Tanulás dolgozni Android NDK, vagy hogyan kell használni a C kódot java projektek
Android NDK egy sor segédprogramok, amelyek lehetővé teszik, hogy többek között írt kód C és C ++, az alkalmazásban. Egy ilyen kód az úgynevezett natív (natív), mivel azt nem lehet végrehajtani a virtuális gép, és a lefordított gépi kód közvetlenül a kívánt processzor.

Ez a lecke vonatkozik a kategóriába fejlettebb. Magától értetődik, hogy az olvasónak néhány készség különösen


Ha a felsoroltak közül bármelyik okozza a problémát, hogy nem számít, még mindig elég megérteni a bemutatott anyag, azonban néhány lépést akkor úgy tűnik, meglehetősen bonyolult. Valójában kétségbe használata Android NDK gyakran nehéz még edzett fejlesztők. Legvalószínűbb, hogy lesz, hogy jelentős erőfeszítéseket előtt beállíthatja a környezetet, és levelet dolgozó projekt.

Mikor kell használni az Android NDK?

Általában a fejlesztők úgy dönt, hogy használja a natív kód két módja van: akarják növelni a teljesítményét az alkalmazások, illetve azok egy kész C / C ++ kívánt projekt költség-hatékony portolták Android. Ne rohanjon, és megérteni, és amikor célszerű használni NDK, és ha nem kell tennie.

A legtöbb programozó gyakran felvetik, hogy az NDK kell használni, ha az alkalmazás processzor igényes. Vannak algoritmusok teljesen betölti a processzor révén DalvikVM, ebben az esetben, a natív kód valóban várható hozama teljesítményjavulást eredményez. Ugyanakkor nem szabad elfelejteni, hogy a használata a JIT fordító is lehetővé teszi, hogy javítsa a teljesítményét java kódot. Sokan azt hiszik, hogy a használata az alkalmazás gépi kód automatikusan növekedést jelent a sebességet a kérelmet. Tény, hogy nem. Átállás teljesítő java kódot a natív kód és vissza hozza fölött, ezért használja a NDK érdemes csak akkor, ha végre a hosszú bonyolult számítás írt teljesen C és a java kód nem célja, hogy a gyakori izomrángás natív függvények.


A másik ok, hogy arra kérjük Önt, hogy használja a NDK annak szükségessége, hogy az alkalmazásokat kész. Logikus, hogy nem átírni a már bevált és áramvonalas darab kódot java, és használja a NDK. Ez a megközelítés azt is lehetővé teszi, hogy tovább olcsón a párhuzamos változások az eredeti és portolták Android alkalmazás. Különösen ez a megközelítés indokolt kérelmek terén az OpenGL ES.

1. lépés: Telepítse és konfigurálja az Android NDK fejlesztési környezet


Először is, meg kell skachatAndroid NDK. A telepítési és normális munkát, mi is kell eszközöket Cygwin 1.7 vagy régebbi awk legújabb verzióját, valamint a GNU Make 3.81 vagy újabb.

Miután letöltötte a fájlt az NDK, csomagolja ki egy mappába. Akkor csomagolja az archívumban van, ahol az Android SDK-t. A mappa elérési útját, regisztrálnia kell a rendszerben PATH változó. A Windows ezen célokra érdemesebb beállítani Cygwin.

2. lépés: Hozzon létre egy új projekt

Hozzon létre egy új Android projekt. A problémák elkerülése érdekében a jövőben menteni a projektet, hogy az elérési útvonalát nem tartalmaz szóköz karaktert. Például hozzon létre egy projektet, válassza ki a „com.mamlambo.sample.ndk1”, mint a csomag neve, valamint a tevékenység - „AndroidNDK1SampleActivity”.

A gyökere a projekt, hozzon létre egy mappát „JNI”. Itt van, amely tartalmazni fogja a natív kód fájlokat. Ha ismeri a JNI, akkor örömmel tudja, hogy az Android NDK lényegében egy JNI egy korlátozott számú fejléc fájlokat lefordítani a kódot C.

3. lépés: A C kód az Android projekt

Hozzon létre egy mappát a fájl neve JNI native.c és adjuk hozzá a következő kódot

Így létre úgy funkcióparaméterrel java String objektum, átalakítja azt a C-húr és ír Logcat. Furious függvény neve nem véletlen, ez hordozza a fontos információkat: egyrészt jelzi a minta nevét ( „Java”), majd a csomag nevét, az osztály nevét és módszer neve. Minden része a név elválasztva aláhúzás.

Az első két függvény paraméterei különösen fontos. Az első paraméter határozza meg a JNI környezet és gyakran használják a kiegészítő funkciókat. A második paraméter a tárgy a Java, amely része a funkciót.

4. lépés: A hívás natív kód Java

Hozzunk létre a projekt gomb, ha rákattintunk, akkor hívja az alábbi kódot:


Arra is szükség van, hogy állapítsa meg helloLog funkció az osztályban, amikor szükség van rá. Lehet tenni vezetéken keresztül


Így mondja a fordító és linker, hogy a végrehajtás ezt a funkciót kell keresni a natív kód mappa.

Végül le kell töltenie a könyvtár, ami végül lefordított kód. Add hozzá a következő inicializálás a tevékenység osztályban.

System.loadLibrary () biztosítja a terhelés a könyvtár nevét. Használhatja bármilyen nevet.

5. lépés: Hozzon létre egy Gyártmány fájl natív kód

Összeállításához natív kódot JNI mappában kell lennie, hogy a fájl neve „Android.mk”. Az alábbiakban a kód a kötélen példánk, hogy van, amikor a funkció a native.c fájlt, és mint a neve a könyvtár meghatározott ndk1

6. lépés: összeállítása natív kód

Miután beírtuk a kódot, és hozzáadjuk a make fájlt a JNI mappában, akkor lehet kezdeni a fordítást. Ehhez a parancssorban (ha fut windows, Cygwin) run NDK építeni a projekt mappát. NDK-build eszköz része az Android NDK. Ha mindent helyesen, akkor valami ilyesmit

Tanulás dolgozni Android NDK, vagy hogyan kell használni a C kódot java projektek

7. lépés: Az alkalmazás futtatása

Most már a projekt futtatásához nyomja meg a gombot, és látom, hogy a változások Logcat.

Ez megtörténhet egy két dolgot: 1) a projekt lehet kezdeni, és a munka, mint amit elvár. Ebben az esetben, kérjük, fogadja gratulálok. 2) Lesz egy hiba, hogy Logcat jelenik meg: „Nem sikerült végrehajtani a módszer tevékenységet.” Ez rendben van. Eclipse általában úgy van kialakítva, hogy ha elkezd egy projektet automatikusan újrafordítódik azt. Ha ez az opció ki van kapcsolva, akkor manuálisan kell tenni a Eclips újrafordítani a projektet. Erre Mielőtt elkezdené meg kell hívni menyuProject-> Tiszta az Eclipse eszköztár.

8. lépés: Hogyan vissza egy objektumot a natív funkcióját

A következő példa bemutatja, hogy az a natív függvény egy tárgy, például a String. Add meg a kódot a fájlban native.c

A malloc csapat, hoztunk létre egy puffer, amely ezután a sprintf vonalat. Funkció vissza a helyes eredményt, azt az JNI segítő funkciót NewStringUTF (), amely tulajdonképpen létrehoz egy Java objektum alapján a C vonalon. Ezt követően, hogy törli a memóriát a free parancs ().

Annak érdekében, hogy sikeresen összeállítja a projekt meg kell native.c tartalmazza a header file stdio.h. Az Activity osztály is be az új funkciót:

majd getString funkcióval lehet dolgozni, például a következők szerint:

Android NDK munkájuk megköveteli Android SDK 1.5. Az NDK elérheti számos API, például OpenGL ES.

következtetés

Nos, ez minden. Azt hiszem, most már világos, hogy hogyan kell dolgozni a natív kódot. Sok esetben annak használata indokolt, de meggondolatlan használat natív kódot a projektek romboló hatású lehet.