Tanulás dolgozni Android NDK, vagy hogyan kell használni a C kódot java projektek
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
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.