Βιβλιογραφία: Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Προγραμματισμός Android Ian Clifton. AndroidTM User Interface Design, Addison-Wesley, 2013 P. Deitel. H. Deitel, A. Deitel. Android Προγραμματισμός (2η έκδοση), Γκιούρδας, 2015. (ΕΥΔΟΞΟΣ) B. C. Zapata, Android Studio Application Development, Packt Publishing, 2013 (http://it-ebooks.info/book/4248/) 1
Το Λειτουργικό Σύστημα Android 2
Android Κινητά τηλέφωνα: οθόνες αφής, κάμερες, πολυμέσα, δέκτες GPS, Bluetooth, WiFi, διάφοροι αισθητήρες που διευκολύνουν την επικοινωνία, παρέχουν ψυχαγωγία, σημαντικές δυνατότητες χειρισμού δεδομένων Android: Πλατφόρμα ανοικτού λογισμικού για την ανάπτυξη εφαρμογών σε κινητά τηλέφωνα ή ταμπλέτες. Ανήκει στην Open Handset Alliance και προωθείται από τη Google ΟΗΑ : 30 εταιρείες τεχνολογίας (Motorola, HTC, T-Mobile, Qualcomm) 3
Εκδόσεις Alpha (1.0) : 2007 Beta (1.1) : 2008 Cupcake (1.5) : 2009 Donut (1.6) : 2009 Eclair (2.0 2.1) : 2009-2010 Froyo (2.2 2.2.3) : 2010 Gingerbread (2.3 2.3.7) : 2010-2011 Honeycomb (3.0 3.2.6) - 2011 Ice Cream Sandwich (4.0 4.0.4) : 2011 Jelly Bean (4.1 4.3.1) : 2012 KitKat (4.4 4.4.4) : 2013 "L" release (developer preview) - 2014 4
Χαρακτηριστικά Υλικό που υποστηρίζει το λογισμικό Πυρήνας Linux Βιβλιοθήκες SQLite WebKit OpenGL Περιβάλλον εκτέλεσης εφαρμογών Εικονική μηχανή Dalvik Βιβλιοθήκες του πυρήνα Εκθεση διαφόρων εφαρμογών λειτουργικού συστήματος στο επίπεδο του πυρήνα Προεγκατεστημένες εφαρμογές Υποδομές ανάπτυξης και εκτέλεσης εφαρμογών από τους χρήστες Υποδομές ανάπτυξης και εξομοίωσης εφαρμογών από τους χρήστες 5
Ενσωματωμένες εφαρμογές Διaχειριστής email Χειριστής SMS Διαχειριστής προσωπικών πληροφοριών (PIM Personal Information Manager) Πλήρης οδηγός με χάρτες (GoogleMaps) Φυλλομετρητής διαδικτύου (Web Browser) Διαχειριστής πολυμέσων (ήχος, εικόνα, βίντεο) Εφαρμογή για προμήθεια εφαρμογών από την αγορά της Google (Google Play Store) 6
Δυνατότητες Περιφερειακές Συσκευές Προσδιορισμός Θέσης Υπηρεσίες Παρασκηνίου Διαχείριση Δεδομένων Ενδοεπικοινωνία Πολυμέσα Υπηρεσίες P2P 7
Δομή του Λ. Σ. Android 8
Δομή του Android Πυρήνας Linux Κατώτερο επίπεδο: Πυρήνας Linux (Linux kernel) υπεύθυνος για: τη διαχείριση των device drivers (οθόνης, WiFi, κάμερας, ήχου κ.α.), τον έλεγχο πρόσβασης στους πόρους του συστήματος, τη διαχείριση μνήμης και τις λοιπές υπηρεσίες που παρέχει ένα λειτουργικό σύστημα. Προσαρμόζεται σε διαφορετικές αρχιτεκτονικές => Συμβατό με ευρεία γκάμα συσκευών Επίπεδο «αφαίρεσης υλικού» Όλα τα υπόλοιπα επίπεδα της στοίβας βασίζονται στο κατώτατο επίπεδο του Linux και όχι στο υλικό μας συγκεκριμένης συσκευής. 9
Δομή του Android Ενσωματωμένες Βιβλιοθήκες (1) Ένα επίπεδο επάνω βρίσκονται οι ενσωματωμένες βιβλιοθήκες του συστήματος που είναι γραμμένες σε C/C++ και περιλαμβάνουν: Surface Manager : Διαχείριση σχεδιαστικών επιφανειών. Αφορά τη διαχείριση και την εμφάνιση στην οθόνη των παραθύρων των εφαρμογών OpenGL ES και SGL: Δυνατότητα για σχεδίαση τρισδιάστατων και δισδιάστατων γραφικών αντίστοιχα Media Framework: Ρουτίνες για κωδικοποίηση-αποκωδικοποίηση ήχου και βίντεο σε διαθέσιμα formats FreeType: Δυνατότητα για αποτύπωση raster και vector γραμματοσειρών 10
Δομή του Android Ενσωματωμένες Βιβλιοθήκες (2) SSL: Υλοποιεί το πρότυπο OpenSSL για διαχείριση πιστοποιητικών κατά την δημιουργία ασφαλών συνδέσεων με απομακρυσμένους εξυπηρετητές SQLite: βιβλιοθήκη που μπορεί να χρησιμοποιηθεί σαν ένα ΣΔΒΔ WebKit: Μηχανή διάταξης γραφικών (Layout engine) libc: βασική βιβλιοθήκη C 11
Δομή του Android Android Runtime Core Libraries: Βασικές βιβλιοθήκες Java γραμμένες ειδικά για τον διερμηνευτή Android Dalvik Virtual Machine: Εκτελεί αρχεία.dex (Dalvik executable files) και όχι τα αρχεία.class της Java Οι εφαρμογές Android (γραμμένες σε Java) μεταγλωττίζονται σε αρχεία.class και αυτά σε αρχεία.dex χρησιμοποιώντας το εργαλείο dx (ενσωματωμένο στο SDK) 12
Διαφορά λειτουργίας Java VM και Dalvik VM Το αρχείο που είναι γραμμένο σε Java μεταγλωττίζεται και ο κώδικας που προκύπτει μεταγλωττίζεται ξανά με τη χρήση του μεταγλωττιστή Dalvik Παράγεται ο κώδικας Dalvik που εκτελείται στην εικονική μηχανή Dalvik Λόγος της διπλής μεταγλώττισης στο ΛΣ Android: Να αποφευχθεί η διαφοροποίηση του δεύτερου μεταγλωττιστή με τις ενδεχόμενες αλλαγές στις εκδόσεις της γλώσσας Java στο μεταγλωττιστή της 13
Δομή του Android Application Framework Κλάσεις με τη χρήση των οποίων είναι δυνατή η χρήση των εφαρμογών. Διαχειριστές υπεύθυνους για τον έλεγχο κύκλου ζωής μιας εφαρμογής την πρόσβαση σε κοινά δεδομένα (π.χ. επαφές) Διαχείριση των εγκατεστημένων εφαρμογών, των πόρων κ.α 14
Δομή του Android Applications Εφαρμογές ενσωματωμένες στη συσκευή Εφαρμογές τρίτων Χρησιμοποιούν τις βιβλιοθήκες του προηγούμενου επιπέδου 15
Εφαρμογές χρήστη Μία εφαρμογή χρήστη: Δέσμη συνιστωσών εφαρμογής, πόρων και αρχείων με δεδομένα ενσωματώνεται σε ένα αρχείο με επέκταση.apk το οποίο αποτελείται από 3 συνιστώσες: Dalvik executable: Ο κώδικας Java ο οποίος έχει μεταγλωττιστεί δύο φορές και έχει τη μορφή εκτελέσιμου κώδικα Resources: Πόροι που δεν είναι σε μορφή κώδικα. Διατάξεις οθόνης, όψεις, γραμματοσειρές, ονομασίες, χρώματα, εικόνες, ήχοι, βίντεο κλπ Native Libraries: Η εφαρμογή μπορεί να περιέχει ενσωματωμένες εφαρμογές Χαλαρή σύζευξη ξεχωριστά εκτελούμενων συνιστωσών Κάθε συνιστώσα μπορεί να ξεκινάει ανεξάρτητα αν το επιτρέπει η εφαρμογή 16
Βασικές οντότητες στις εφαρμογές Android Δραστηριότητα (Activity) ~ Οθόνη της εφαρμογής αντιστοιχεί σε μία κλάση Java που αποθηκεύεται στο φάκελο src/package υλοποιείται κληρονομώντας απλά την κλάση Activity Υπηρεσία (Service) : Τρέχει στο παρασκήνιο χωρίς να υπάρχει οπτική πληροφόρηση για τον χρήστη (π.χ. κατέβασμα δεδομένων από το διαδίκτυο) Δέκτης εκπομπής (Broadcast Receiver): Λαμβάνει εκπεμπόμενα μηνύματα σχετικά με τα γεγονότα του συστήματος (π.χ. μεταβολές μπαταρίας, μηνύματα κ.α.) Πάροχος περιεχομένου(content Provider): Δίνει τη δυνατότητα σε εφαρμογές να έχουν πρόσβαση σε δεδομένα της συσκευής που μπορούν να μοιράζονται (π.χ. επαφές, εικόνες, βίντεο, κ.α) Πρόθεση (Intent): Ασύγχρονο μήνυμα μεταξύ δύο εφαρμογών ή συνιστωσών Το μήνυμα επισυνάπτεται σε ένα intent object το οποίο μεταφέρεται από το ΛΣ στη συνιστώσα ~ Μηχανισμός διέγερσης συγκεκριμένων ενεργειών 17