Το Αndroid είναι ένα Λειτουργικό Σύστημα που κατά κύριο λόγο αναπτύχθηκε για κινητές συσκευές αφής, όπως έξυπνα τηλέφωνα (smartphone) και tablets. Το συγκεκριμένο λειτουργικό είναι ανοικτού κώδικα και όπως θα δούμε στη συνέχεια, “τρέχει” τον πυρήνα του Linux.

 

Εικόνα 5.1.1 Ένα από τα διαδεδομένα logo του Android

Το συγκεκριμένο λειτουργικό, επιτρέπει στους προγραμματιστές να δημιουργούν εφαρμογές σε γλώσσες υψηλού επιπέδου όπως Java και Kotlin παρέχοντάς τους ένα σύνολο από βιβλιοθήκες που βοηθούν στον έλεγχο της συσκευής και των διάφορων αισθητήρων που δυνητικά περιέχουν όπως:

  • Γυροσκόπιο (gyroscope): Μετράει το ρυθμό περιστροφής σε ακτίνια (rad) σε κάθε έναν από τους φυσικούς άξονες.
  • Επιταχυνσιόμετρο (Accelerometer): Μετράει την επιτάχυνση σε m/s2 της συσκευής στους φυσικούς άξονες.
  •  «Πυξίδα» (compass): Μετράει το γεωμαγνητικό[1] πεδίο του περιβάλλοντος σε μT στους τρεις φυσικούς άξονες.
  • Διάφορους άλλους αισθητήρες, όπως φωτεινότητας, δόνησης κ.ά.

  Αρχιτεκτονική Android

Τα σύγχρονα λειτουργικά περιβάλλοντα Android συγκροτούνται από μία στοίβα λογισμικού (software stack) που χωρίζεται σε πέντε (5) διακριτά επίπεδα. Τα επίπεδα αυτά είναι:

  1. Πυρήνας Linux,
  2. Hardware Abstraction Layer (HAL),
  3. Android Runtime και οι native [2]  βιβλιοθήκες C/C++,
  4. Java API Framework,
  5. Εφαρμογές του συστήματος.


Εικόνα 5.1.2 Στοίβα λογισμικού στο λειτουργικό Android
(https://developer.android.com/guide/platform)


Πυρήνας Android

Το Android όπως έχουμε ήδη αναφέρει βασίζεται πάνω στον πυρήνα των Linux. Χρησιμοποιώντας ένα πυρήνα ανοικτού κώδικα και τόσο ευρείας χρήσης το Android, μπορεί να εκμεταλλευτεί αρκετές από τις δυνατότητες που παρέχονται από τα περιβάλλοντα Linux. Οι δυνατότητες αυτές διατίθενται, διότι επιτρέπεται στους κατασκευαστές διαφόρων συσκευών να δημιουργούν οδηγούς (drivers) πάνω σε αυτόν το γνωστό πυρήνα. Επιπρόσθετα ο πυρήνας Linux είναι επίσης υπεύθυνος και για τη διαχείριση της μπαταρίας της συσκευής, κάτι ιδιαίτερα σημαντικό για φορητές συσκευές.

Απαιτήσεις υλικού

Οι ελάχιστες απαιτήσεις υλικού για την εγκατάσταση περιβάλλοντος ανάπτυξης εφαρμογών Android σε επίπεδο workstation, είναι:

  • Επεξεργαστής 64-bit με συνιστώμενη ελάχιστη συχνότητα λειτουργίας 3.1 GHz.
  • 250 GB ελεύθερο χώρο στο δίσκο με δυνατότητα αξιοποίησης επιπλέον 150 GB.
  •   64 GB RAM

Για την απλή χρήση του περιβάλλοντος (πχ. ταμπλέτες), οι ελάχιστες απαιτήσεις υλικού είναι πολύ χαμηλότερες (4-πύρηνος επεξεργαστής στα 2 GHz, μνήμη RAM 128 GB).

Επίπεδο εκτέλεσης λειτουργικού (Android runtime)

Σε όλες τις συσκευές που «τρέχουν» λειτουργικό Android έκδοσης 5.0 ή μεταγενέστερες, κάθε εφαρμογή εκτελείται με δική της διεργασία και με το δικό της ξεχωριστό αντίγραφο του Android Runtime (ART). Το Android Runtime έχει δημιουργηθεί με τη λογική του να μπορεί εκτελείται σε πολλαπλές εικονικές μηχανές (virtual machines) και είναι ειδικά σχεδιασμένο για να κάνει την ελάχιστη δυνατή χρήση (κατάληψη) μνήμης [3] . Τα περισσότερα από τα τμήματα του ART και του HAL είναι βιβλιοθήκες [4] που έχουν γραφτεί σε γλώσσα προγραμματισμού C και C++.

Το περιβάλλον (Android) για την ομαλή εκτέλεσή του, απαιτεί την τοπική (σε κάθε συσκευή) εγκατάσταση βιβλιοθηκών. Η διαδικασία αυτή γίνεται στη φάση της εγκατάστασης του λειτουργικού στη συσκευή.

Επίπεδο εφαρμογών συστήματος (System apps)

Όταν μιλάμε για System apps εννοούμε τις εφαρμογές που είναι προεγκατεστημένες με μία συσκευή Android. Τέτοιες εφαρμογές είναι πχ. ηλεκτρονικό ταχυδρομείο (email), SMS, ημερολόγιο, φυλλομετρητής, επαφές κ.λπ. Με εξαίρεση κάποιες εφαρμογές όπως πχ. η εφαρμογή Ρυθμίσεις, οι υπόλοιπες προεγκατεστημένες δεν έχουν κάτι το ξεχωριστό και ο κάθε χρήστης μπορεί να επιλέξει να εγκαταστήσει και να χρησιμοποιεί όποια άλλη εφαρμογή τον εξυπηρετεί.


Εκτός από τους χρήστες όλες οι προ-εγκατεστημένες εφαρμογές μπορούν να χρησιμοποιηθούν και από τους προγραμματιστές. Μειώνοντας έτσι το χρόνο που θα απαιτηθεί προκειμένου να χτίσουν οι ίδιοι την εκάστοτε λειτουργία. Για παράδειγμα ένας προγραμματιστής μπορεί να χρησιμοποιήσει την προεγκατεστημένη εφαρμογή αναπαραγωγής βίντεο προκειμένου μέσω μιας δικής του εφαρμογής (που την περιέχει) να το εμφανίζεται στον χρήστη της.

Υλοποιήστε τη δραστηριότητα 5.1.1

[1] Πρόκειται για την ένταση του μαγνητικού πεδίου της γης όπως καταγράφεται σε ένα συγκεκριμένο σημείο. Στην πράξη, μετράει τη μεταβολή του γεωμαγνητικού πεδίου καθώς περιστρέφουμε τη συσκευή ώστε να εντοπίσει τον μαγνητικό βορρά.

[2] Τοπικά (στη συσκευή) εγκατεστημένες βιβλιοθήκες.

[3] Πριν την έκδοση 5.0 το Android Runtime ονομαζόταν Dalvik. Αν μια εφαρμογή εκτελείται χωρίς προβλήματα σε Android Runtime, θα εκτελείται επίσης χωρίς προβλήματα και σε περιβάλλον Dalvik.

[4] Οι προγραμματιστές που φτιάχνουν εφαρμογές, χρησιμοποιούν τις βιβλιοθήκες αυτές και να μεταγλωττίσουν τον κώδικά τους με χρήση του Android NDK (Native Development Kit).