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ä GNU/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

## 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ä. Gartner arvioi Androidin markkinaosuudeksi älypuhelimissa 52,5&nbsp;% vuoden 2011 kolmannella neljänneksellä. Kesällä 2013 Androidin markkinaosuuden on arvioitu lähestyvän 70&nbsp;%:ta. Vuoden 2015 toisella neljänneksellä Androidin markkinaosuus oli 82,8&nbsp;%.

Älypuhelimien markkinosuudet vuoden 2016 lopussa jakaantuivat seuraavasti: Android 86,8&nbsp;%, iOS 12,5&nbsp;%, muut alle 1&nbsp;%.

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.

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.

## 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