A învăța să lucreze cu NDK Android sau cum să utilizeze codul de c în proiecte Java

A învăța să lucreze cu NDK Android sau cum să utilizeze codul de c în proiecte Java
Android NDK este un set de utilitare care vă permit să includă cod scris în C și C ++, în aplicația dumneavoastră. Un astfel de cod este numit nativ (nativ), din moment ce nu poate fi executat pe mașina virtuală, și compilate în cod mașină arhitectura de procesor dorit în mod direct.







Această lecție se aplică categoriei de avansate. Se înțelege că cititorul are unele competențe, în special,


Dacă oricare dintre aceste elemente cauzează probleme vă, nu contează, încă mai pot înțelege destul de materialul prezentat, cu toate acestea, unele măsuri pe care le va parea destul de complex. De fapt, întrebarea utilizarea Android NDK este adesea dificil chiar și pentru dezvoltatori călite. Cel mai probabil, va trebui să facă eforturi considerabile înainte de a putea configura mediul de dezvoltare și de a scrie un proiect de lucru.

Când aveți nevoie să utilizați Android NDK?

De obicei, dezvoltatorii decid să utilizeze cod nativ în două moduri: ei doresc să crească performanța aplicațiilor dumneavoastră, sau au un proiect gata făcute C / C ++ pe care doriți să cost eficient portat la Android. Să nu se grăbească afară și să înțeleagă, și când este recomandabil să se utilizeze NDK, iar atunci când aceasta nu are nevoie să facă.

Cei mai mulți programatori a fost de multe ori a sugerat că NDK ar trebui să fie utilizat în cazul în care cererea este procesorul intensiv. Există algoritmi pentru a încărca pe deplin procesor prin DalvikVM, în acest caz, utilizarea de cod nativ este într-adevăr probabil va produce creșteri de performanță. Cu toate acestea, nu trebuie să uităm că utilizarea de compilator JIT, de asemenea, vă permite să îmbunătățească performanța de cod Java. Mulți oameni cred că utilizarea aplicației în cod mașină înseamnă automat o creștere a vitezei aplicației. De fapt, nu este. Trecerea de la efectuarea cod Java pentru cod nativ și înapoi aduce deasupra capului, deci utilizați NDK este în valoare de numai dacă ați efectuat nici un calcul lung complicat, scris în întregime în C, iar în codul Java nu este destinat spasm frecventă a funcțiilor native.


Un alt motiv pentru care s-ar putea încuraja să utilizeze NDK este necesitatea de a aplicațiilor portuare gata. Este logic să nu rescrie piesele deja dovedite și raționalizate de cod pentru Java, și de a folosi NDK. Această abordare va permite, de asemenea, să facă în continuare cu costuri reduse modificări paralele în original și portat la aplicația Android. În special, această abordare este justificată în ceea ce privește aplicațiile care folosesc OpenGL ES.

Pasul 1: Instalarea și configurarea mediului de dezvoltare Android NDK


În primul rând, trebuie să skachatAndroid NDK. Pentru instalare și de lucru normale, avem nevoie, de asemenea, instrumente Cygwin 1.7 sau mai vechi, awk cea mai recentă versiune, precum GNU make 3.81 sau mai târziu.

Odată ce ați descărcat fișierul în NDK, dezarhivați-l într-un dosar. Puteți despachetați arhiva acolo, în cazul în care este Android SDK. Calea către directorul trebuie să vă înregistrați în PATH variabilă de sistem. În Windows pentru aceste scopuri este mai bine pentru a configura Cygwin.







Pasul 2: Crearea unui nou proiect

Crearea unui nou proiect Android. Pentru a evita probleme în viitor, salvați proiectul, astfel încât calea de a nu conținea caractere spațiu. De exemplu, creați un proiect, selectați „com.mamlambo.sample.ndk1“ ca numele pachetului, precum și activitatea - „AndroidNDK1SampleActivity“.

La baza proiectului, creați un folder numit „JNI“. Este aici că va conține fișierele cod nativ. Dacă sunteți familiarizat cu JNI, veți fi încântați să știți că Android NDK este în esență un JNI cu un set limitat de fișiere antet pentru a compila codul C.

Pasul 3: Adăugați codul C în proiect Android

Crearea unui dosar într-un fișier numit native.c JNI și adăugați următorul cod

Astfel creat preia parametrul funcție în obiect java String, o transformă într-o coloană C-string și scrie Logcat. Numele funcției Furious nu este intamplatoare, ea poartă informații importante: în primul rând, indică un nume de model ( „Java“), urmat de numele pachetului, numele clasei și numele metodei. Fiecare parte a numelui separate printr-o linie de subliniere.

Primii doi parametri ai funcției sunt de o importanță deosebită. Primul parametru specifică mediul JNI și este adesea utilizat cu funcții auxiliare. Al doilea parametru este obiectul de Java, care este parte a funcției.

Pasul 4: cod nativ din Java Apelul

Să creeze butonul de proiect, atunci când faceți clic, va suna următorul cod nostru:


De asemenea, este necesar să se declare funcția helloLog în clasă, în cazul în care este numit. Se poate face printr-o linie


Astfel, ne spune compilatorului și linker-ul că punerea în aplicare a acestei funcții ar trebui să se uite în dosarul de cod nativ.

În cele din urmă, trebuie să descărcați biblioteca, care va fi în cele din urmă compilate cod. Adăugați următoarea inițializare a clasei de activitate.

System.loadLibrary () asigură încărcarea numele bibliotecii. Puteți folosi orice nume.

Pasul 5: Crearea unui fișier de a face codul nativ

Pentru a compila cod nativ în dosarul JNI trebuie să fie Asigurați-fișier numit „Android.mk“. Mai jos este codul pentru a lega de exemplul nostru, adică, atunci când funcția este în fișierul native.c și ca numele bibliotecii specificat ndk1

Pasul 6: Compilarea cod nativ

După ce ați scris codul și a adăugat un fișier face în dosarul JNI, puteți începe compilarea. Pentru a face acest lucru pe linia de comandă (dacă executați Windows, rulați Cygwin) rula NDK-construi din dosarul de proiect. instrument NDK-build face parte din Android NDK. Dacă ați făcut totul corect, ar trebui să vedeți ceva de genul asta

A învăța să lucreze cu NDK Android sau cum să utilizeze codul de c în proiecte Java

Pasul 7: Rularea aplicației

Acum puteți rula proiectul, apăsați butonul și a vedea modul în care Logcat modificări.

Se poate întâmpla una din două lucruri: 1) proiectul poate începe și de a lucra ca te-ai aștepta. În acest caz, vă rugăm să acceptați felicitările mele. 2) Nu va fi o greșeală care Logcat afișat ca o „metodă nu a putut fi executată de activitate.“ E în regulă. Eclipse este configurat de obicei, astfel încât, atunci când începe un proiect este ea recompilat automat. Dacă această opțiune este dezactivată, trebuie să faceți manual ECLIPS recompilați proiectului. Pentru acest lucru înainte de a începe aveți nevoie pentru a apela menyuProject-> Clean din bara de instrumente Eclipse.

Pasul 8: Cum să se întoarcă un obiect dintr-o funcție nativă

Următorul exemplu demonstrează capacitatea funcției native returnează un obiect, cum ar fi String. Adăugați cod în fișierul native.c

Cu echipa malloc, am creat un tampon, care este apoi plasat folosind linia sprintf. Funcția pentru a reveni rezultatul corect, am folosit JNI funcția helper NewStringUTF (), care creează de fapt un obiect Java bazat pe linia C. După aceea, ne-am șters memoria cu comanda liberă ().

Pentru a compila cu succes proiectul trebuie să includă native.c stdio.h fișierul antet. Clasa de activitate ar trebui să anunțe, de asemenea, o caracteristică nouă:

apoi cu getString funcția poate lucra, de exemplu, după cum urmează:

Android NDK pentru munca lor necesită Android SDK 1.5. Cu NDK pot avea acces la mai multe API-ul, de exemplu pentru OpenGL ES.

concluzie

Ei bine, asta-i tot. Cred că acum este clar cum să lucrați cu cod nativ. În multe cazuri, utilizarea sa este justificată, dar nechibzuit de utilizare cod nativ în proiectele lor pot fi devastatoare.