Voiko Android puhelimen salamaa kontrolloida natiivisti C/C++ -kielellä?
Vesanto, Risto (2024)
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-202404237214
https://urn.fi/URN:NBN:fi:amk-202404237214
Tiivistelmä
Tässä toiminnallisessa opinnäytetyössä käsitellään Android puhelimen salamankäyttöä natiivisti C/C++ -kielellä. Opinnäytetyö pyrki luomaan mallin siitä, miten natiivi C/C++ -ohjelmointi mahdollistetaan Android projektissa ja miten natiivi C/C++ -ohjelmoinnilla voidaan puhelimen salamaa kontrolloida.
Tietoperustassa käydään läpi Android-ohjelmointiin liittyviä työkaluja, sen yleisimpiä natiivi ohjelmointikieliä Kotlinia ja Javaa sekä Dalvik ja Android Runtime virtuaalikoneita. Tietoperusta kuitenkin painottuu C ja C++ -ohjelmointikielten sekä näiden natiivikäytön mahdollistavien työkalujen ja rajapintojen tarkasteluun. Tietoperustassa tehdään myös lyhyt katsaus Android-järjestelmän arkkitehtuuriin ja natiivi C/C++ -ohjelmoinnin tuomiin mahdollisiin suorituskyvyn hyötyihin. C/C++ -ohjelmointi mahdollistetaan NDK-työkaluilla käyttäen Java Native Interfacea (JNI). JNI mahdollistaa Kotlin/Java-ohjelmointikielten kommunikoinnin natiivi C/C++ -toteutuksen kanssa.
Opinnäytetyön tuloksena syntyi esimerkkisovellus Androidin API-tasolle 33. Sovelluksessa pystyttiin käyttämään fyysisen Android-puhelimen salamaa natiivisti C/C++ -kielellä, kamerakirjastoa hyödyntäen. Käyttöliittymä toteutettiin Kotlin-ohjelmointikielellä käyttäen Jetpack Compose-kom-ponentteja. Käyttöliittymän esteetön toiminta, kutsuttaessa natiivi C/C++ -toteutusta, mahdollistettiin Kotlin coroutinien avulla.
Tietoperustassa käydään läpi Android-ohjelmointiin liittyviä työkaluja, sen yleisimpiä natiivi ohjelmointikieliä Kotlinia ja Javaa sekä Dalvik ja Android Runtime virtuaalikoneita. Tietoperusta kuitenkin painottuu C ja C++ -ohjelmointikielten sekä näiden natiivikäytön mahdollistavien työkalujen ja rajapintojen tarkasteluun. Tietoperustassa tehdään myös lyhyt katsaus Android-järjestelmän arkkitehtuuriin ja natiivi C/C++ -ohjelmoinnin tuomiin mahdollisiin suorituskyvyn hyötyihin. C/C++ -ohjelmointi mahdollistetaan NDK-työkaluilla käyttäen Java Native Interfacea (JNI). JNI mahdollistaa Kotlin/Java-ohjelmointikielten kommunikoinnin natiivi C/C++ -toteutuksen kanssa.
Opinnäytetyön tuloksena syntyi esimerkkisovellus Androidin API-tasolle 33. Sovelluksessa pystyttiin käyttämään fyysisen Android-puhelimen salamaa natiivisti C/C++ -kielellä, kamerakirjastoa hyödyntäen. Käyttöliittymä toteutettiin Kotlin-ohjelmointikielellä käyttäen Jetpack Compose-kom-ponentteja. Käyttöliittymän esteetön toiminta, kutsuttaessa natiivi C/C++ -toteutusta, mahdollistettiin Kotlin coroutinien avulla.