Android ohjelmointi Mobiiliohjelmointi 2-3T5245
Mikä on Android? Linux kernelin päälle rakennettu, Googlen kehittämä sovelluspino mobiilisovelluksiin Erillinen versio puhelimelle ja taulutietokoneille Puhelimille uusin versio Gingerbread (v.2.3.5) ja taulutietokoneille Honeycomb (v 3.2) Alun perin tarkoitettu puhelimiin Google osti Android Inc.:n vuonna 2005 joka kehitteli käyttöjärjestelmää Sovellusohjelmointi Javalla Myös C ohjelmointi mahdollista, mutta vain osittain Räätälöity Java virtuaalikone Dalvik Virtuaalikone poistaa tarpeen muokata sovellusta eri laitteille sopiviksi
Miksi Java? Automaattinen muistinhallinta Ei muistivarauksia Automaattinen garbage collection tuhoaa käyttämättömät oliot Ei muistivuotoja Virtuaalikone mahdollistaa saman sovelluksen ajamisen eri laitteilla Tosin API tasot rajoittavat sovelluksen eteenpäin yhteensopivuutta eri Android versioiden välillä Uudella API tasolla saattaa olla uudempia ominaisuuksia joita aiemmat tasot eivät sisällä Sovelluskehittäminen helpottuu huomattavasti Ilmaisia Java kehitysympäristöjä saatavilla Esim. Netbeans, Eclipse, IntelliJ (Community Edition)
Android versiot Alustaversio Koodinimi API - taso Android (3.0.x, 3.1.x, 3.2) Honeycomb 11-13 Android 2.3-2.3.x Gingerbread 9-10 Android 2.2 Froyo 8 Android 2.0.x 2.1.x Eclair 7-5 Android 1.6 Donut 4 Android 1.5 Cupcake 3 Android 1.0-1.1 Base 1-2 API taso tarkoittaa julkaisun tukemia uusia paketteja kuten esim. API 9 tason, eli Gingerbreadin jälkeen Android on tukenut NFC:tä (Near Field Communication), mutta aiemmat API tasot ei tätä tue
Android SDK vs muut SDK Natiivi ohjelmointikieli Hinta Android Java (ja C) Ilmainen ios Objective-C 99$/vuosi (Apple Dev jäsenyys) Symbian C/C++ Ilmainen Windows Mobile/Phone C/C++/C# SDK ilmainen, mutta vaatii Visual Studion
Android arkkitehtuuri Sovellus Ohjelmistokehys Kirjastot Android Runtime Linux Kernel
Sovellus Taso jolla kaikki sovellukset ajetaan Vakiona Androidissa tulee mukana muun muassa seuraavat sovellukset: Sähköposti Tekstiviesti Kalenteri Web-selain
Ohjelmistokehys Tarjoaa rajapinnan sovelluskehittäjille Sisältää muun muassa Activity -managerin Ikkunamanagerin Paikannusmanagerin Puhelinmanagerin Kehyksen tarjoaman rajapinnan kautta kehittäjällä on mahdollisuus esimerkiksi käsitellä tilapalkkia ja lukea GPS paikannustietoihin jne.
Kirjastot C/C++ -kirjastot Perus järjestelmä C-kirjasto (libc) säädetty sulautetuille järjestelmille Mediakirjasto PacketVideon OpenCOREen pohjautuva kirjasto videoille, audiolle ja kuville SQLite Kompakti tietokanta LibWebCore Web-selainmoottori Sisältää Android selaimen ja sovellukseen liitettävän web-näkymän FreeType Tekstin mallinnus SGL 2D grafiikkamoottori 3D kirjastot OpenGL ES:ään (OpenGL:n sulautetuille järjestelmille implementoitu versio) perustuva kirjasto 3D grafiikan renderöimiseen joko raudalla tai softalla
Android runtime Sisältää Dalvik virtuaalikoneen Jokaiselle sovellukselle käynnistetään oma Dalvik instanssi Java ydinkirjasto joka sisältää kaikki Javan tärkeimmät kirjastot
Linux kernel Räätälöity Android ja sulautettuja järjestelmiä varten Käyttää Linux kernelin versiota 2.6 Sisältää: Ajurit (ääni, verkko, kamera, näppäimistö, näyttö jne.) Virranhallinnat Käyttäjäoikeudet Tietoturva Muistinhallinta Prosessihallinta Verkkopino
Sovelluskehitysympäristö Android SDK Asennettavissa mm. Eclipse IntelliJ NetBeans Virtuaalikone/emulaattori AVD (Android Virtual Device) Mahdollista tehdä useita eri Android versioilla Debugaus Adb (Android Debug Bridge) komentorivityökalu DDMS ja ADT työkaluja jotka hyödyntävät adb:tä DDMS (Dalvik Debug Monitor Server) ADT (Android Debug Tool)
Sovelluksen komponentit Activity Yksi sovelluksen käyttäjälle näkyvästä näkymistä Sovelluksessa voi olla useita aktiviteetteja Service Taustapalvelu jolla ei ole käyttöliittymää Esimerkiksi tiedonhaku, musiikintoisto tai paikannus Content Provider Sisällön tarjoaja esimerkiksi hakee, muokkaa tai tallettaa tietoja SQLite tietokannasta sovellukselle Broadcast Receiver Lähetyksen vastaanotin reagoi järjestelmälaajuisiin lähetyksiin, esim. tekstiviestin saapumiseen, alhaiseen akkuvaroitukseen
Sovelluksen perusrakenne Projektikansiot Src lähdekoodi Gen automaattisesti generoidut javatiedostot (R.java) Android x.x Android jar javakirjastopaketti Assets resurssikansio jossa voi säilyttää tiedostoja (haetaan AssetManager luokalla) Res resurssikansio sisältää esim. ikonit, ulkoasun määrittelevät layout xml tiedostot ja string muuttujien arvoja sisältävät xml tiedostot AndroidManifest.xml