Android Studio: Συνοπτικός οδηγός

Σχετικά έγγραφα
Οδηγίες για την εγκατάσταση του πακέτου Cygwin

2.1 Σύνδεση Εξωτερικής Συσκευής στο IDE

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

Δημιουργία μιας εφαρμογής Java με το NetBeans

Οδηγίες εγκατάστασης και χρήσης Java σε προσωπικό υπολογιστή

Αντικειμενοστρεφής Προγραμματισμός

Εισαγωγή στο πρόγραμμα Microsoft word 2003

Γι αυτό το λόγο όπως έχει ήδη αναφερθεί, εκτός από την προβολή Design, υπάρχει η προβολή Text όπου μπορείτε να δείτε σε xml το layout.

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

ΜΑΘΗΜΑ Άνοιγμα Της Εφαρμογής Επεξεργασίας Κειμένου. 2. Κύρια Οθόνη Της Εφαρμογής Κειμένου ΣΤΟΧΟΙ:

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

ANDROID Προγραμματισμός Εφαρμογών

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Ανάπτυξη εφαρμογής Android για την παροχή υπηρεσιών καθοδήγησης στους χρήστες. ΟΝΟΜΑΤΕΠΩΝΥΜO ΣΠΟΥΔΑΣΤH ΓΚΟΥΡΝΕΛΟΣ ΛΑΜΠΡΟΣ ΑΜ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

ΜΑΘΗΜΑ 10 Ο ΟΡΓΑΝΩΣΗ ΤΗΣ Β ΓΙΑ ΧΡΗΣΤΕΣ (NON-EXPERTS) Α. ΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΕΠΙΛΟΓΩΝ 1. TOOLS DATA UTILITIES SWITCHBOARD MANAGER YES

1. Γνωριμία Με Το Περιβάλλον Του Ηλεκτρονικού Υπολογιστή

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ

Χρήσιμες Ρυθμίσεις του Windows 7 στον Η/Υ σας

ΠΑΡΑΡΤΗΜΑ ΓΡΕΒΕΝΩΝ ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΣΙΑΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Κεφάλαιο 2.3: Ρυθμίσεις των Windows

Οδηγός γρήγορης εκκίνησης

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ MOODLE

Πρακτικές οδηγίες για την Επεξεργασία Κειμένου

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ SQL SERVER 2008 R2 Express

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ OPEN ECLASS

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Microsoft Excel Κεφάλαιο 2: Η δομή ενός φύλλου εργασίας... 26

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

Εισαγωγή στην Ανάπτυξη Εφαρμογών Android

Android Studio για Linux

Εργαστηριακές Σημειώσεις

ΕΠΛ : Εισαγωγή στην Επιστήμη της Πληροφορικής Σημειώσεις Εργαστηρίων (2009)

Android Studio για Windows

Σε αυτό το εργαστήριο θα εγκαταστήσουμε μια διανομή Linux Fedora Core 4 από DVD. Παρακάτω ακολουθούν τα βήματα της εγκατάστασης.

Atlantis - Νέο user interface

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

ΟΔΗΓΟΣ ΧΡΗΣΗΣ WEBMAIL ΤΕΙ ΚΑΛΑΜΑΤΑΣ

Έλεγχος φωτισμού από το Smartphone ή Tablet σας, μέσω του

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

Ενότητα 18 Οργάνωση των Βιβλίων Εργασίας

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

JOOMLA CMS ΒΑΣΙΚΗ ΠΑΡΑΜΕΤΡΟΠΟΙΗΣΗ (PART I)

Περιεχόμενα. Μέρος 1: Βασικές έννοιες της πληροφορικής Πρόλογος... 11

Ο Οδηγός γρήγορης εκκίνησης

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Οδηγός Βήμα-Βήμα για να εγκαταστήσετε τα Windows 7 στον Η/Υ σας

Εγχειρίδιο Χρήσης Εφαρμογής TRS Client

Ξεκινώντας με το MIT Αρρ Inventor. 1 η Εργασία

Οδηγός Χρήσης για Windows

Οδηγός Εγκατάστασης

Οδηγίες Εγκατάστασης της εφαρμογής Readium και Readium για μαθητές με αμβλυωπία για την ανάγνωση βιβλίων epub σε Υπολογιστή.

1. Άνοιγμα Και Κλείσιμο Της Εφαρμογής Φυλλομετρητή Ιστού (Internet Explorer)

ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΟΥ Explorer & Outlook 2013

Epsilon Net PYLON Platform

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

Εφαρμογή Ηλεκτρονικής Υποβολής Δηλώσεων Ε9. Οδηγίες Χρήσης

2.9.3 Χρήση λογισμικού παρουσιάσεων για τη δημιουργία απλών παρουσιάσεων ρουτίνας

Δημιουργώντας μια εφαρμογή ζωγραφικής. 2 ο Μάθημα

Windows XP. Αρχικές Ρυθμίσεις - Οργάνωση Αρχείων. 1. Ρυθμίσεις. 2 Οργάνωση Αρχείων

1. Βασικές Λειτουργίες των Windows

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Computer Setup Οδηγός χρήσης

Microsoft PowerPoint 2007

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

Αλλαγή της εμφάνισης κειμένου: μέγεθος γραμματοσειράς, είδος γραμματοσειράς

Εγκατάσταση Microsoft SQL Server

ΤΕΙ ΗΠΕΙΡΟΥ Τμήμα Τηλεπληροφορικής & Διοίκησης

Χρήσιμες Λειτουργίες των. Windows 7

ΔΗΜΙΟΥΡΓΙΑMOBILE ΕΦΑΡΜΟΓΩΝ ΓΙΑ ANDROID ΣΥΣΚΕΥΕΣ ΜΕ APPINVENTOR

Microsoft PowerPoint 2010 Πανεπιστήμιο Κύπρου

Sricam R CONCEPTUM. SricamPC. Εγχειρίδιο εφαρμογής

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ GRS-1

1. O FrontPage Explorer

Κεφάλαιο 1 Χρήση προτύπου 2. Κεφάλαιο 2 Τροποποίηση μιας παρουσίασης 9. Κεφάλαιο 4 Προσθήκη αντικειμένων 26. Κεφάλαιο 5 Ειδικά εφέ 35

Browsers. Λειτουργικότητα και Παραμετροποίηση

Μπορείτε τα δείτε βιντεάκι με τη διαδικασία εδώ:

ZTrade One version 1.1

Εγχειρίδιο εγκατάστασης και βασικής παραμετροποίησης σεναρίου εστίασης

Σενάριο Εστίασης Win XP:

Πρόσβαση μέσω webdav. ΚΕ.Δ.Δ. Τ.Ε.Ι. Μεσολογγίου. 3. Στην συνέχεια πληκτρολογούμε το username και το password και πατάμε στο κουμπί Είσοδος.

Οδηγός Εισαγωγή Χρηστών σε LDAP Server με χρήση. LdapAdmin TEMPLATE

Βιοϊατρική τεχνολογία

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΥΠΗΡΕΣΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΥΠΟΔΟΜΗΣ ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΤΗΣ ΥΠΗΡΕΣΙΑΣ ΤΗΛΕΟΜΟΙΟΤΥΠΟΥ (FAX) ΜΕΣΩ ΤΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ WEBUTIL

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse

ΣΥΣΤΗΜΑΤΑ SCADA. Μέρος 5. Δικτύωση για Απομακρυσμένο Έλεγχο και Μεταφορά Δεδομένων

Δημιουργώντας μια εφαρμογή ζωγραφικής. 2 η Εργασία

Μετά την εκκίνηση της εφαρμογής και πριν ξεκινήσει οποιοδήποτε έργο, εμφανίζεται μια οθόνη η οποία χωρίζεται σε μέρη.

Εγκατάσταση της έκδοσης 5.30

Βασική εγκατάσταση Asterisk σε Linux

ΔΕ10: Πληροφοριακά Συστήματα Διοίκησης IΙ Εργαστήριο # 2

Μενού Προβολή. Προβολές εγγράφου

Προγραμματισμός Ι. Εργαστήριο 1 ο Περιβάλλον Εργασίας. Νικόλαος Δ. Τσελίκας Κυριακή Θ. Σεκλού

Transcript:

Android Studio: Συνοπτικός οδηγός 1. Λήψη και Εγκατάσταση http://developer.android.com/sdk/installing/studio.html. Απαιτήσεις Συστήματος (Windows) o Microsoft Windows 8/7/Vista (32 ή 64-bit) o 2 GB RAM minimum, 4 GB RAM (συνιστώμενη) o 400 MB hard disk space o Τουλάχιστον 1 GB για το Android SDK, εικόνες emulator system και caches o 1280 x 800 ελάχιστη resolution οθόνης o Java Development Kit (JDK) 7 Λήψη του.exe αρχείου για windows https://dl.google.com/dl/android/studio/install/1.4.0.10/android-studio-bundle- 141.2288178-windows.exe Εγκατάσταση: o Για να ελέγξουμε αν έχουμε εγκαταστήσει τη σωστή έκδοση του JDK (6 ή ανώτερη) πληκτρολογούμε javac version σε ένα terminal o Εκτελούμε το αρχείο.exe και ακολουθούμε το setup wizard για την εγκατάσταση του Android Studio και των αναγκαίων εργαλείων SDK. o Σε περίπτωση που δεν είναι δυνατόν να εντοπισθεί η εγκατάσταση της Java πρέπει να υποδειχθεί η σωστή τοποθεσία: o Start menu > Computer > System Properties > Advanced System Properties. o Στη συνέχεια: Advanced tab > Environment Variables. o Προσθέτουμε νέα μεταβλητή συστήματος: JAVA_HOME που «δείχνει» στον κατάλογο JDK, π.χ. C:\Program Files\Java\jdk1.7.0_21. Τα επιμέρους εργαλεία και άλλα SDK packages βρίσκονται εκτός του Android Studio application directory. Για άμεση πρόσβαση, μπορούμε μέσω ενός terminal να μεταφερθούμε στην αντίστοιχη τοποθεσία. Π.χ. \Users\<user>\sdk\ o Λήψη των sdk tools 1

Οθόνη καλωσορίσματος (Εμφανίζεται όταν δεν υπάρχει ανοιχτό project) Διαμόρφωση του Android SDK o Στην οθόνη καλωσορίσματος: Configure Project defaults project structure 2

o Στα Settings Appearance and Behavior Systems Settings Android SDks Platform Settings, κλικ στα επιθυμητά SDKs 3

2. Δημουργία νέου project Στην οθόνη καλωσορίσματος: Επιλογή New Project Εκτός οθόνης καλωσορίσματος: File New Project για έναρξη του New project wizard Πεδία: Application name: Όνομα που φαίνεται στο Google Play και βλέπει ο χρήστης. Company Domain. Μοναδικό αναγνωριστικό της εφαρμογής. Χρήσιμο όταν αποφασίσουμε να ανεβάσουμε την εφαρμογή στο Google Play. 4

Package name: Μοναδικό αναγνωριστικό εφαρμογής συνήθως της μορφής com.company_name.app_name ή reverse_company_domain.app_name Project location: Κατάλογος του project στο σύστημά μας. Minimum SDK: Το ελάχιστο SDK που υποστηρίζεται από την εφαρμογή. Εάν η εφαρμογή δεν απαιτεί συγκεκριμένα χαρακτηριστικά που περιέχονται στα νεότερα SDKs, τότε επιλέγουμε μία παλαιότερη API (Application Programming Interface). Επιλογή τύπου δραστηριότητας (type of activity): Blank Activity: Δημιουργεί μία blank activity με μία app bar. 5

Empty activity: Δημιουργεί μία κενή δραστηριότητα Fullscreen Activity. Η full-screen mode εναλλάσσεται με την ορατότητα της διεπαφής χρήστη όποτε ο χρήστης αγγίζει την οθόνη 6

Login activity: Επιτρέπει στους χρήστες να κάνουν login ή εγγραφή με ένα e-mail και ένα κωδικό πρόσβασης. Master/Detail Flow: Χωρίζει την οθόνη σε 2 περιοχές: Στην αριστερή ένα μενού και οι λεπτομέρειες του επιλεγέντος αντικειμένου στη δεξιά. 7

3. Πλοήγηση στο project To project navigation panel Πιέζουμε Alt+1 για να ανοίξουμε την project view (λίστα των ανοιχτών projects). Στην άνω αριστερή γωνία μπορούμε να εναλλάσσουμε project και package views Στην άνω δεξιά γωνία υπάρχουν ορισμένες ενέργειες (actions) και ένα drop-down menu που διαμορφώνουν την project view. 8

Δομή του project Στο project navigation pane, βλέπουμε τη δομή του project. Μέσα στη δομή αυτή βρίσκεται ένας φάκελος με το όνομα της εφαρμογής μας, που περιέχει τη δομή της εφαρμογής και τα αρχεία. Το σπουδαιότερα στοιχεία στη δομή αυτή είναι: build/: Περιέχει τους μεταγλωττισμένους πόρους (resources) μετά το χτίσιμο της εφαρμογής και τις κλάσεις που παράγονται από τα εργαλεία Android όπως το αρχείο R.java, που περιέχει τις αναφορές στους πόρους της εφαρμογής. libs/: Περιέχει τις βιβλιοθήκες στις οποίες αναφέρεται ο κώδικάς μας. src/main/: Περιέχει τις πηγές (sources) της εφαρμογής. Όλα τα αρχεία με τα οποία συνήθως δουλεύουμε βρίσκονται σ αυτόν τα φάκελο. Περιέχει τους υποφακέλους: o java/: Περιέχει τις κλάσεις της Java οργανωμένες ως packages. o Κάθε κλάση που δημιουργούμε θα βρίσκεται στον χώρο ονομάτων του project package (com.example.myapplication). Όταν δημιουργήσαμε το project, δημιουργήσαμε και την κύρια δραστηριότητα, άρα η κλάση activity πρέπει να βρίσκεται σ αυτό το πακέτο. o res/: Περιέχει πόρους του project όπως τα αρχεία XML που προσδιορίζουν τα layouts και menus ή τα αρχεία εικόνων. drawable/: Περιέχει αρχεία bitmap (PNG, JPEG, ή GIF), αρχεία 9-Patch image, και αρχεία XML που περιγράφουν Drawable σχήματα ή Drawable αντικείμενα που περιέχουν πολλαπλές καταστάσεις (normal, pressed, ή focused). mipmap/: Περιέχει τα εικονίδια εκκίνησης της εφαρμογής. Το σύστημα διατηρεί τους πόρους στον φάκελο αυτό (όπως και τους φακέλους συγκεκριμένης πυκνότητας του τύπου mipmap-xxxhdpi) ανεξάρτητα από την ανάλυση οθόνης της συσκευής πού είναι εγκατεστημένη η εφαρμογή μας. Αυτό επιτρέπει στις εφαρμογές εκκίνησης να επιλέγουν την βέλτιστη ανάλυση εικόνας για να εμφανίσουν στην home screen 9

layout/: Περιέχει τους XML ορισμούς των όψεων (views) και των στοιχείων τους. menu/: Περιέχει τους XML ορισμούς των μενού της εφαρμογής. values/: Περιέχει τα XML αρχεία που ορίζουν σύνολα ζευγών ονομα-τιμή (name-value). Οι τιμές αυτές μπορεί να είναι χρώματα, αλφαριθμητικά ή στυλ. Υπάρχουν διαφορετικοί φάκελοι values που κατηγοριοποιούνται σύμφωνα με τις διαφορετικές screens options για να προσαρμόσουν την διεπαφή σ αυτές. Για παράδειγμα, να διευρύνουν τα components ή τα fonts όταν η εφαρμογή τρέχει σε τάμπλετ. AndroidManifest.xml: Το αρχείο αυτό παράγεται αυτόματα όταν δημιουργούμε το project. Δηλώνει τις βασικές πληροφορίες που χρειάζεται το σύστημα Android για να τρέξει την εφαρμογή: όνομα package, έκδοση, δραστηριότητες, άδειες, προθέσεις, ή απαιτούμενο υλικό. build.gradle: Το αρχείο αυτό είναι το script που χρησιμοποιούμε για να χτίσουμε την εφαρμογή μας. Ρυθμίσεις του project Υπάρχουν δύο dialog boxes που περιέχουν ρυθμίσεις του project (project settings): File Settings και File Project Structure. Και τα δύο βρίσκονται και στη γραμμή εργαλείων. Επιλέγουμε το project μας από το project view και πηγαίνουμε στο File Settings. Ορισμένες σημαντικές επιλογές: Build, Execution, Deployment Compiler: Διαμορφώνει τον μεταγλωττιστή Android DX compiler που χρησιμοποιούμε όταν χτίζουμε την εφαρμογή μας. Build, Execution, Deployment Build Tools Gradle: Δίνει τη διαμόρφωση του Gradle. Το Gradle είναι ένα εργαλείο παρόμοιο με το Apache Ant και το Apache Maven, βασιζόμενο στο Groovy για την κατασκευή και τη διαχείριση Java projects. Το Gradle είναι ενσωματωμένο στο Android Studio. Editor Code Style: Διαμορφώνει το προεπιλεγμένο code style scheme. Editor File Encodings: Αλλάζει την κωδικοποίηση του αρχείου. Η προεπιλεγμένη κωδικοποίηση είναι UTF-8. Editor Language Injections: Προσθέτει ή αφαιρεί τις διαθέσιμες γλώσσες που χρησιμοποιούνται στον editor. Version Control: Διαμορφώνει τις επιλογές version control. 10

4. Ο Code Editor Editor Settings Στη γραμμή εργαλείων επιλέγουμε Settings (ή στο μενού File Settings) Editor. Στις γενικές ρυθμίσεις του Editor (Editor General), μπορούμε να «τσεκάρουμε» δύο επιλογές που ενδεχομένως μας διευκολύνουν και δεν έχουν «τσεκαριστεί» εξ αρχής: Change font size (Zoom) with Ctrl + Mouse Wheel: Αλλάζει το μέγεθος των fonts στον editor με χρήση του mouse wheel όπως και σε άλλα προγράμματα Show quick doc on mouse move: Με ένα γρήγορο πέρασμα του ποντικιού επάνω από ένα κομμάτι κώδικα και αναμονή περίπου 500 ms, εμφανίζεται μία σύντομη τεκμηρίωση σε ένα μικρό διάλογο. Εάν μετακινήσουμε το ποντίκι εντός του διαλόγου, μπορούμε να το εξετάσουμε με λεπτομέρειες. Πολύ χρήσιμο όταν θέλουμε να εξετάσουμε τη λειτουργικότητα και τις παραμέτρους μίας μεθόδου. 11

Άλλες ενδιαφέρουσες ρυθμίσεις του Editor: General Smart Keys: Διαμορφώνει αυτόματες ενέργειες κατά την πληκτρολόγηση όπως: πρόσθεση closing brackets, quotes, tags ή δημιουργία εσοχών όταν πιέζουμε το <Enter>. General Appearance: Διαμορφώνει την εμφάνιση του editor. Δύο ενδιαφέρουσες επιλογές που δεν είναι «τσεκαρισμένες» εξ αρχής: Show line numbers: Δείχνει τους αριθμούς στο αριστερό άκρο του editor. Χρήσιμο στη διαδικασία της απασφαλμάτωσης ή εξέτασης του log. Show method separators: Διαχωρίζει τις μεθόδους μίας κλάσης General Editor Tabs: Διαμορφώνει τα editor tabs. Τσεκάρουμε την επιλογή Mark modified tabs with asterisk για τον εύκολο εντοπισμό τροποποιημένων και μηαποθηκευμένων αρχείων. General Code Folding: Επιτρέπει τη σύμπτυξη και την επέκταση code blocks. Χρήσιμο όταν θέλουμε να αποκρύψουμε code blocks που δεν επεξεργαζόμαστε, απλοποιώντας το code view. Συμπτύσσουμε ή επεκτείνουμε τα blocks χρησιμοποιώντας είτε τα εικονίδια του editor ή το μενού Code Folding. Colors & Fonts: Αλλάζει τις γραμματοσειρές και τα χρώματα. General Code completion: Διαμορφώνει τις επιλογές ολοκλήρωσης κώδικα. General Auto Import: Διαμορφώνει τη συμπεριφορά του editor όταν προσθέτουμε κώδικα που χρησιμοποιεί κλάσεις που δεν εισάγονται στην τρέχουσα κλάση μέσω ενός popup menu. Εάν τσεκάρουμε την επιλογή Add unambiguous imports on the fly, η εντολή import προστίθεται χωρίς τη δική μας διάδραση. 12

Code Completion i.βασική ολοκλήρωση (basic completion): Μία λίστα συστάσεων που εμφανίζεται καθώς πληκτρολογούμε. Εάν δεν εμφανιστεί πιέζουμε Ctrl + Spacebar για να την ανοίξουμε. Αν θέλουμε να εισάγουμε μία έκφραση στην αρνητική της μορφή, πιέζουμε το πλήκτρο με το θαυμαστικό (! ) ii.έξυπνη ολοκλήρωση τύπου (smart type completion): Εάν πληκτρολογούμε μία εντολή με μία παράμετρο String, τότε προτείνονται μόνο τα αντικείμενα String. Για να ανοίξουμε την λίστα «έξυπνων» συστάσεων πιέζουμε Ctrl + Shift + Spacebar. Παράδειγμα: Δημιουργούμε στον κώδικά μας δύο αντικείμενα διαφορετικών κλάσεων, String και int. Στη συνέχεια καλούμε μία μέθοδο με μία παράμετρο String, π.χ., τη μέθοδο i της κλάσης Log. Όταν πληκτρολογούμε την String παράμετρο, υπάρχει διαφορά ανάμεσα στο άνοιγμα της βασικής λίστα συστάσεων (Ctrl+Spacebar) και της λίστας έξυπνων συστάσεων (Ctrl + Shift + Spacebar): 13

iii.completion of statements: Καθώς πληκτρολογούμε, αν πιέσουμε Ctrl-Shift+Enter, γίνεται αυτόματα η ολοκλήρωση της πρότασης. Παράδειγμα: Ολοκλήρωση του if με Ctrl+Shift+Enter Παραγωγή κώδικα (Code generation) i.με χρήση του Code Generate ή του Alt + Insert μπορούμε να παράγουμε: constructors, μεθόδους getters και setters, μεθόδους equals, tostring, override ή delegate. ii.περικλείουμε μέρος του κώδικά μας με μία statement (if, if/else, while, for, try/catch, κλπ). Επιλέγουμε μία γραμμή κώδικα και πηγαίνουμε στο Code Surround With ή πιέζουμε το Ctrl + Alt + T. iii.εισαγωγή code templates. Πηγαίνουμε στο Code Insert Live Templates και ανοίγουμε ένα dialog box με τις διαθέσιμες φράσεις. (iterate collections, arrays, lists, etc. Print formatted strings, throw exceptions, add static and final variables). Στο αριστερό άκρο του διαλόγου κάθε template έχει ένα πρόθημα. Πληκτρολογώντας το πρόθημα στον editor και πιέζοντας το Tab, το code template προστίθεται αυτόματα. Παράδειγμα: Πληκτρολογούμε inn στο τέλος της μεθόδου oncreate της main activity και πιέζουμε Tab. Θα εμφανιστεί μία statement τύπου if-not-null. Μέσα στο μπλoκ αυτό, πληκτρολογούμε soutm και πιέζουμε Tab ξανά. Το αποτέλεσμα φαίνεται παρακάτω: 14

Πλοήγηση στον κώδικα (Code navigation) Ο πιο γρήγορος τρόπος πλοήγησης στις δηλώσεις ή δηλώσεις τύπων: πιέζουμε Ctrl και κάνουμε κλικ στο σύμβολο όταν εμφανίζεται ως σύνδεσμος. Η ίδια δυνατότητα προσφέρεται και από το Navigate Declaration. Από την αριστερή άκρη του editor μπορούμε να πλοηγηθούμε στην ιεραρχία των μεθόδων. Δίπλα στις δηλώσεις μεθόδων υπάρχει ένα εικονίδιο που υποδεικνύει εάν η μέθοδος υλοποιεί μία interface method, μία abstract class method, υπερκαλύπτει μία superclass method, ή αντίθετα εάν η μέθοδος υλοποιείται ή υπερκαλύπτεται από άλλους απογόνους. method is implemented or is overridden by other descendants. Κάνουμε κλικ στα εικονίδια για να πλοηγηθούμε στην ιεραρχία. Μπορούμε επίσης να χρησιμοποιήσουμε το Navigate Super Method ή Navigate Implementation(s). Παράδειγμα: Ανοίγουμε την main activity του project (MainActivity.java). Χρήση custom region Ένα κομμάτι κώδικα που θέλουμε να ομοδοποιήσουμε και να δώσουμε ένα όνομα. Π.χ.: Εάν υπάρχει μία κλάση με πολλές μεθόδους, μπορούμε να δημιουργήσουμε μερικές custom regions για να κατανείμουμε τις μεθόδους σ αυτές. Μία περιοχή (region) έχει ένα όνομα ή μία περιγραφή και μπορεί να επεκταθεί ή να συρρικνωθεί χρησιμοποιώντας το code folding. Για τη δημιουργία μίας custom region χρησιμοποιούμε το code generation. Επιλέγουμε το απόσπασμα κώδικα, πηγαίνουμε στο Code Surround With, και επιλέγουμε μία από τις παρακάτω δυνατότητες που δημιουργούν μία περιοχή αλλά κάθε μία με διαφορετικό στυλ <editor-fold > Comments region endregion Comments 15

. Όταν χρησιμοποιούμε custom regions,μπορούμε να τις διατρέξουμε χρησιμοποιώντας το μενού Navigate Custom Region. Οι υπόλοιπες επιλογές πλοήγησης είναι προσβάσιμες από το μενού Navigate: Class/File/Symbol: Εντοπισμός μίας κλάσης, ενός αρχείου ή ενός συμβόλου με το όνομά τους. Line: Μετάβαση σε μία γραμμή με τον αριθμό της. Last Edit Location: Το πιο πρόσφατο σημείο αλλαγής. Test: Μετάβαση στο test της τρέχουσας δραστηριότητας File Structure: π.χ. Δομή αρχείου της Main Activity File Path: Ανοίγει έναν διάλογο που δείχνει την πλήρη διαδρομή προς το αρχείο που έχει ανοίξει στον editor. Type Hierarchy: Π.χ. Ιεραρχία τύπων της Main Activity 16

Method Hierarchy: Ανοίγει παράθυρο διαλόγου που δείχνει την ιεραρχία μεθόδων της συγκεκριμένης μεθόδου Call Hierarchy: Ανοίγει παράθυρο διαλόγου που δείχνει την ιεραρχία κλήσεων της συγκεκριμένης μεθόδου Next Highlighted Error: Μετάβαση στο επόμενο λάθος Previous Highlighted Error: Μετάβαση στο προηγούμενο λάθος Next Method: Μετάβαση στην επόμενη μέθοδο Previous Method: Μετάβαση στην προηγούμενη μέθοδο Χρήσιμες ενέργειες (shortcuts) Ctrl + W: Επιλέγει τις εκφράσεις με βάση τη γραμματική. Η αντίθετη εντολή είναι Ctrl + Shift + W. Ctrl + /: Σχολιάζει κάθε γραμμή του επιλεγμένου κώδικα. Για ομαδικά σχόλια Ctrl + Shift + /. Ctrl + Alt + I: Ευθυγραμμίζει τον επιλεγμένο κώδικα. Χρήσιμο όταν τελειώνουμε το γράψιμο ένα κομμάτι κώδικα και θέλουμε να το ευπρεπίσουμε Ctrl + Alt + O: Βελτιστοποιεί τα imports, απομακρύνοντας τα μη χρησιμοποιημένα και κάνοντας ανακατάταξη στα υπόλοιπα. Shift + Ctrl + Arrows: Μεταφέρει τον επιλεγμένο κώδικα σε μία άλλη γραμμή. Alt + Arrows: Εναλλάσσει ανάμεσα στα ανοιγμένα tabs του editor. Ctrl + F: Βρίσκει ένα string στο ενεργό tab του editor. Ctrl + R: Αντικαθιστά ένα string στο ενεργό tab του editor. Ctrl + A: Επιλέγει όλο τον κώδικα του ανοιγμένου αρχείου. Ctrl + D: Αντιγράφει τον επιλεγμένο κώδικα και τον τοποθετεί στο τέλος. Εάν δεν έχει πιλεγεί κάποιος κώδικας ολόκληρη η γραμμή αντιγράφεται σε μία καινούργια. Ctrl + Y: Διαγράφει ολόκληρη τη γραμμή χωρίς να αφήνει κενή γραμμή. Ctrl + Shift + U: Εναλλαγή πεζών / κεφαλαίων. Tab: Προχωρεί στην επόμενη παράμετρο 17

5. Δημιουργία Διεπαφών Χρήστη Graphical Editor Ανοίγουμε το main layout που βρίσκεται στο /src/main/res/layout/activity_main.xml του project. Ο graphical editor θα ανοίξει εξ ορισμού. Αρχικά, αυτό το main layout περιέχει μόνο μία text view με ένα μήνυμα Hello world!. Για εναλλαγή μεταξύ του graphical και του text editor, κάνουμε κλικ στα bottom tabs, Design και Text. Components Palette Tool Bar Component Tree Layout Preview Properties Inspector H toolbar περιέχει ορισμένες επιλογές αλλαγής του στυλ του layout και preview Το components tree εμφανίζει τα συστατικά (components) της διάταξης (layout) ως ιεραρχία. Ο properties inspector δείχνει τις ιδιότητες του επιλεγμένου συστατικού από το layout και επιτρέπει να τις αλλάξουμε 18

H palette παρέχει τα υπάρχοντα συστατικά της διεπαφής χρήστη (User Interface UI components) που μπορούν να τοποθετηθούν στο layout. Τα components είναι οργανωμένα σε διαφορετικές κατηγορίες. o Layouts: Ένα layout είναι ένα αντικείμενο container για την κατανομή των συστατικών στην οθόνη. Το αρχικό στοιχείο (root element) μίας διεπαφής χρήστη είναι ένα layout object, αλλά τα layouts μπορούν επίσης να περιέχουν περισσότερα layouts, δημιουργώντας έτσι μία ιεραρχία συστατικών δομημένη σε layouts. Η ιεραρχία των layouts πρέπει να παραμείνει όσο γίνεται απλή. To main layout έχει ως βασικό στοιχείο (root element) το Relative Layout o Widgets: Η κατηγορία αυτή περιέχει τα πιο κοινά συστατικά των περισσότερων layouts: Buttons, checkboxes, text views, switches, image views, progress bars, spinners, web views. o Text Fields: Πεδία όπου ο χρήστης μπορεί να πληκτρολογήσει κείμενο. Η διαφορά μεταξύ τους είναι ο τύπος κειμένου που ο χρήστης μπορεί να εισάγει. o Containers: Τα containers ομαδοποιούν συστατικά με κοινή συμπεριφορά: Radio groups, list views, scroll views, tab hosts κ.α. o o o Date & Time: Συστατικά που αφορούν ημερομηνία και ώρα όπως: ημερολόγια ή ρολόγια Expert: Συστατικά λιγότερο κοινά από αυτά που περιέχονται στην κατηγορία widgets. Custom: Συστατικά που μας επιτρέπουν την συμπερίληψη των δικών μας προσαρμοσμένων συστατικών (custom components), που είναι συνήθως άλλα layouts από το project. Text-based editor Εναλλάσσεται με τον graphical editor κάνοντας κλικ στο Text tab. Η toolbar είναι ίδια με τον graphical editor. H preview εμφανίζει το layout αλλά δεν μπορεί να το αλλάξει, θα πρέπει να χρησιμοποιήσουμε το design tab αν θέλουμε αλλαγές. Τα components προστίθενται στο layout χρησιμοποιώντας τις δηλώσεις XML. Οι ιδιότητες (properties) διαμορφώνονται επίσης με χρήση των δηλώσεων XML. Όπως και ο graphical editor, ο text editor εμφανίζει μόνο το στοιχείο text view μέσα στο root layout. 19

Δημιουργία νέου layout Με τη δημιουργία μίας activity Πρόσθεση ανεξάρτητου layout χωρίς δημιουργία νέας activity o Δεξί κλικ στον κατάλογο res/layout/ και επιλογή New Layout resource file Εναλλακτικά: χρήση της menu option File New Layout resource file. o Πληκτρολογούμε το όνομα αρχείου και του στοιχείου-ρίζα. o Κατόπιν, η συσχετισμένη activity μπορεί να αλλάξει μέσω του editor. o Εάν το layout δεν έχει συσχετισμένη activity, οποιαδήποτε υπάρχουσα activity μπορεί να συνδεθεί με αυτό μέσω του editor: (layout editor toolbar activity option, => Associate with other Activity option). Πρόσθεση συστατικών (components) Χρήση του graphical editor (Design tab) Επιλογή component: Text Fields Person Name Τοποθέτηση κάτω από το Text view Component tree view: νέο αντικείμενο EditText. Properties view: 1. layout:width wrap_content => match_parent για να το προσαρμόσουμε στο πλάτος του parent layout 2. hint: Πληκτρολογούμε Enter your name 3. id: edittext => edittext_name 4. text: Σβήνουμε την τιμή αυτού του πεδίου 20

Στον text editor: Αλλαγές με χρήση του text editor: <Button android:id="@+id/button_accept" ( δημιουργούμε την ID με τιμή «button_accept ) android:layout_width="wrap_content" ( Το πλάτος προσαρμόζεται στο περιεχόμενο του button android:layout_height="wrap_content" (Το ύψος επίσης) android:layout_below="@+id/edittext_name" (Τοποθετούμε το button κάτω από το πεδίο κειμένου name στο οποίο αναφερόμαστε με την ID του (@+id/edittext_name) android:layout_centerhorizontal="true" (Τοποθετούμε το button στο κέντρο και οριζόντια του parent layout) android:text="accept" /> 21

Πολλαπλές οθόνες Επιλογή συσκευής και προσανατολισμού 22

Δυνατότητα αλλαγής την προεπισκόπηση της διάταξης (layout preview) όταν είμαστε στο design mode o Πρέπει να ελέγχουμε όλες τις διαμορφώσεις οθόνης που υποστηρίζει η εφαρμογή μας για να βεβαιωθούμε ότι εμφανίζονται σωστά. Οι κατηγορίες πυκνότητας οθόνης στο Android είναι: o ldpi (low-density dots per inch): Περίπου 120 dpi o mdpi (medium-density dots per inch): Περίπου 160 dpi o hdpi (high-density dots per inch): Περίπου 240 dpi o xhdpi (extra-high-density dots per inch): Περίπου 320 dpi o xxhdpi (extra-extra-high-density dots per inch): Περίπου 480 dpi Δυνατότητα αλλαγής του προσανατολισμού της συσκευής μέσω του layout state option στη γραμμή εργαλείων. Αν δεν εμφανίζεται σωστά, δημιουργούμε παραλλαγή : o Κλικ στο πρώτο εικονίδιο του toolbar configuration option και επιλέγουμε Create Landscape Variation: ανοίγει νέο layout στο editor/src/main/res/layout-land/activity_main.xml και χρησιμοποιεί το ίδιο όνομα με το portrait layout o Κάνουμε τις αλλαγές σύμφωνα με τον προσανατολισμό landscape o Παρομοίως μπορούμε να δημιουργήσουμε παραλλαγή του layout για υπερμεγέθεις οθόνες Επιλέγουμε Create layout-xlarge Variation 23

Παρουσίαση όλων μεγεθών συσκευών Για να δούμε πολλαπλές διαμορφώσεις συσκευών ταυτόχρονα, επιλέγουμε την configuration option Preview All Screen Sizes, στην γραμμή εργαλείων Για να δούμε τα πιο σημαντικά μεγέθη οθονών επιλέγουμε configuration option Preview Representative Sample. Αλλαγή του θέματος της UI Με χρήση του layout editor: 24

Ανοίγουμε το main layout. Το επιλεγμένο θέμα εμφανίζεται στο toolbar: AppTheme και βρίσκεται στο αρχείο styles (/src/res/values/styles.xml). Το θέμα μας είναι επέκταση του θέματος Theme.Light Προσαρμόζουμε το θέμα στο αρχείο styles. Π.χ., για να αλλάξουμε το χρώμα του φόντου του παραθύρου, προσθέτουμε στον ορισμό του AppTheme το παρακάτω: <style name="apptheme" parent="appbasetheme"> <item name="android:windowbackground">#dddddd</item> </style> Σώζουμε το αρχείο και επανερχόμαστε στο layout tab. Αυτό το χρώμα φόντου θα εφαρμοστεί σε όλα τα layouts μας διότι το διαμορφώσαμε στο θέμα και όχι απλά στο layout..διαχείριση Συμβάντων Τα συμβάντα (events) στο Android παράγονται όταν ο χρήστης αλληλεπιδρά με την εφαρμογή. Όλα τα widgets της διεπαφής (UI widgets) είναι απόγονοι της κλάσης View και μοιράζονται τα ίδια συμβάντα που διαχειρίζονται οι παρακάτω ακροατές (listeners): OnClickListener: Αντιστοιχίζει το συμβάν όταν ο χρήστης κάνει κλικ στο view element OnCreateContextMenu: Αντιστοιχίζει το συμβάν όταν ο χρήστης πατάει παρατεταμένα το view element και θέλουμε να ανοίξουμε ένα context menu OnDragListener: Αντιστοιχίζει το συμβάν όταν ο χρήστης μεταφέρει και αποθέτει το στοιχείο συμβάντος OnFocusChange: Αντιστοιχίζει το συμβάν όταν ο χρήστης κάνει πλοηγείται από ένα στοιχείο σε στοιχείο στην ίδια view OnKeyListener: Αντιστοιχίζει το συμβάν όταν ο χρήστης πιέζει οποιοδήποτε πλήκτρο ενώ η εστίαση είναι στο view element OnLongClickListener: Αντιστοιχίζει το συμβάν όταν ο χρήστης αγγίζει το view element και το κρατάει πατημένο OnTouchListener: Αντιστοιχίζει το συμβάν όταν ο χρήστης αγγίζει το view element 25

Επίσης σε ορισμένες UI: OnCheckedChangeListener: Όταν αλλάζει η κατάσταση ενός checkbox OnItemClickListener: : Οι spinners μπορούν να ορίσουν έναν ακροατή που αντιστοιχίζεται όταν γίνεται κλικ σε ένα στοιχείο Επιλέγουμε το accept button Στην ιδιότητα onclick, πληκτρολογούμε την τιμή onacceptclick Στο MainActivity.java ορίζουμε τη μέθοδο η οποία εκτελείται κάθε φορά που ο χρήστης κάνει κλικ στο κουμπί. (Όταν κάνουμε κλικ σε μία view, μία event callback μέθοδος πρέπει να είναι δημόσια, ένα void return type και λαμβάνει ως παράμετρο την view στην οποία κάναμε κλικ.) public void onacceptclick(view v) { TextView tv_greeting =(TextView) findviewbyid(r.id.textview_greeting); EditText et_name = (EditText) findviewbyid(r.id.edittext_νame); if(et_name.gettext().length() > 0) { tv_greeting.settext("hello " + et_name.gettext()); 1 2 } } Από την κύρια δραστηριότητα (main activity) αλληλεπιδρούμε με όλα τα συστατικά της διεπαφής, άρα, όταν ο χρήστης κάνει κλικ στο accept button, ο κώδικάς μας διαβάζει το κείμενο από το πεδίο ονόματος και αλλάζει τον χαιρετισμό για να περιλάβει το όνομα σε αυτό. 26

1. Στις δύο πρώτες γραμμές της μεθόδου γίνεται αναφορά στα στοιχεία Text view που περιέχει τον χαιρετισμό, text field όπου ο χρήστης μπορεί να πληκτρολογήσει ένα όνομα. Τα συστατικά εντοπίζονται από τα ID τους ( : properties του στοιχείου στο αρχείο layout). Όλα τα IDs των πόρων περιέχονται στην κλάση R. H κλάση R παράγεται αυτόματα κατά τη φάση build και δεν αλλάζει. 2. Ακολουθεί έλεγχος αν ο χρήστης έχει πληκτρολογήσει ένα όνομα οπότε ο χαιρετισμός θα αντικατασταθεί από έναν καινούργιο χαιρετισμό που περιέχει το όνομα. Εάν το συμβάν που θα χειριστούμε δεν βρίσκεται στα πλαίσια του κλικ του χρήστη, πρέπει να δημιουργήσουμε τον ακροατή και να τον προσθέσουμε στην μέθοδο oncreate της δραστηριότητας. Υπάρχουν δύο επιλογές: Υλοποιούμε την διεπαφή του ακροατή μεσα στη δραστηριότητα και μετά προσθέτουμε τις μεθόδους. Δημιουργούμε μία ιδιωτική ανώνυμη υλοποίηση του ακροατή στο αρχείο της δραστηριότητας..τελικά, η υλοποίηση του ακροατή ανατίθεται στο View στοιχείο, χρησιμοποιώντας τις setter μεθόδους: setonclicklistener, setoncreatecontextmenu, setondraglistener, setonfocuschange, setonkeylistener, κ.α. Η ανάθεση του ακροατή συνήθως περιλαμβάνεται στην μέθοδο oncreate της δραστηριότητας. Αν η δραστηριότητα υλοποιεί απευθείας τον ακροατή, τότε η παράμετρος που προτείνεται στη setter μέθοδο είναι η δική της activity χρησιμοποιώντας τη λέξη-κλειδί this: Button b_accept = (Button) findviewbyid(r.id.button_accept); b_accept.setonclicklistener(this); Η δραστηριότητα θα έπρεπε να υλοποιεί τον ακροατή και τη μέθοδο onclick που απαιτείται από τη διεπαφή του ακροατή. public class MainActivity extends Activity implements View.OnClickListener { @Override public void onclick(view view) { // Action when the button is pressed } 27

6. Εργαλεία Software development Kit (SDK) Manager O SDK Manager είναι ένα εργαλείο Android, ενσωματωμένο στο Android Studio, με το οποίο μπορούμε να ελέγχουμε τις πλατφόρμες Android είναι εγκατεστημένες στο σύστημά μας, να τις ενημερώνουμε, να εγκαθιστούμε νέες πλατφόρμες ή άλλα συστατικά (components) όπως oi Google Play Services ή η Android Support Library. Ανοίγουμε τον SDK Manager από το μενού Tools Android SDK Manager. Επίσης υπάρχει αντίστοιχο shortcut στη γραμμή εργαλείων. Ο SDK Manager εμφανίζει τη λίστα των διαθέσιμων πακέτων με τις παρακάτω ιδιότητες: Name: Όνομα του πακέτου ή του container που συγκεντρώνει ορισμένα σχετικά οακέτα. API: Αριθμός API στο οποίο το πακέτο είχε προστεθεί. Rev: Αριθμός αναθεώρησης του πακέτου ή έκδοσης Status: Κατάσταση του πακέτου όσον αφορά τος συστημά μας.status of the package regarding your system. Οι πιθανές τιμές είναι: Not installed, Installed, Update available, Not compatible, ή Obsolete. Android Virtual Device (AVD) Manager Ο Android Virtual Device Manager (AVD Manager) είναι ένα εργαλείο Android ενσωματωμένο στο Android Studio για την διαχείριση των εικονικών συσκευών Android που θα εκτελούνται στον Android emulator. Ανοίγουμε τον AVD Manager από τον μενού Tools Android AVD Manager. Επίσης υπάρχει αντίστοιχο shortcut στη γραμμή εργαλείων Ο AVD Manager εμφανίζει την λίστα των διαμορφωμένων εικονικών συσκευών. Αν δεν υπάρχουν, εμφανίζει την αρχική οθόνη: 28

Για τη δημιουργία μίας εικονικής συσκευής κάνουμε κλικ στο κουμπί Create Virtual Device για να ανοίξει ο διάλογος για τη διαμόρφωση (configuration): AVD Name: Όνομα της εικονικής συσκευής. Device: Επιλέγουμε μία από τις διαθέσιμες συσκευές για να διαμορφώσουμε. Για τις ανάγκες του παραδείγματος επιλέγουμε τη συσκευή Nexus 4. Target: Μία εικονική συσκευή με την μίνιμουμ πλατφόρμα που υποστηρίζεται από την εφαρμογή μας και μία άλλη με την πλατφόρμα στόχο της εφαρμογής. Για το παράδειγμά μας, επιλέγουμε την target πλατφόρμα Android 4.4 (API 19). Στην οθόνη Verify Configuration : Keyboard: Το επιλέγουμε αν θέλουμε να εμφανίζεται πληκτρολόγιο στον emulator. Skin: Το επιλέγουμε αν επιπλέον hardware controls εμφανίζονται στον emulator. Front Camera: Το επιλέγουμε εάν ο emulator έχει εμπρόσθια κάμερα. Η κάμερα εξομοιώνεται ή είναι πραγματική webcam από τον υπολογιστή. Back Camera: Το επιλέγουμε εάν ο emulator έχει πίσω κάμερα. Η κάμερα εξομοιώνεται ή είναι πραγματική webcam από τον υπολογιστή. Memory Options: Επιλέγουμε τις παραμέτρους μνήμης της εικονικής συσκευής. Διατηρούμε τις default τιμές εκτός αν εμφανιστεί σχετική ειδοποίηση. Internal Storage: Επιλέγουμε το μέγεθος της μνήμης., π.χ. 200 MB. SD Card: Επιλέγουμε το μέγεθος της SD card ή ένα αρχείο που θα συμπεριφερθεί ως SD card. (προαιρετικό). Emulation Options: Η επιλογή Snapshot σώζει την κατάσταση του emulator για γρήγορη φόρτωση την επόμενη φορά. Η επιλογή Use Host GPU προσπαθεί να επιταχύνει το GPU hardware για να τρέχει πιο γρήγορα ο emulator. Κάποιες από τις παραπάνω επιλογές φαίνονται όταν πατήσουμε το κουμπί Show Advanced Settings 29

Ονοματίζουμε την εικονική συσκευή έτσι ώστε να είναι αναγνωρίσιμη (π.χ. Nexus_4_API_19). Πατάμε ΟΚ. Η νέα εικονική συσκευή βρίσκεται στον AVD Manager με ένα πράσινο εικονίδιο που δείχνει ότι είναι έγκυρη Η ίδια διαδικασία μπορεί να γίνει από τη γραμμή εργαλείων του layout preview. Παραγωγή JavaDoc To JavaDoc (τεκμηρίωση κώδικα Java σε HTML format) παράγεται από σχόλια και tags που προστίθενται σε κλάσεις και μεθόδους Java. Τα σχόλια περικλείονται σε /**..*/. Μέσα στα σχόλια μπορούμε να πρσθέσουμε ετικέτες όπως @param (περιγραφή μίας παραμέτρου μεθοδου), @throws (περιγραφή εξαίρεσης που εισάγει μία μέθοδος) ή @version (έκδοση της κλάσης ή της μεθόδου). Η χρήση του JavaDoc είναι ενσωματωμένη στο Android Studio, (βλ.επίσης χρήση Code Completion). 30

Παράδειγμα παραγωγής πλήρους Javadoc: Ανοίγουμε την main activity του project μας για να προσθέσουμε σχόλια Javadoc στη μέθοδο onacceptclick. Τοποθετούμε τον δείκτη στη γραμμή πριν τη δήλωση της μεθόδου, πληκτρολογούμε /**, και πατάμε Enter. Τα σχόλια Javadoc εισάγονται αυτόματα και περιλαμβάνουν διαθέσιμες πληροφορίες από τη δήλωση της μεθόδου. Στη συνέχεια, επιλέγουμε Tools Generate JavaDoc Παρουσίαση JavaDoc στον browser 31

7. Εκτέλεση και Απασφαλμάτωση Για απευθείας εκτέλεση μίας εφαρμογής επιλέγουμε Run Run 'MyApplication'. Επίσης μπορούμε να χρησιμοποιήσουμε το play icon button στη γραμμή εργαλείων. Για απασφαλμάτωση μίας εφαρμογής, επιλέγουμε Run Debug 'MyApplication' ή κάνουμε κλικ στο bug icon στη γραμμή εργαλείων. Ανοίγει παράθυρο διαλόγου για επιλογή της συσκευής: (α) Επιλέγουμε μία συσκευή από τον κατάλογο πραγματικών ή εικονικών συσκευών. (β) Ξεκινούμε ένα νέο στιγμιότυπο του emulator, επιλέγουμε την επιθυμητή εικονική συσκευή και πατάμε ΟΚ. Την επόμενη φορά είτε κατά την εκτέλεση είτε κατά την απασφαλμάτωση, ο emulator εκτελείται ήδη, οπότε επιλέγουμε το (α). Κατά την απασφαλμάτωση, στο κάτω μέρος της οθόνης υπάρχουν 3 tabs: Console: εμφανίζει τα events που λαμβάνουν χώρα όταν ξεκινάει ο emulator. o Waiting for device: Σημείο εκκίνησης του emulator. o Uploading file: Η εφαρμογή «πακετάρεται» και αποθηκεύεται στη συσκευή o Installing: Η εφαρμογή εγκαθίσταται στη συσκευή. o Launching application: Εκκίνηση της εφαρμογής. o Waiting for process: Η εφαρμογή εκτελείται και το σύστημα απασφαλμάτωσης επιχειρεί να συνδεθεί με την διαδικασία στη συσκευή. o Debug: Διαχειρίζεται τα breakpoints, ελέγχει την εκτέλεση του κώδικα και δείχνει πληροφορίες σχετικά με τις μεταβλητές. Για να προσθέσουμε ένα breakpoint στον κώδικά μας, κάνουμε κλικ στο αριστερό άκρο της γραμμής. Εμφανίζεται μία κόκκινη κουκίδα. Ξεκινάμε τον debugger ξανά LogCat: Εμφανίζει όλα τα log μηνύματα που παράγονται από το σύστημα στη συσκευή εκτέλεσης. Τα μηνύματα αυτά έχουν διάφορα επίπεδα σημασίας που λειτουργούν ως φίλτρα και ενεργοποιούνται από το LogCat tab. Για να εκτυπώσουμε τα μηνύματα από τον κώδικά μας πρέπει να εισάγουμε την Log class. Η κλάση αυτή έχει μία μέθοδο για κάθε επίπεδο: v (verbose), d (debug), i (information), w (warning), e (error). Οι μέθοδοι αυτές δέχονται δύο παραμέτρους string. Η πρώτη ταυτοποιεί την source κλάση του μηνύματος και η δεύτερη το ίδιο το μήνυμα. 32

DDMS O Dalvik Debug Monitor Server (DDMS) είναι ένα εργαλείο απασφαλμάτωσης πιο προηγμένο από το SDK. Το εργαλείο αυτό, μπορεί να διαχειρίζεται τόσο μία πραγματική όσο και τον emulator. Ανοίγουμε την προοπτική DDMS perspective με χρήση του Tools Android Monitor (DDMS included). Επίσης, μπορούμε να κάνουμε κλικ στον εικονίδιο Android icon στη γραμμή εργαλείων. Ανοίγει ένα νέο παράθυρο με την DDMS perspective. Στο αριστερό μέρος της οθόνης εμφανίζονται οι συνδεδεμένες συσκευές Στο δεξί μέρος της οθόνης εμφανίζονται λεπτομερείς πληροφορίες της συσκευής: Threads, Heap, Allocation Tracker, Network Statistics, File Explorer, Emulator Control, System Information. Στο κάτω μέρος βρίσκεται της οθόνης βρίσκεται το LogCat. Threads To threads tab δείχνει τον κατάλογο των νημάτων που ανήκουν στην επιλεγμένη διαδικασία. Επιλέγουμε τη διαδικασία της εφαρμογής μας και πατάμε το εικονίδιο update threads της γραμμής εργαλείων. Τα νήματα εμφανίζονται στο threads tab. Μας ενδιαφέρουν τα threads που καταναλώνουν χρόνο εκτελώντας τον κώδικά μας. Το εργαλείο αυτό είναι χρήσιμο όταν στην εφαρμογή μας δημιουργούμε threads εκτός από το κύριο. 33

8. Προετοιμασία της εφαρμογής για κυκλοφορία Αρχεία.APK Οι εφαρμογές Android «πακετάρονται» σε ένα αρχείο με επέκταση.apk, που είναι μία παραλλαγή Java JAR (Java Archive) αρχείου. Αυτά τα αρχεία είναι συμπιεσμένα ZIP αρχεία. Ένα APK περιέχει συνήθως: assets/: Κατάλογος που περιέχει τα assets αρχεία της εφαρμογής (κατάλογος assets του project. META-INF/: Κατάλογος που περιέχει τα certificates. lib/: Κατάλογος που περιέχει μεταγλωττισμένο κώδικα να χρειάζεται για κάποιον επεξεργαστή. res/: Κατάλογος που περιέχει του πόρους της. AndroidManifest.xml: Το αρχείο manifest της εφαρμογής. classes.dex: Αρχείο που περιέχει τον μεταγλωττισμένο κώδικα της εφαρμογής. resources.arsc: Αρχείο που περιέχει ορισμένους προ-μεταγλωττισμένους πόρους. Με το αρχείο.apk, η εφαρμογή μπορεί να διανεμηθεί και να εγκατασταθεί στο ΛΣ Android Προηγούμενο Βήματα Πριν την παραγωγή του.apk αρχείο, πρέπει να ετοιμάσουμε την εφαρμογή building σε release mode. 1. ολοκληρώνουμε τις δοκιμές της εφαρμογής σε: Σε μία συσκευή με χρήση της ελάχιστη απαιτούμενης πλατφόρμας Σε μία συσκευή με χρήση της πλατφόρμας - στόχου Σε μία συσκευή με χρήση της πιο πρόσφατα διαθέσιμης Σε μία πραγματική συσκευή και όχι μόνο στον emulator Σε πληθώρα resolutions and μεγεθών οθόνης Σε ένα tablet εάν η εφαρμογή μας τα υποστηρίζει Αλλαγή σε landscape mode εάν το επιτρέπει η εφαρμογή μας, τόσο σε κινητή συσκευή όσο και σε tablet Σε διαφορετικές συνθήκες δικτύου, όπως χωρίς συνδεσιμότητα στο Internet ή χαμηλή κάλυψη 34

Εάν η εφαρμογή μας κάνει χρήση του GPS ή οποιασδήποτε υπηρεσίας εντοπισμού, ελέγχουμε πότε δεν είναι ενεργοποιημένες στη συσκευή Συμπεριφορά του back button 2. Στη συνέχεια, ελέγχουμε τα log messages που εκτυπώνει η εφαρμογή μας, διότι καθιστούν την εφαρμογή μας ευάλωτη ως προς την ασφάλεια. Πρέπει επίσης να διαγράψουμε την android:debuggable από το αρχείο manifest της εφαρμογής. (ή να της αποδώσουμε την τιμή false). 3. Εάν η εφαρμογή μας επικοινωνεί με έναν server, ελέγχουμε ότι η διαμορφωμένη URL είναι αυτή της παραγωγής. Υπάρχει η πιθανότητα κατά τη διάρκεια της φάσης απασφαλμάτωσης να είχαμε κάνει αναφορά σε μία URL ενός server σε ένα περιβάλλον pre-release. 4. Αποδίδουμε τη σωστή τιμή στις ιδιότητες android:versioncode και android:versionname στο αρχείο manifest της εφαρμογής. Ο version code είναι ένα ακέραιος αριθμός που δείχνει την έκδοση της εφαρμογής. Οι νεότερες εκδόσεις έχουν μεγαλύτερους κωδικούς. Χρησιμοποιούμε αυτόν τον κωδικό για να προσδιορίσουμε εάν μία εφαρμογή που έχει εγκατασταθεί σε μία συσκευή είναι η τελευταία έκδοση, ή αν υπάρχει νεότερη. Η version name είναι ένα αλφαριθμητικό που δείχνει την έκδοση της εφαρμογής και, αντίθετα με τον version code, είναι ορατή στον χρήστη και εμφανίζεται στη δημόσια όψη της εφαρμογής. Απλώς παρέχει την πληροφορία στον χρήστη και δεν χρησιμοποιείται για εσωτερικούς σκοπούς. Για την παραγωγή ενός «υπογεγραμμένου» APK, χρησιμοποιούμε το μενού Build Generate Signed APK Πηγές: B.C. Zapata, Android Studio Application Development, Packt publishing, 2013, http://it-ebooks.info/book/4248/ Get Started with Android Studio, http:/developer.android.com/develop/index.html 35