**Android Studio** on Android-käyttöjärjestelmän virallinen ohjelmointiympäristö. Google esitteli sen Google I/O 2013 -konferenssissa. Sen 1.0-versio julkaistiin joulukuussa 2014 Eclipsen korvaajaksi Android-sovelluskehityksessä. Laajat kehitystyökalut sisältävällä Android Studiolla voi emuloida Android-sovelluksia eri laitteilla ja käyttöjärjestelmäversioilla. Android Studiolla voi kehittää sovelluksia Androidin normaaliversiolle, Wear OS:lle, Android Autolle ja Android TV:lle.

Android Studiossa on Gradle-pohjainen käännösjärjestelmä ja tuki ProGuardille. Android Studiossa on mukana emulaattori Android-laitteiden mallintamiseen tietokoneella ohjelmien testaamista varten. Android Studio tukee yksikkötestien käyttöä (JUnit) ja erilaisten testaustyökalujen käyttöä (Espresso Test Recorder, 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.
Android Studiossa on profilointityökalu suorittimen, muistin, verkon ja akun käytön mittaamiseen.

Android Studion käyttöliittymä
------------------------------

Android Studion hakemistoVasemmassa reunassa Android Studion hakemisto.
Jokaisessa Android-projektissa on oma hakemisto, josta näkee kaikki projektiin liittyvät moduulit ja tiedostot. Valitsemalla hakemiston yläreunasta Android- näkymän löytyy Android-sovellusmoduulista (app) löytyy jo oletuksena kansiot manifests, java ja res. Manifests-kansio sisältää tiedoston AndroidManifest.xml, jossa kuvataan sovelluksen olennaiset tiedot, kuten sovelluksen komponentit, käyttöoikeudet ja sovelluksen vaatimat laitteisto- ja ohjelmisto-ominaisuudet.

Java-kansio sisältää Kotlin- ja Java-lähdekooditiedostot ja lisäksi JUnit-testikoodiluokan, johon voi kirjoittaa paikallisia JUnit-testejä ohjelmalle. Sovellusmoduulin viimeinen kansio, res, sisältää kaikki muut ohjelmassa tarvittavat koodiresurssit; XML-asettelut, käyttöliittymän koodit ja bittikarttakuvat. Hakemiston yläreunasta voi vaihtaa hakemiston esitysmallia. Valitsemalla esimerkiksi Project-näkymän näkee koko projektin todellisen tiedostorakenteen.

Editori-ikkunasta (kuvassa oikealla isompi ikkuna) voi editoida valitsemaasi koodia valitsemalla hakemistosta editoitavan tiedoston tai luomalla uuden. Valitessa muokattavan tiedoston se avautuu koodieditorin yläpuolella oleviin välilehtiin, joissa on tallessa myös muut muokkauksen alla olevat koodit. Niiden yläpuolelta löytyy navigointipalkki, jonka kautta voi hakemiston sijasta avata tiedostoja muokattavaksi. Työkalupalkki löytyy samasta palkista navigointipalkin kanssa sen oikeasta reunasta. Sieltä löytyy työkalut ohjelman ajamiseen ja Android-emulaattori, jonka avulla voi testata ohjelman toimivuutta virtuaalisella puhelimella tai tabletilla. Lisää työkaluja ohjelman käyttöön löytyy ikkunan vasemmasta, oikeasta ja alareunasta. Näitä työkaluja ovat mm. TODO-lista, johon voi koodia kirjoittaessa lisätä muistamisen helpottamiseksi esimerkiksi myöhemmin tehtäviä koodin osia, sekä Problems-ikkuna, joka analysoi editori-ikkunassa työn alla olevan tiedostosta löytyvät koodivirheet.

Ominaisuudet
------------

Seuraavat toiminnallisuudet tarjotaan nykyisessä versiossa:

* Gradle-pohjainen rakennusapu
* Lint-työkalut, joilla voi etsiä suoritus-, käytettävyys-, versio- ja muita ongelmia.
* ProGuard-integraatio
* Templaatti-pohjaiset Wizardit, joilla voi luoda Androing-designejä sekä komponentteja.
* Monipuolinen Layout-editori, jolla on mahdollista vetää ja pudottaa UI-komponentteja.
* Tuki Android Wear -sovelluksien luomiselle
* Sisäänluotu tuki Google Cloud -alustalle
* Android Virtual Device (emulaattori), joka mahdollistaa sovelluksien debuggaamisen ja ajamisen sovelluksessa.

Android Studio tukee kaikkia samoja kieliä kuin IntelliJ, kuten esimerkiksi Java, C++ ja lisäosien avulla vielä enemmän. Android Studio 3.0 -versiosta eteenpäin on myös tuki Kotlinille. 

Android Gradle lisäosa 3.0.0 tukee kaikkia Java 7 ominaisuuksia, ja osajoukkoa Java 8 ominaisuuksista.  Android Gradle lisäosalla 4.0.0 on hieman laajempi tuki Java 8:lle. Kaikki  Gradle 4.0.0 tukemat Java 8 -ominaisuudet on lueteltu täällä. Java 8 ominaisuuksia on esim. Lambda-lausekkeet, joilla voi lyhtentää koodia "->" merkeillä ja lyhyemmällä syntaksilla. Lamda-lausekkeet ovat kuin nimettömiä metodeja, jotka lisätään suoraan sinne missä niitä käytetään. Ne ottavat sisään parametrejä ja antavat paluuarvon.  

Android Studiolla tehtyjä sovelluksia on mahdollista julkaista Google Play -sovelluskaupassa. Google Playssa julkaistavien sovellusten tulee noudattaa Googlen kehittäjien käytäntöpalvelua. Sovelluksen julkaisemiseksi tarvitsee Google Developer -tilin, jonka luominen maksaa 25$.

Android Studoissa on helppokäyttöinen integroitu versionhallintatuki (VCS support), muun muassa palveluille Git, GitHub, CVS, Mercurial, Subversion ja Google Cloud Source Repositories.

Versiohistoria
--------------

Lista Android Studion julkaistuista versioista.

| Versio | Julkaisupäivä |
| --- | --- |
| 1.0 | Joulukuu 2014 |
| 1.1 | Helmikuu 2015 |
| 1.2 | Huhtikuu 2015 |
| 1.3 | Heinäkuu 2015 |
| 1.4 | Syyskuu 2015 |
| 1.5 | Marraskuu 2015 |
| 2.0 | Huhtikuu 2016 |
| 2.1 | Huhtikuu 2016 |
| 2.2 | Syyskuu 2016 |
| 2.3 | Maaliskuu 2017 |
| 3.0 | Lokakuu 2017 |
| 3.1 | Maaliskuu 2018 |
| 3.2 | Syyskuu 2018 |
| 3.3 | Tammikuu 2019 |
| 3.4 | Huhtikuu 2019 |
| 3.5 | Elokuu 2019 |
| 3.6 | Helmikuu 2020 |
| 4.0 | Toukokuu 2020 |
| 4.1 | Lokakuu 2020 |
| 4.2 | Toukokuu 2021 |
| Arctic Fox (2020.3.1) | Heinäkuu 2021 |
| Bumblebee (2021.1.1) | Tammikuu 2022 |
| Chipmunk (2021.2.1) | Toukokuu 2022 |
| Dolphin (2021.3.1) | Syyskuu 2022 |
| Electric Eel (2022.1.1) | Tammikuu 2023 |
| Flamingo (2022.2.1) | Huhtikuu 2023 |
| Giraffe (2022.3.1) | Heinäkuu 2023 |
| Hedgehog (2023.1.1) | Tulevaisuudessa |
|

Käyttöjärjestelmävaatimukset
----------------------------

|  | Microsoft Windows | macOS | Linux |
| --- | --- | --- | --- |
| Käyttöjärjestelmäversio | Microsoft Windows 8/10 (64-bit) | macOS 10.14 Mojave tai uudempi | Mikä vain 64-bit Linux, joka tukee GNOME, KDE tai Unitya; GNU C Library (glibc) 2.31 tai myöhempää |
| Vaadittu RAM | 8 GB tai enemmän | 8 GB tai enemmän | 8 GB tai enemmän |
| Vapaa muisti | Vähintään 8 GB vapaata tilaa | Vähintään 8 GB vapaata tilaa | Vähintään 8 GB vapaata tilaa |
| Näytön vähimmäisresoluutio | 1280 × 800 px | 1280 × 800 px | 1280 × 800 px |

Esimerkki pääaktiviteetista
---------------------------

Alla olevaa koodi on esimerkki pääaktiviteetista. Se sisältää koodia, joka ajetaan pääaktiviteetin ollessa aktiivinen ohjelman suorituksen aikana. Pääaktiviteetin ohella on xml-tiedosto, joka sisältää kolme komponenttia: TextView, EditText ja Button. TextView on komponentti, joka näyttäytyy tekstinä käyttöliittymässä. EditText on komponentti, johon käyttäjä voi kirjoittaa. Button on komponentti, jota käyttäjä voi painaa. Esimerkissä esitellään, miten xml-tiedoston komponentteihin viitataan ja miten niitä voidaan käyttää.

```
public class MainActivity extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity\_main);

 TextView textView = (TextView) findViewById(R.id.textView); // Viittaus TextView-komponenttiin.
 EditText editText = (EditText) findViewById(R.id.editText); // Viittaus EditText-komponenttiin.
 Button button = (Button) findViewById(R.id.button); // Viittaus Button-komponenttiin.

 // Asetetaan Button-komponentille luokkakuuntelija, joka suorittaa sen sisältämän koodin kun Button-komponenttia painetaan ohjelman suorituksen aikana.
 button.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View view) {
 String editTextValue = (String) editText.getText().toString(); // Talletetaan EditText-komponentin sisältämä teksti muuttujaan.
 textView.setText(editTextValue); // Vaihdetaan TextView-komponentin sisältämä teksti muuttujan sisältämällä merkkijonolla.
 }
 });
 }
}

```

```
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout\_width="match\_parent"
 android:layout\_height="match\_parent"
 tools:context=".MainActivity">

 <TextView
 android:id="@+id/textView"
 android:layout\_width="wrap\_content"
 android:layout\_height="wrap\_content"
 android:layout\_marginTop="100dp"
 android:text="TextView"
 app:layout\_constraintEnd\_toEndOf="parent"
 app:layout\_constraintHorizontal\_bias="0.498"
 app:layout\_constraintStart\_toStartOf="parent"
 app:layout\_constraintTop\_toTopOf="parent" />

 <Button
 android:id="@+id/button"
 android:layout\_width="wrap\_content"
 android:layout\_height="wrap\_content"
 android:text="Button"
 app:layout\_constraintBottom\_toBottomOf="parent"
 app:layout\_constraintEnd\_toEndOf="@+id/editText"
 app:layout\_constraintStart\_toStartOf="@+id/editText"
 app:layout\_constraintTop\_toBottomOf="@+id/editText" />

 <EditText
 android:id="@+id/editText"
 android:layout\_width="wrap\_content"
 android:layout\_height="wrap\_content"
 android:layout\_marginTop="188dp"
 android:ems="10"
 android:inputType="text"
 android:text="Name"
 app:layout\_constraintEnd\_toEndOf="@+id/textView"
 app:layout\_constraintHorizontal\_bias="0.506"
 app:layout\_constraintStart\_toStartOf="@+id/textView"
 app:layout\_constraintTop\_toBottomOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>

```

Lähteet
-------

1. ↑  Android Studio Giraffe is stable, 25. heinäkuuta 2023 (viitattu 26. heinäkuuta 2023). Tieto on haettu Wikidatasta.
2. ↑  Google: Download Android Studio and SDK tools |  Android Developers *developer.android.com*. Viitattu 22. lokakuuta 2020. (englanniksi)
3. 1 2 3 4  Laakso, Janne: Google julkaisi Android Studio 1.0:n *Mobiili.fi*.  9. joulukuuta 2014. Viitattu 19. maaliskuuta 2017.
4. ↑  Android Studio Overview *android-doc.github.io*.  Arkistoitu 20.7.2022. Viitattu 20.7.2022. (englanniksi)
5. ↑  Shrink your Java and Android code *guardsquare.com*. Viitattu 20.7.2022. (englanniksi)
6. ↑  Run apps on the Android Emulator *developer.android.com*. Viitattu 20.7.2022. (englanniksi)
7. ↑  Test in Android Studio *developer.android.com*. Viitattu 21.7.2022. (englanniksi)
8. ↑  Create UI tests with Espresso Test Recorder *developer.android.com*. Viitattu 8.8.2022. (englanniksi)
9. ↑  Test your app *developer.android.com*. Viitattu 21.7.2022. (englanniksi)
10. ↑  Android Debug Bridge (adb) *developer.android.com*. Viitattu 21.7.2022. (englanniksi)
11. ↑  The Android Profiler *developer.android.com*. Viitattu 17.8.2022. (englanniksi)
12. 1 2 3  Developers Android.com: Meet Android Studio *developer.android.com*.  22.03.2023. Viitattu 25.03.2023.
13. ↑  App Manifest Overview  |  Android Developers *Android Developers*. Viitattu 25.3.2023. (englanniksi)
14. ↑  Build local unit tests *Android Developers*. Viitattu 25.3.2023. (englanniksi)
15. ↑  Run apps on the Android Emulator *Android Developers*. Viitattu 25.3.2023. (englanniksi)
16. ↑  Use Java 8 language features and APIs *developer.android.com*. Viitattu 30.7.2023.
17. ↑  Java 8+ APIs available through desugaring *developer.android.com*. Viitattu 30.7.2023.
18. ↑  Java Lambda Expressions *w3schools.com*. Viitattu 30.7.2023.
19. ↑  Mary Had a Little Lambda *oracle.com*. Viitattu 30.7.2023.
20. ↑  How to use Play Console *support.google.com*. Viitattu 30.7.2023.
21. ↑  Version control basics *developer.android.com*. Viitattu 30.7.2023.
22. ↑  Android Studio Release notes  28.07.2023. Android Developers Official Website. Viitattu 30.7.2023.
23. ↑  Google Android Studio 3.4 Now Available, Here's What's New - Appetiser *appetiser.com.au*.  April 25, 2019.
24. ↑  Android Studio 4.1 *android-developers.googleblog.com*.
25. ↑  Android Studio 4.2 available in the Stable channel *androidstudio.googleblog.com*.
26. ↑  Android Studio Arctic Fox available in the Stable channel *androidstudio.googleblog.com*.
27. ↑  Android Studio Bumblebee (2021.1.1) Stable *android-developers.googleblog.com*.
28. ↑  Android Studio Chipmunk *android-developers.googleblog.com*.  en
29. ↑  Android Studio Dolphin *android-developers.googleblog.com*.  en
30. ↑  Android Studio Electric Eel *android-developers.googleblog.com*.  en
31. ↑  Android Studio Flamingo *android-developers.googleblog.com*.  en
32. ↑  Android Studio Giraffe *android-developers.googleblog.com*.  en

Aiheesta muualla
----------------

* Verkkosivut (englanniksi)

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * n
* k
* m
Google |
| --- |
|  |
| 
* Perustaja ja pitkäaikainen toimitusjohtaja: Larry Page
* Pitkäaikainen toimitusjohtaja: Eric Schmidt
* Perustaja: Sergei Brin

 |
|  |
| Karttapalvelut | 
* Google Earth
* Google Maps
* Google Mars
* Google Moon
* Google Sky
* Google Map Maker
* Google Street View

 |
|  |
| Keskustelu- ja yhteisöpalvelut | 
* Google+
* Google Allo
* Google Duo
* Google Hangouts
* Google Meet
* Google Messenger
* Google Profiles
* Google Talk

 |
|  |
| Hakupalvelut | 
* Google-haku
* Google Knowledge Graph
* Google Scholar
* iGoogle
* Google Goggles

 |
|  |
| Analysointi ja mainostus | 
* Google AdSense
* Google Analytics
* Google Zeitgeist

 |
|  |
| Media ja video | 
* Google Kuvat
* Picasa
* Panoramio
* Snapseed
* Google Video
* Google Lens
* YouTube
* YouTube Music
* YouTube Premium

 |
|  |
| Käyttöjärjestelmät | 
* Android
* Android Things
* Chrome OS
* Google TV
* Wear OS

 |
|  |
| Laitteet | 
* Google Daydream
* Google Daydream View
* Chromebox
* Chromecast
* Google Glass
* Google Home
* Google Nexus
* Google Pixel

 |
|  |
| Muut | 
* Google Assistant
* Blogger
* Google Books
* Google Buzz
* Google Chrome
* Google Classroom
* Google Currents
* Google Desktop
* Google Docs
* Google Drive
* Google Finance
* Google Fit
* Gmail
* Google driverless car
* Google I/O
* Googleplex
* Google-kalenteri
* Google Keep
* Knol
* Google Kääntäjä
* Google-logo
* Google-muistikirja
* Google News
* Google Now
* Google Page Creator
* Google Play
* Google Play -kirjat
* Google Play -musiikki
* Google Play Pelit
* Google-syötteenlukija
* Google Sites
* Google Sidewiki
* Google Tango
* Google-työkalupalkki
* Google Trips
* Google Pay Send
* Google Web Accelerator

 |
|  |
| 
* Luettelot Googlen tuotteista ja ostamista yrityksistä
* Luokka

 |

 |

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * n
* k
* m
Android |
| --- |
|  |
| **Kehittäjät**: Google & Open Handset Alliance |
|  |
| Android-ympäristö | 
* Android Runtime
* Dalvik-virtuaalikone
* APK
* Android App Bundle

 | Androidin logo |
|  |
| Sovelluskehitys | 
* Yleistä
* Kotlin
* Eclipse
* Android Studio
* Google I/O
* Delphi
* Lazarus
* Free Pascal

 |
|  |
| Sovelluskaupat | 
* Google Play
* Amazon Appstore
* Samsung Galaxy Apps
* F-Droid
* Aptoide
* GetJar

 |
|  |
| Johdannaiset | 
* Android Auto
* Android Things
* Android TV
* Android Wear

 |
|  |
| Vaihtoehtoiset käyttöliittymät | 
* Asus Zen UI (Asus)
* Color OS (Oppo)
* Emotion UI (Huawei)
* Flyme (Meizu)
* HTC Sense (HTC)
* MIUI (Xiaomi)
* Optimus UI (LG)
* TouchWiz, Samsung Experience, One UI (Samsung)

 |
|  |
| Forkit ja muut versiot | 
* Android-x86
* CyanogenMod
* Fire OS (Amazon)
* LineageOS
* Nokia X Platform
* OxygenOS (OnePlus)
* Replicant

 |
|  |
| Muuta | 
* Google Daydream
* Tango
* Roottaus
* Material design

 |
|  |
| 
* Android-sovellukset
* Android-pelit
* Android-valmistajat
* Android-pohjaiset laitteet

 |

 |