Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Odsek za računarsku tehniku i računarske komunikacije
Projektovanje namenskihračunarskih struktura 1
Razvojni alati Androida
Alati za razvoj Android aplikacija
Glavni set besplatnih alata:
o Android Studio IDE
o Android SDK i NDK
o adb
o Emulator
o logcat
2020 2
IDE
Emulator
ADT ADB
Android
AppBuild
ToolsSource
Android Studio
Zvanično okruženje od 2015
Trenutno aktuelna verzija 3.6
Zasniva se na IntelliJ IDEA okruženju
Koji je proširen sa podrškom za Android
Google zvanično podržava AS
Visok stepen integracija sa Android SDK i NDK
Pogodan za o Razvoj koda
o Pronalaženje grešaka
o Profilisanje
o Dizajn grafičkog okruženja
2020 3
Finalni Android program APK
APK je Androidova arhiva (verzija ZIP) za jednu aplikaciju
Digitalno je potpisana (može i sa komercijalnim i debug ključem)
Sve što je potrebno za aplikaciju nalazi se u ovoj arhivio Programski kod
o Biblioteke
o Resursi
o Pomoćni fajlovi (na primer, Manifest)
2020 4
Android Debug Bridge - adb
Konzolna aplikacija na platformi za razvoj, deo Android SDK
Obezbeđuje klijent-server sistem, gde je klijent na host računaru (gde se odvija razvoj), a server na Android računaru o Android računar može biti i emulator
o Komunikacija se obavlja preko mreže ili preko USB
Omogućuje:o Listanje priključenih uređaja: adb devices
o Povezivanje sa uređajem: adb connect
o Instalaciju programa u Android računar: adb install apk_file
o Prenos datoteka na/sa Android uređaj: adb push moj_fajl /sdcard/
o Pregled sistemskog Log-a: adb logcat
o Rad sa konzolom na Android računaru (shell): adb shell
2020 5
Povezivanje sa Android uređajem
Provera prisustva uređaja:
adb devices
Fizički uređaj se spaja USB kablom
o Na uređaju potrebno je uključiti podršku za USB debagiranje
adb connect
Fizički uređaj je na lokalnoj mreži
o potrebno je da se poveže komandom:
adb connect x.x.x.x:port
2020 6
Emulator
Uz SDK stiže i emulator ciljne platforme (ARM, Intel, MIPS)
Mogu se birati različiti modeli (generički, ili emulatori pravihhardverskih uređaja) i različita okruženja (verzije OS-a, verzije API-ja)
Izvršava izvršni kod sa druge platforme (npr. ARM) na PC
Zasniva se na qemu programu, koji omogućuje on-the-fly prevođenjeinstrukcija
Nedostatak: sporije izvršavanje
Alternativa je da se instalira VirtualBox Android slika ili da se koriste x86 slike
Prednost emulatora: univerzalnost, nema potrebe za pravimuređajem, eksperimenti sa različitim platformama (veličina, RAM, ekran, rezolucija)
2020 7
Postupak generisanja aplikacije
Generisanje aplikacije je transformacija izvornog koda u izvršivu datoteku
Tokom generisanja, poziva se niz alata
Većina je nevidljiva za programera (osim možda gradle alata koji upravlja build procesom)
IDE skriva kompleksnost postupka, i nudi niz alata za njegovo ubrzavanje
Podrazumeva tesnu integraciju sa Android SDK i NDK
2020 8
Klasa R
Klasa R je automatski generisana klasa u Android projektu koja čuva informacije o korišćenim resursima u projektu
Resursi su stringovi, grafički elementi, rasporedi (layouts), boje
Čini spregu između Java sveta i stvarnih resursa
Kada se promene resursi, klasa R se mora ponovo generisati
Proces generisanja APK brine o tome
2020 9
/* AUTO-GENERATED FILE. DO NOT MODIFY.
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.rtrk;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
Resursi
Resursi mogu biti:
o animacije – folder anim
o liste boja kojeće se koristiti – folder color
o multimedija (slike, animacije, itd.) – folder drawable
o ostali fajlovi – folder raw android.resource://com.rtrk/raw/famous
o xml fajlovi koji opisuju prostorni raspored komponenti na ekranu Aktivnosti – folder layout
o opis menija – folder menu
o stringovi – folder values, fajl strings.xml i18n
localisation
ne moraju svi stringovi da se smeste u jedan strings.xml fajl
• tablestrings.xml, connectionstrings.xml i sl.
2020 10
Android manifest
U APK nalazi se i AndroidManifest.xml datoteka koju sistem generiše na osnovu parametara projekta u IDE
Datoteka sadrži metapodatke koje omogućavaju Android sistemu na telefonu da rukuje aplikacijom
Tokom instalacije i ažuriranja (update) sistem konsultuje ovu datoteku da bi se ona ispravno instalirala
U manifestu se minimalno nalazi
o Ime Java paketa
o Minimalni nivo API-ja za izvršavanje
o Dozvole koje aplikacija zahteva
o Spisak aktivnosti i servisa u APK datoteci
o Aktivnost od koje kreće izvršavanje programa
2020 11
Android manifest - primer
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rtrk"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="9" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".LayoutExamplesActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
2020 12
Načini instalacije aplikacije
Iz IDE okruženja
o Pokretanjem programa
o Pronalaženje i ispravljanje grešaka u programu
Ručno
o adb install MyApp.apk
o adb uninstall com.paket.MainClass
Sa javnog portala (Google Play)
o APK datoteka se preuzima sa servera i instalira na uređaju
Proverene aplikacije
2020 13
Podrška tokom razvoja
Android sajt za razvoj
o http://developer.android.com
Knjige
o Android Programming: The big nerd ranch guide
o Karim Yaghmour: Embedded Android: Porting, Extending, and Customizing
Forumi sa temama vezanim za Android razvoj:
http://stackoverflow.com
http://www.xda-developers.com/
2020 14
Rezime
Alati za razvoj olakšavaju i ubrzavaju razvoj softvera, i doprinose kvalitetu istog
o Direktno
o Indirektno
Mnoge stvari su sakrivene od strane IDE, ali je potrebno razumeti na koji način se generiše izvršni kod za Android – barem na visokom nivou
To znanje će biti potrebno kada nešto krene po zlu
2020 15