Android

Android on älypuhelimille, taulutietokoneille ja älytelevisioille suunniteltu ohjelmistopino, joka sisältää käyttöjärjestelmän, väliohjelmistoja ja käyttäjän perusohjelmia. Siinä käytetään avoimen lähdekoodin Linux- käyttöjärjestelmän ydintä. Androidia kehitti alun perin Android Inc., jonka Google myöhemmin osti. Nykyisin sen kehittämisestä vastaa Open Handset Alliance Googlen johdolla. Android julkistettiin 5. marraskuuta 2007 Open Handset Alliancen perustamisen yhteydessä. Open Handset Alliance koostuu 84 laitteisto- ja ohjelmistovalmistajasta sekä teleoperaattorista. Suurin osa Androidin koodista on julkaistu Android Open Source Projectissa (AOSP). == Ominaisuudet == Androidin ohjelmistopino koostuu Linux-ytimestä, Bionic-C- kirjastosta ja muista järjestelmäkirjastoista sekä järjestelmäohjelmista. Lisäksi käyttöjärjestelmässä on Android-sovelluskehys ja sovellusohjelmat, jotka suoritetaan Android Runtime (ART) -ajoympäristöllä (ennen versiota 5.0 Dalvik-virtuaalikoneella). Käytettävissä olevat C-kieliset kirjastot ovat muun muassa surface manager, OpenCore media framework, SQLite- relaatiotietokantajärjestelmä, OpenGL ES 2.0 -ohjelmointirajapinta, WebKit- selainmoottori, SGL-grafiikkamoottori ja SSL. Sovelluksien käyttämä grafiikkakirjasto on siirtynyt Skia-kirjastoon, jossa on Vulkan-rajapinnan tuki laitteistokiihdytykseen. Useimmat Android-jakelut sisältävät Googlen suljetut Google Play -ohjelmistot. Tämä sisältää paitsi Googlen sovelluskaupan, myös Google Play Services -ohjelmistorajapinnan, jota ilman monet ohjelmat eivät toimi. Android on tukenut 32-bittisiä ARM, MIPS ja x86 -arkkitehtuureita sekä 64-bittisiä ARM v8, x86-64 ja MIPS-64 -arkkitehtuureita Android 5.0 Lollipop -versiosta lähtien. MIPS-tuki on poistettu Android NDK r17 -versiossa. Tammikuussa 2023 Google ilmoitti RISC-V-suorittimen tuesta. === Arkkitehtuuri === Androidin arkkitehtuuri alimpana (lähimpänä laitteistoa) on Linux-ydin. Ydin on muokattu versio Linuxista, jossa on joitakin lisäyksiä järjestelmän toimintaa varten. Ytimen päällä on HAL-kerros (). HAL-kerros erottaa laitteistovalmistajien kirjoittamat ajurit Androidin sovellukehyksestä. HAL-kerroksen päällä ovat järjestelmän palvelut, jonka päällä on Binder-IPC. Ylimpänä on Androidin sovelluskehys, jota sovelluskehittäjät useimmiten käyttävät. Linux-ytimen käytön johdosta Androidia on toisinaan kutsuttu Linux-jakeluksi kuten Ubuntu, Debian ja Red Hat. Androidissa ei kuitenkaan ole samaa ohjelmistopinoa kuin tyypillisessä Linux-jakelussa ja ei siksi ole rinnastettava jakelu. Android käyttää A/B-osiointimallia, jossa päivitykset asennetaan toiselle osiolle toisen ollessa käytössä. Kun laite käynnistetään uudestaan käyttöön otetaan päivitetty osio edellisen jäädessä varalle. Päivityksen vikatilanteessa järjestelmä palaa käyttämään aiempaa osiota. Vastaavaa menettelyä käyttää myös muun muassa ChromeOS. === Sovelluskehitys === Androidiin tarkoitettuja sovelluksia voidaan kirjoittaa Java- ja Kotlin-kielellä ja se käyttää Googlen kehittämiä Java-kirjastoja. Kotlin on vuodesta 2019 lähtien suositeltu kieli sovelluskehittäjille. Android SDK -kehityspaketti sisältää useita kehityksessä käytettäviä työkaluja. Lisäksi Android NDK -ohjelmistokehityspaketilla voidaan kehittää sovelluksia C- ja C++-kielillä. Android-sovellukset käyttävät XML- pohjaista resurssijärjestelmää, jonka mukaan sovelluskehys valitsee sopivan vaihtoehtoisen resurssitiedoston käytetyn alustan mukaan (kuten älypuhelin tai tabletti). Sovellukset asennetaan laitteisiin APK- tai Android App Bundle -pakettitiedostoilla. === Nykyiset ominaisuudet ja määrittelyt === Tiedon tallentaminen Tiedon tallentamiseen ohjelmille käytetään SQLite- relaatiotietokantaa. Viestintäteknologiat Android tukee muun muassa seuraavia teknologioita: GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi ja WiMAX. Selain Androidin selain perustuu avoimen lähdekoodin WebKit-moottoriin ja V8 JavaScript-moottoriin. Java-tuki Android -sovelluksia kirjoitetaan Javalla, mutta Android ei hyödynnä Java-virtuaalikonetta. Java-luokkia käännetään Dalvik-suoritettavaksi koodiksi ja suoritetaan Dalvik-virtuaalikoneella. Dalvik on Androidissa käytetty virtuaalikone, joka optimoitiin tietokoneita rajallisemmille mobiililaitteille. Toisin kuin jotkut mobiilialustat, Android ei tue J2ME-sovellusympäristöä. Mediatuki Android tukee seuraavia ääni-, video- ja kuvaformaatteja: H.263, H.264 (3GP- tai MP4-pakkauksessa), MPEG-4 SP, AMR, AMR-WB (3GP-pakkauksessa), AAC, HE-AAC (MP4- tai 3GP-pakkauksessa), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF ja BMP. Lisälaitteistotuki Android pystyy käsittelemään video- ja kuvakameroita, kosketusnäyttöjä, GPS:ä, kiihtyvyysmittareita, magnetometrejä, kiihdytettyjä 2D bit-BLIT:eja (accelerated 2D bit blits) ja kiihdytettyä 3D-grafiikkaa. Kehitysympäristö Kehitysympäristössä on laite-emulaattori, virheiden jäljittämistyökaluja, muistia ja suorituskykyä mittaavia työkaluja ja liitännäinen Eclipse- ohjelmointiympäristölle. Sovelluskauppa Google Play -sovelluskatalogi (entinen Android Market) sisältää sovelluksia, joita käyttäjä pystyy lataamaan ja asentamaan ilman tietokonetta. Alun perin Google Play:ssä oli vain ilmaisia sovelluksia, mutta maksullisia sovelluksia on ollut saatavissa 19. helmikuuta 2009 lähtien. Google Play kasvaa nopeasti. 30. huhtikuuta 2010 siinä oli yli 50 000 sovellusta ladattavissa. Monikosketus Android tukee monikosketusta. Googlen julkistamat päivitykset Nexus One- ja Motorola Droid -puhelimille ottavat monikosketuksen käyttöön. Bluetooth Tuki A2DP:lle (Advanced Audio Distribution Profile) ja AVCRP:lle (Audio/Video Remote Control Profile) lisättiin Androidiin versiossa 1.5. Versio 2.0:n mukana lisättiin tiedostojen lähettäminen (OPP) ja yhteystietojen hakeminen (PBAP) Bluetoothin kautta. Version 2.2:n mukana lisättiin 'voice dialing' ja kontaktien yhteystietojen lähettäminen puhelimien välillä. Moniajo Käyttäjä pystyy ajamaan monta sovellusta samanaikaisesti. == Päivityshistoria == Androidista on julkaistu uusia versioita julkistuksen jälkeen. Uudet versiot yleensä korjaavat virheitä ja lisäävät uusia ominaisuuksia. Androidin lähdekoodi (vuonna 2010) sisälsi 12 miljoonaa koodiriviä, josta 3 miljoonaa riviä oli XML-koodia, 2,8 miljoonaa riviä oli C-koodia ja 2,1 miljoonaa riviä oli Java-koodia. Vuonna 2010 Androidissa oli eroja, joita on myöhemmin liitetty takaisin Linux-ytimeen. Android sisälsi muutoksia lukituksiin ja turvamalliin. Google on kehittänyt ”Generic Kernel Image” (GKI) projektia, jonka tavoitteena on helpommat päivitykset Androidissa käytettyyn käyttöjärjestelmän ytimeen. Tyypillisesti muutokset pitkän aikavälin tuen (”Long Term Support”, LTS) Linux-ytimestä tuodaan ”Android Common” -haaraan, josta viedään muutoksia järjestelmäpiirin tekijän haaraan ja lopulta varsinaisen laitekohtaisen ytimen haaraan. GKI- versio on ytimen käännös, jota voi käyttää kaikilla laitteilla. Tavoitteena on toimittaa ytimen päivitykset Play-kaupan kautta. Aiemmin kehitetty Generic System Image (GSI) on Androidin versio, jota voidaan suorittaa kaikilla laitteilla modularisoinnin avulla. GKI vähentäisi kolme versiohaaraa yhdeksi. GKI on julkaistu Android-versiossa 12. Ohjelmistokehityspaketin modularisoinnilla Google pyrkii toimittamaan uusia ominaisuuksia kehittäjille ilman koko käyttöjärjestelmän päivitystä. Google on kertonut tavoitteesta vähentää teknistä velkaa kehitysmallilla, jossa uudet ominaisuudet päätyvät ylävirtaan ensinnä (upstream first). Valmistajakohtaiset ominaisuudet voidaan sijoittaa valmistajakohtaisiin moduuleihin. Vuodesta 2019 lähtien Google on käyttänyt Rust-kieltä Android-käyttöjärjestelmän uusiin ominaisuuksiin Javan ja Kotlinin rinnalla. Rustista tuli tuettu kieli Android 12:ssa. Android Open Source Projectissa oli noin 1,5 miljoonaa riviä Rust-kielistä lähdekoodia vuoden 2022 lopussa ja Android 13:ssa 21 prosenttia uudesta natiivista koodista on tehty Rustilla. == Käyttöliittymät == Vain harvat Android-laitteet käyttävät muokkaamatonta eli ”puhdasta” Androidia. Useimmat Android- valmistajat käyttävät laitteissaan esiasennettuna omaa käyttöliittymäänsä, joka eroaa puhtaasta Androidista oletussovellusten ja graafisen ilmeen osalta. Erityisesti monien kiinalaisten valmistajien käyttöliittymät muistuttavat graafiselta ilmeeltään Applen iOS:ää, ja niistä puuttuu iOS:n tavoin sovellusvalikko. == Suosio == NPD Group -tutkimusyhtiön mukaan vuoden 2010 ensimmäisen neljänneksen aikana Android nousi Yhdysvaltain toiseksi myydyimmäksi mobiilialustaksi. BlackBerryn RIM-käyttöjärjestelmää käyttäviä mobiililaitteita myytiin eniten ja Applen iOS-käyttöjärjestelmää käyttäviä laitteita myytiin kolmanneksi eniten. Android nousi älypuhelinten markkinajohtajaksi vuoden 2010 viimeisellä neljänneksellä.http://uk.reuters.com/article/2011/01/31/oukin-uk-google-nokia- idUKTRE70U1YT20110131 Gartner arvioi Androidin markkinaosuudeksi älypuhelimissa 52,5 % vuoden 2011 kolmannella neljänneksellä. Kesällä 2013 Androidin markkinaosuuden on arvioitu lähestyvän 70 %:ta. Vuoden 2015 toisella neljänneksellä Androidin markkinaosuus oli 82,8 %. Älypuhelimien markkinosuudet vuoden 2016 lopussa jakaantuivat seuraavasti: Android 86,8 %, iOS 12,5 %, muut alle 1 %. Androidista tuli internetin käytetyin alusta vuonna 2017 ohittaen muun muassa Windowsin. Googlen mukaan vuonna 2021 maailmassa on käytössä yli kolme miljardia Android-laitetta. Androidille on julkaistu 2,9 miljoonaa sovellusta Google Play -kaupassa. == Tietoturva == Kuluttajajärjestö Whichin mukaan maaliskuussa 2020 kaksi viidesosaa maailman Android-laitteista oli tietoturvaltaan uhanalaisia, koska niihin ei enää tehdä ohjelmistopäivityksiä. Päivityksiä ei enää tehdä Androidin versioihin 1.0–7.0. Vielä maaliskuussa 2020 näitä ohjelmistoversioita pyörittäviä laitteita oli päivittäisessä käytössä yli miljardi kappaletta. Androidin ”tehdasasetusten palautuksen” on todettu olevan tehoton menetelmä laitteella olevien tiedostojen tuhoamiseksi. Esimerkiksi yleinen tapa myydä käytetty laite vieraalle henkilölle nettihuutokaupassa aiheuttaa riskin vuotaa kaikki puhelimella olleet kuvat, kirjautumistiedot ja muut tiedostot. Tämä johtuu siitä että Android ei uudelleenkirjoita käytettyjä alueita muistista uudelleen bitti bitiltä. Vuoden 2015 tammikuussa puolet Android-laitteista ovat suojaamattomia WebView-ominaisuudesta löytyneen haavoittuvuuden johdosta. Kyseinen haavoittuvuus koskee Jelly Bean (4.1–4.3) -versioita, joihin Google ei enää tee korjauksia. Tammikuussa 2015 suojaamattomia Android laitteita on noin miljardi. Androidin 4.4-versiossa WebView'sta luovuttiin ja tilalle otettiin Blink-renderöintimoottori, jossa vastaavaa haavoittuvuutta ei ole havaittu. Haavoittuvuuksien testaamiseen keskittynyt Metasploit julkaisi 15.1.2015 ohjelmastaan version, joka sisälsi 11 eri WebView-haavoittuvuutta, joita ei tulla korjaamaan.Extremetech Google throws nearly a billion Android users under the bus, refuses to patch OS vulnerability Google aloitti elokuussa 2015 kuukausittaiset tietoturvapäivitykset Android-laitteilleen. Samalla Androidin asetuksiin lisättiin kohta, josta laitteen tietoturvatason voi tarkistaa. Isoista valmistajista ainakin LG, Motorola ja Samsung ovat sitoutuneet kuukausittaisten tietoturvapäivitysten toimittamiseen. Google on lisännyt SELinuxin käyttöä sovelluksien oikeuksien rajoittamiseen. SELinux on ollut Androidissa versiosta 4.3 lähtien. === Paikkatiedon vakoilutoiminto === Android-puhelimet ja tabletit lähettivät vuonna 2017 Googlelle tietoja puhelimen lähistöllä olevien tukiasemien osoitteista, vaikka käyttäjä olisi kytkenyt paikannustoiminnon pois puhelimen asetuksista tai vaikka puhelimessa ei olisi SIM-korttia paikallaan. Google ilmoitti marraskuussa 2017 lopettavansa automaattisen paikkatietojen keräämisen.Google seuraa Android- käyttäjiä vaikkei puhelimessa ole sim-korttia – tunnusti vasta jäätyään kiinni. 22.11.2017. https://www.is.fi/digitoday/mobiili/art-2000005459533.html == Variaatiot == Androidista on eri versioita eri käyttötarkoituksiin kuten Android Wear päällepuettaviin laitteisiin ja Android Auto autoteollisuuteen. Amazonilla on Androidista forkattu Kindle Fire -laitteille tarkoitettu Fire OS. Androidin lähdekoodi on avointa lähdekoodia lukuun ottamatta Googlen omia Play-palveluita ja nimi Android on Googlen tavaramerkki. Muun muassa Blackphonen PrivatOS on perustunut Androidiin ilman Google Play-palveluita. Lähdekoodit PrivatOS:n käyttämään versioon Linux-ytimestä on julkaistu kuten GPL-lisenssin alla vaaditaan, mutta suuri osa Android/AOSP-projektista on BSD- tai Apache-lisenssillä, joka ei vaadi lähdekoodien julkaisua eikä näitä osia ole siten julkaistu. GrapheneOS on yksityisyyteen keskittyvä forkki Androidista. emteria.OS on AOSP-projektiin perustuva muokattu versio Androidista. CyanogenMod on avoimen lähdekoodin versio, jonka seuraaja on LineageOS. Myös Replicant on avoimen lähdekoodin versio. OmniROM on useiden CyanogenModin kehittäjien AOSP-projektiin perustuva versio, joka perustettiin kun Cyanogenin ilmoitettiin muuttuvan kaupalliseksi. Muita variaatioita ovat muun muassa Huawein HarmonyOS, OnePlussan OxygenOS ja Nokian Nokia X Platform. == Katso myös == * Android Auto * Android One * Android Things * Android TV * Android Wear * Luettelo Android-valmistajista * Android Studio == Lähteet == == Aiheesta muualla == * Android-projektin sivusto * Open Handset Alliancen sivusto * Luokka:Seulonnan keskeiset artikkelit