Orice aplicație creată în Android conține un fișier manifest, AndroidManifest.xml, care este stocat în directorul rădăcină al proiectului. Manifestul vă permite să descrieți structura și metadatele aplicației dvs., componentele și cerințele acesteia.
Manifestul include noduri (tag-uri) pentru fiecare componentă (activitate în ceea ce privește, de servicii, surse de date și receptoarelor de radiodifuziune) care alcătuiesc aplicația dvs. și folosind filtre intenții (Filtre intenție) și puterea de a determina modul în care acestea interacționează cu fiecare prieten și cu programe terță parte.
Manifestul conține atribute pentru specificarea metadatelor (icoane și stiluri vizuale). Trebuie notat că nodurile suplimentare de nivel superior pot fi folosite pentru a descrie setările de securitate, testele unității (testele unității), cerințele hardware și de sistem.
Manifestul conține eticheta rădăcină
Utilizați atributul versionCode pentru a seta versiunea curentă a aplicației ca număr întreg. Această valoare internă este utilizată pentru a compara versiunile programului. Aplicați atributul versionName pentru a specifica versiunea publică care este afișată pentru utilizatori.
O etichetă tipică
android: versionCode = "1" și Android: versionName = "0.9 Beta">
[... noduri imbricate ale manifestului ...]
etichetă
• uses-sdk. Permite setarea versiunilor minime, maxime și țintă ale setului SDK care trebuie să fie disponibile pe dispozitiv, astfel încât aplicația să funcționeze corect. Pe baza versiunii SDK care este acceptată de platforma instalată și utilizând combinația dintre atributele minSDKVersion, maxSDKVersion și targetSDKVersion, puteți limita gama de dispozitive care pot rula aplicația.
Atributul minSDKVersion indică versiunea minimă a setului SDK care conține API-ul utilizat în programul dvs. Dacă nu specificați versiunea minimă, valoarea implicită va fi utilizată și aplicația dvs. nu va putea funcționa corect dacă încearcă să acceseze API-urile care nu sunt disponibile pe dispozitivul curent.
Atributul maxSDKVersion vă permite să determinați cea mai recentă versiune pe care sunteți gata să o susțineți. Aplicația dvs. va fi invizibilă în Android Market pentru dispozitivele controlate de un sistem cu o versiune mai recentă. Se recomandă setarea valorii pentru acest atribut numai dacă sunteți absolut sigur că aplicația nu funcționează pe o platformă cu o versiune superioară celei specificate.
targetSDKVersion vă permite să specificați platforma pentru care ați dezvoltat și testat aplicația. Prin setarea valorii pentru acest atribut, spuneți sistemului că pentru a susține această versiune specială, nu sunt necesare modificări legate de compatibilitatea directă sau înapoi:
• utilizări-configurare. Utilizați etichetele de configurare a utilizării pentru a specifica toate mecanismele de intrare acceptate de aplicația dvs. Puteți specifica orice combinație care conține următoarele dispozitive:
§ reqHardKeyboard - dacă aplicația dvs. are nevoie de o tastatură hardware, setați-o la adevărat;
§ reqKeyboardType - vă permite să specificați tipul de tastatură - nokeys, qwerty, twelvekey sau undefined;
§ reqNavigation - dacă aveți nevoie de un dispozitiv pentru navigare, specificați una dintre următoarele valori - nonav, dpad, trackball, wheel or undefined;
§ reqTouchScreen - Dacă aplicația dvs. are nevoie de un ecran tactil, selectați una dintre următoarele valori: notouch, stylus, finger, or undefined.
Puteți specifica mai multe configurații acceptate, cum ar fi un dispozitiv cu ecran tactil capacitiv, tastatură și tastatură hardware (fie qwerty, fie twelvekey), după cum se arată mai jos:
Atunci când stabiliți configurațiile necesare, rețineți că aplicația nu va fi instalată pe dispozitive care nu se potrivesc cu nici una dintre combinațiile specificate. În exemplul de mai sus, un dispozitiv cu o tastatură qwerty și un manipulator D-pad (dar fără un ecran tactil sau un trackball) nu va fi acceptat. În mod ideal, trebuie să dezvoltați aplicații în așa fel încât să funcționeze cu orice combinație de dispozitive de intrare, caz în care eticheta de configurare a utilizării este opțională.
• utilizări - caracteristică. Unul dintre avantajele Android este o gamă largă de platforme hardware pe care poate funcționa. Utilizați etichete cu utilizări simple și funcții pentru a specifica toate capabilitățile hardware cerute de aplicație. Acest lucru va împiedica instalarea programului dvs. pe dispozitive care nu îndeplinesc cerințele hardware. Puteți solicita asistență pentru orice echipament care nu este necesar pentru dispozitivele compatibile. Până în prezent, opțiunile de hardware oferă următoarele opțiuni:
§ android.hardware.camera (dacă aveți nevoie de o cameră hardware pentru a rula aplicația);
§ android.hardware.camera.autofocus (dacă doriți o cameră cu focalizare automată).
De asemenea, puteți utiliza eticheta de utilizare a funcției pentru a specifica versiunea minimă a OpenGL necesară pentru a rula aplicația. Utilizați atributul glSsVersion pentru a specifica versiunea OpenGL ES ca un număr întreg. Primii 16 biți corespund versiunii principale, iar ultimii - pentru versiunea minoră:
Cifrele exacte vor varia în funcție de hardware, dar în general dimensiunea și rezoluția ecranelor se determină după cum urmează:
§ ecranele mici - ecrane cu rezoluție mai mică decât cea obișnuită HVGA, de regulă vorbim de QVGA;
§ anyDensity - setați la true dacă aplicația dvs. este scalabilă pentru a fi afișată pe ecran cu orice rezoluție.
În SDK 1.6 (nivelul 4 al API), valorile implicite pentru fiecare atribut sunt adevărate. Utilizați această etichetă pentru a specifica dimensiunile ecranelor pe care nu le suportați:
Dacă este posibil, trebuie să optimizați aplicațiile pentru ecrane cu diferite mărimi și densități de pixeli, folosind directoarele cu resurse, așa cum se arată mai jos în capitol. Dacă specificați eticheta ecranului suport, excluzând anumite dimensiuni ale ecranului, aplicația nu poate fi instalată pe dispozitive cu ecrane neacceptate.
• Aplicație. Numai o instanță a acestei etichete poate fi prezentă în manifest. Utilizează atribute care conțin metadate pentru aplicația dvs. (inclusiv numele, pictograma și stilul vizual). La momentul proiectării, trebuie să setați atributul debuggable la true pentru a activa modul de depanare, deși pentru versiunile finale este probabil să fie dezactivat.
etichetă
[... etichete imbricate ...]
• activitate. etichetă
Folosind aceste etichete, adăugați principala activitate care va fi lansată mai întâi, precum și alte ecrane și casete de dialog care pot fi afișate. Încercarea de a executa o activitate fără descrierea corespunzătoare din manifest va duce la o excepție aruncată. Fiecare etichetă
§ serviciul. Ca și în cazul precedent, fiecare clasă Service trebuie să aibă o etichetă de serviciu (serviciile sunt discutate în detaliu în Capitolul 9). Etichetele de service acceptă noduri imbricate
§ furnizor. Cu această etichetă, specificați toate sursele de date din aplicație. Sursele de date descrise în Capitolul 7 sunt folosite pentru a controla accesul la baze de date și a schimba informații în cadrul unuia sau mai multor programe.
§ receptorul. Prin adăugarea etichetei receptorului la manifest, puteți înregistra receptorul de difuzare fără a porni aplicația. Cum de a face în capitolul 5, relative Receptoare de radiodifuziune aglutinante evoluțiile la nivel mondial: după ce vă înregistrați, acestea vor fi declanșate în cazul în care sistemul de emisie sau aplicarea intențiilor corespunzătoare. Prin înregistrarea lor în manifest, puteți face acest proces complet anonim. Când emisiile corespunzătoare de intenții, aplicația dvs. pornește automat, lansând receptorul înregistrat. • permisiune. Aplicațiile terților pot, de asemenea, să specifice permisiunile înainte de a oferi acces la componentele software comune. Pentru a restricționa accesul la componenta aplicației, trebuie să descrieți acreditările corespunzătoare din manifest. Pentru a face acest lucru, trebuie să utilizați eticheta de permisiune. Componentele aplicației curente pot necesita acreditări utilizând atributele de permisiune android: permission. Alte programe trebuie să utilizeze etichete cu permisiune de utilizare în manifestarea lor pentru a utiliza aceste componente protejate. În interiorul etichetei de permisiune, puteți specifica nivelul de acces furnizat de această autoritate (normal, periculos, semnătură, signatureOrSystem), o etichetă și o resursă externă care conține o descriere și o explicație a riscurilor care însoțesc emiterea acestei autorități. • instrumentare. Clasele derivate de la Instrumentation oferă un cadru pentru testarea componentelor software în timpul execuției lor. Acestea conțin metode de interceptare, prin care se monitorizează activitatea programului și interacțiunea acestuia cu resursele sistemului. Proiectul New Projects Wizard adaugă automat un fișier cu un manifest pentru fiecare proiect nou. Veți reveni la manifeste imediat ce veți cunoaște toate componentele care alcătuiesc aplicația. Fiecare din următoarele file conține o interfață vizuală pentru gestionarea setărilor aplicațiilor, a securității și a testelor, iar cea de-a doua (folosind numele fișierului cu manifestul) deschide accesul la codul original XML.
De interes deosebit este fila Aplicație, prezentată în Fig. 3.2. Utilizați-l pentru a gestiona nodul aplicației și arborele aplicației componentelor aplicației.
În panoul Atribute aplicație, specificați proprietățile aplicației - o pictogramă, o etichetă și un stil vizual. Mai jos este arborele Noduri de aplicație, cu care puteți gestiona componentele software, inclusiv atributele lor și toate filtrele implicate imbricate asociate cu acestea.
Ciclul de viață al aplicației pe Android
Spre deosebire de majoritatea platformelor tradiționale din Android, aplicațiile au un control limitat asupra ciclului de viață. Componentele software trebuie să monitorizeze și să răspundă schimbărilor în starea aplicației, acordând o atenție deosebită pregătirii pentru oprirea prematură.
În mod implicit, fiecare aplicație din Android funcționează în propriul proces - o instanță separată a mașinii virtuale Dalvik. Gestionarea memoriei și a proceselor este exclusiv prerogativa sistemului.
Deși aceasta este o raritate, ea poate fi făcută în așa fel încât componentele programului ale unei aplicații să funcționeze în diferite procese sau că mai multe aplicații utilizează același proces. Pentru aceasta, trebuie să setați atributul android: process pentru eticheta care descrie componenta corespunzătoare din manifeste.
Android își gestionează activ resursele, făcând tot posibilul pentru a menține dispozitivul receptiv. Adică, munca proceselor (în plus față de aplicațiile pe care ei înșiși le efectuează) poate fi, în unele cazuri, încheiată fără avertizare. Acest lucru se aplică situațiilor în care este necesar să se aloce resurse pentru aplicații cu o prioritate mai mare, care, de regulă, ar trebui să interacționeze cu utilizatorul în acel moment. Atribuirea priorităților pentru procese este discutată în secțiunea următoare.