Androidi tarkvara arendus

**Androidi tarkvara arendus** on protsess, mille käigus luuakse uut tarkvara Androidi operatsioonisüsteemile. Rakendusi luuakse enamasti Javas, kasutades Androidi tarkvaraarenduspaketti Android Software Development Kit (Android SDK).

21. septembri 2013 seisuga oli loodud üle 850 000 Androidi rakenduse, viimasel aastal loodi keskmiselt 20 000 programmi kuus.

## Tarkvaraarenduse tööriistad
### Android SDK

Android Software Development Kit (Androidi tarkvaraarenduspakett) sisaldab rakendusliidese teeke (API libraries) ning vajalikke tööriistu rakenduste kompileerimiseks, testimiseks ning silumiseks. Lisaks on seal veel Androidi emulaator, dokumentatsioon, näited ning õpetused rakenduste loomiseks. Android Software Development Kit vajab töötamiseks Windows XP-d või uuemat, Mac OS X 10.5.8 või uuemat (toetatud on ainult 32-bitine operatsioonisüsteem) või Linuxit (toetatud on kõik tänapäevased Linuxi töölaua distributsioonid).

Ametlikult toetatud arendustööriistaks on Eclipse IDE (Integrated Development Environment – integreeritud programmeerimiskeskkond), millele on lisatud ADT (Android Development Tools – Androidi arendustööriistad) pistikprogramm.

Androidi rakendused on pakitud apk-faili, mis sisaldab dex-faili (Dalvik Executable) ja programmi tööks vajalikke lisafaile (näiteks pildid või helifailid). dex-fail on lihtsalt kompileeritud lähtekood.
#### Android Debug Bridge
Android Debug Bridge (adb) on käsurea tööriist, mis võimaldab suhtlust nii emulaatori kui ka füüsilise Androidi seadmega. Tegemist on kliendi-serveritarkvaraga, millel on kolm osa:
***klientrakendus** – töötab arvutis, kus tarkvara arendatakse;
***server** – taustaprotsess arvutis, mis haldab ühendust arvuti ja Androidi seadme või emulaatori vahel.
***Daemon** (**D**isk **a**nd **E**xecution **Mon**itor – ketta- ja täitmismonitor) – taustaprotsess Androidi seadmes või emulaatoris.
Adb-tööriist asub kaustas: /platform-tools/ ja käskude üldkuju on järgmine:

```bash
$ adb [-d|-e|-s <serialNumber>] <command>
```


### Native Development Kit
Tarkvarapaketti Native Development Kit kasutatakse selleks, et kasutada Androidi seadmetes lisaks Javas kirjutatud programmidele ka C-s ja teistes keeltes kirjutatud rakendusi. Programme saab kompileerida tarkvaraga, mis lubab valida, millisele platvormile programm on mõeldud. Programmi paigaldamiseks kasutatakse adb-tööriista.

Näide programmi kompileerimisest ja paigaldamisest:

```bash
$ arm-none-linux-gnueabi-gcc -static hello.c -o hello #Koodi kompileerimine
$ adb push hello/hello data/hello                     #Koodi laadimine seadmesse
$ adb shell data/hello                                #Koodi käivitamine
Hello, Android!                                       #Programmi väljund
```


### Accessory Development Kit
Tarkvarapakett Accessory Development Kit on mõeldud kasutamiseks nii professionaalsetele riistvaratootjatele kui ka hobielektroonikutele, kes soovivad luua lisaseadmeid Androidi seadmetele. Accessory Development Kiti teek on loodud selleks, et muuta lisaseadmete suhtlus seadmega lihtsamaks. Lisariistvara kasutab suhtluseks Android Open Accessory (AOA) protokolli, mis töötab nii USB kui ka Bluetoothiga.

### MIT App Inventor

MIT App Inventor loodi, et populariseerida Androidi rakenduste loomist, muutes selle suhteliselt lihtsaks. Rakenduste loomiseks pole vaja suuri tarkvarapakette alla laadida ning kogu töö käib veebibrauseris. 
MIT App Inventor koosneb kahest osast:
***App Inventor Designer**, kus saab valida, millistest osadest rakendus koosneb.
***App Inventor Blocks Editor**, kus kirjutatakse programmi koodi. Samas pole tegemist tavalise tekstipõhise programmeerimise, vaid visuaalprogrammeerimisega, kus programmi eri osi kujutatakse tükkidena, mida kasutaja saab sobivasse kohta paigutada.
Valmis rakendust saab kasutada nii emulaatoris kui ka füüsilises seadmes.

### SDL
SDL (Simple DirectMedia Layer) võimaldab luua Androidi rakendusi C-keeles ning on mõeldud põhiliselt rakenduste jaoks, mis vajavad riistvarakiirendust. Androidil võimaldab SDL-i kasutamine lisada rakendustele OpenGL toe.
### Simple
Simple on BASIC-uga sarnane keel, mille süntaks on lihtne ning mis on põhiliselt mõeldud algajatele. Simple võimaldab kiirelt luua Androidi rakendusi. Simple'i programm koosneb kahest osast: komponentide kirjeldusest ja käitumisloogikast. 
Vastavat paketti enam aktiivselt edasi ei arendata, viimane uuendus oli 13. augustil 2009.

### RFO Basic
Tegemist on vabavaralise arendustööriistaga, mis võimaldab BASIC-uga sarnases keeles kirjutada Androidi rakendusi. RFO Basic töötab erinevalt suuremast osast arenduspakettidest Androidi seadmes. RFO Basic toetab suhtlust riistvara ja mitmesuguste sensoritega, võimaldab mitmikpuudet, oskab suhelda erinevate võrguprotokollidega (näiteks FTP ja HTTP) ning toetab paljusid muid funktsioone, mida kasutajal vaja võib minna. 
RFO Basic on parajalt lihtne algajale, kuid samas piisavalt võimas kogenenud programmeerijale.

Koodinäide:

```vb
'Programm kontrollib, kas fail temp.txt on olemas
'ning vajadusel loob selle.
'Siis kuvab faili sisu ning võimaldab seda muuta.
'Lõpuks salvestab failis tehtud muudatused.

file.exists b, "temp.txt"
if b=0 then console.save "temp.txt"
grabfile s$, "temp.txt"
text.input r$, s$
print r$
console.save "temp.txt"
```


### Basic4Android
Basic4Android on kommertstarkvara, mis on mõeldud kiireks prototüüpimiseks. Programmeerimine toimub MS Visual Basicuga sarnases keeles. Basic4Android on sarnane Simple'iga, kuid see on hästi dokumenteeritud ning keele arendamine toimub pidevalt. Basic4Android on üks vähestest pakettidest, kus nii IDE (Integrated Development Environment – integreeritud programmeerimiskeskkond) kui ka keel ise on mõeldud ainult Androidi rakenduste loomiseks.

### Android APIminer
Android APIminer on tööriist, mis täiendab vaikimisi Androidi rakendusliidese dokumentatsiooni näidetega ning meetodite juures kuvab, milliseid neist sagedamini koos kasutatakse. Koodinäited pärinevad vabavaralistest rakendustest.

## Android Developer Challenge
Android Developer Challenge on võistlus, kus tunnustatakse arendajaid, kes loovad kasulikke ja kvaliteetseid programme. Võistlus toimub kümnes kategoorias:
*Haridus
*Mängud: Pusle/*Casual*
*Mängud: Arkaad/*Action*
*Suhtlusvõrgustikud
*Elustiil
*Tootmine/tööriistad
*Meedia
*Meelelahutus
*Reisimine
*Varia
Võistlus toimub kahes voorus. Esimese voorus valitakse välja kakskümmend rakendust igast kategooriast. Hääletusest saavad osa võtta kõik Androidi kasutajad, kes laadivad Android Marketist alla vastava hindamisrakenduse. Hindamisrakendus võimaldab paigaldada, testida ja hinnata kõiki rakendusi, mis on võistlusele esitatud. Hindamisrakendus valib juhuslikud võistlustööd ning laseb kasutajal neid hinnata. Teises voorus toimub hääletamine samamoodi: kasutajad saavad vastava rakenduse abil ligipääsu teise vooru jõudnud rakendusele ja saavad neid hinnata. Lisaks kasutaja häältele, mis moodustavad 40% lõplikust hindest, loevad ka Google'i valitud kohtunike hääled, mis moodustavad 60% hindest. Nende alusel luuakse pingerida ning iga kategooria kolm ja üldarvestuse kolm parimat saavad rahalised auhinnad.

Kategooriate parimaid autasustatakse vastavalt 100 000, 50 000 ja 25 000 USA dollariga ning üldarvestuse parimaid vastavalt 150 000, 50 000 ja 25 000 dollariga.

## Kasutajaskonna loodud püsivara

Üks populaarsematest kasutajate loodud püsivaradest on CyanogenMod, mis loodi, et pakkuda paljudele Androidi seadmetele tarkvarauuendusi, isegi kui tootjapoolne toetus on lõppenud. Lisaks uuemale püsivarale pakub CyanogenMod paremat jõudlust ja stabiilsust, võrreldes tootjapoolse püsivaraga. Näiteks arendas CyanogenModi kasutajaskond CyanogenMod 7-t, mis põhineb Android 2.3-l, CyanogenMod 10-t, mis põhineb Android 4.1,-l ning CyanogenMod 10.1, mis põhineb Android 4.2-l.

## Ajalugu
Esialgne tagasiside Androidile ei olnud väga positiivne: tarkvara sisaldas vigu ning funktsionaalsus ja dokumentatsioon olid puudulikud.. Sellest hoolimata hakkasid esimesed programmid valmima juba mõne nädala jooksul pärast platvormi teatavakstegemist. Esimene kasutajatele kättesaadav rakendus oli ussimäng.

Arendajate jaoks loodi eraldi telefon: Android Dev Phone, millel puudus võrgulukk, ning kogu riistvara oli vabalt kasutatav. Kuigi tarkvaraarendamiseks saab kasutada tavalisi jaemüügis olevaid telefone, on jäetud arendajatele valik kasutada piiranguteta riistvaraplatvormi.
Esimene Android SDK versioon tuli välja 12. novembril 2007.

Android Developer Challenge'i meeskond tegi 15. juulil 2008 kogemata teatavaks uue SDK-versiooni olemasolu, saates ekslikult privaatlingi kõikidele võistlusest osavõtjatele, kuigi see oli mõeldud ainult esimesest voorust edasipääsenutele. Arendajate seas tekkis suur pahameel, sest Google ei võimaldanud kõigile ligipääsu uusimatele arendustööriistadele.

## Viited