Android-sovelluskehitys

**Android-sovelluskehitys** on Android-sovellusohjelmien luomista. Android-sovellusten kehittämiseen suositeltu ohjelmointikieli on Kotlin vuodesta 2019 lähtien. Myös Java on edelleen tuettu Android SDK -kehityspaketilla.
Android-sovelluksia voi kehittää myös käyttäen C++ -ohjelmointikieltä ja Android NDK:ta. Näiden tekniikoiden lisäksi on mahdollista toteuttaa niin sanottuja "hybridisovelluksia". Hybridisovellukset toimivat useammalla käyttöjärjestelmällä, mutta eivät pärjää suorituskyvyssä Android SDK:lla ja NDK:lla tehdyille sovelluksille. Lisäksi Android-laitteen sisäisiin laitteisiin, kuten kameraan tai kiihtyvyysanturiin päästään käsiksi vain käyttäen SDK:ta tai NDK:ta.

Android Runtime (ART) on Android-alustalla käytettävä ajoympäristö, joka kääntää ohjelmat natiiville konekielelle. ART on korvannut Dalvik-virtuaalikoneen Androidin versiosta 5.0 alkaen.

## Android-kehitystyökalut

Android SDK on ohjelmistokehityspaketti (*Software Development Kit*), jota käytetään Android-sovellusten toteuttamiseen. Android SDK sisältää kaikki Android-sovelluksen luontiin tarvittavat kirjastot, mukaan lukien kirjastot käyttöliittymien tekoon sekä debuggaustyökalut ja muita työkaluja sovelluskehitykseen.

Virallinen Googlen tarjoama kehitysympäristö on Android Studio, jonka mukana tulee Android SDK. Muita kehitykseen käytettäviä ovat muun muassa Eclipse ja Microsoft Visual Studio.

Pelien kehitykseen käytettäviä työkaluja ovat muun muassa Unity ja Unreal Engine.

Lisäksi Pascal-kielellä voi kehittää Android-sovelluksia ja tätä tukevia työkaluja ovat muun muassa Delphi ja Lazarus.

## Sovelluksien tekeminen

Käyttöliittymiä voi tehdä Androidin omalla rajapinnalla (mm. Jetpack) tai esimerkiksi Flutter-kirjastolla.

Sovelluksien kehitykseen voidaan käyttää Java, Kotlin ja C++-ohjelmointikieliä. Sovellukset paketoidaan APK- tai Android App Bundle (AAB) -pakettitiedostoihin, jotka sisältävät sovelluksen ohjelmakoodin lisäksi muun tarvittavan datan ja resurssitiedostot. Sovellukset asennetaan APK-pakettitiedostoista laitteelle.

Eri kielille ja kulttuureille suunnatut tekstit ja muut tiedot sijoitetaan resurssitiedostoihin, jotka liitetään sovelluksen mukaan.

## Ohjelmiston testaaminen
Androidille tehtyjä sovelluksia voi testata eri tavoin Android Studiossa: emulaattorilla, yksikkötesteillä (JUnit) ja erilaisten testaustyökalujen avulla (mm. App Crawler, Monkey Testing, monkeyrunner). Android Debug Bridge (adb) tukee testaamista fyysisellä laitteella langattoman yhteyden (Wi-Fi, Android 11 tai uudempi) tai USB-liitännän avulla.

Fyysisellä laitteella debuggaamista varten Android-puhelimesta löytyy valinnat, jotka kytketään päälle laitteen järjestelmäasetuksista.

## Esimerkki

Esimerkki Androidin Activity:stä. Activity on luokka, joka tarvitaan Androidissa aina käyttöliittymän näyttämistä varten.


```java
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Näytetään pop-up, jossa teksti "Hello world!"
        Toast.makeText(this, "Hello world!", Toast.LENGTH_SHORT).show();
    }
}
```


## Tietoturva
Jokainen Android-sovellus sijaitsee omassa hiekkalaatikossaan tietoturvan vuoksi:
* Android-käyttöjärjestelmä on usean käyttäjän Linux-käyttöjärjestelmä, jossa jokainen sovellus on eri käyttäjä
* järjestelmä asettaa jokaiselle sovellukselle yksilöllisen tunnuksen, joka on vain järjestelmän käytössä ja sovellus ei sitä tunne: järjestelmä asettaa käyttäjäoikeudet siten, että vain sovellukseen liitetty tunnus voi niitä käyttää
* jokaisella prosessilla on oma virtuaalikone, jolloin sovellukset suoritetaan eriytettyinä toisista sovelluksista
* jokainen sovellus suoritetaan omassa prosessissa

Sovellukset asennetaan APK-pakettitiedostoina tai Google Play -palveluun lähetettäväksi mahdollisesti myös Android App Bundle (.aab) -tiedostoina, joka on suositeltu muoto julkaistessa sovellusta.

## Sovelluksen julkaiseminen
Yleisin paikka Android-sovelluksen julkaisemiselle on Google Play -kauppa. Tunnuksen tekeminen Play-kauppaan maksaa 25 dollaria. Maksulla Google pyrkii minimoimaan niin sanottujen roskasovellusten julkaisemista. Tunnusten luomisen jälkeen käyttäjä voi julkaista sovelluksia Play-kaupassa. Yleensä sovelluksen näkyviin tuleminen muille käyttäjille kestää sovelluksen julkaisemisesta muutamia tunteja. Aika on kuitenkin verrattain vähäinen verrattuna esimerkiksi Applen App Storeen tuleviin sovelluksiin, sillä Google ei tarkista sovelluksia.

## Suorituskyvyn seuranta
Android Studiossa on profilointityökalu suorittimen, muistin, verkon ja akun käytön mittaamiseen.

Android vitals on Googlen hanke sovelluksien vakauden ja suorituskyvyn seurantaan laitteilla, joiden käyttäjät ovat valinneet sen käytön. Tällä sovelluskehittäjät saavat tietoa käyttökokemuksen laatuun vaikuttavista seikoista kuten vakaudesta, suorituskyvystä, akun käytöstä ja oikeuksien kieltämisestä.

## Ympäristömuuttujat
Android ei käytä ympäristömuuttujia, vaan property-järjestelmää. Jotkin tiedot voidaan asettaa ohjelman käännöksen yhteydessä ja joitakin voi muuttaa adb-komentotulkin avulla. Androidissa on `sysprop`-rajapinta property-arvojen käsittelyyn sovelluksesta. Propertyillä voidaan muuttaa myös käyttöjärjestelmän toimintaa, kuten SELinuxin käytäntöjä.

## Lähteet
* https://developer.android.com/studio/index.html
* http://jmitesolutions.com/blog/android-sovelluskehitys.html

### Viitteet