Σπίτι υλικό δικτύου Λειτουργικό σύστημα Android. Συστήματα αρχείων Android Αρχιτεκτονική εφαρμογών για κινητά Android

Λειτουργικό σύστημα Android. Συστήματα αρχείων Android Αρχιτεκτονική εφαρμογών για κινητά Android

Η αρχιτεκτονική του λειτουργικού συστήματος Android ενδιαφέρει, πρώτα απ 'όλα, προγραμματιστές που γνωρίζουν ήδη τα πάντα γι 'αυτό, επομένως θα προσπαθήσουμε να μεταφέρουμε αυτές τις πληροφορίες στους απλούς χρήστες με ενδιαφέρον και κατανοητό τρόπο, ώστε να γνωρίζουν πώς λειτουργεί το αγαπημένο τους σύστημα . Δεν υπάρχει αμφιβολία ότι είναι η αγαπημένη πολλών. Αλλά ορισμένοι εξακολουθούν να μην κατανοούν πλήρως όλες τις διαδικασίες, γιατί και γιατί είναι λογικό να ξεκλειδώσετε τη συσκευή, να της στερήσετε την εγγύηση και την ασφάλεια.

Το πρώτο πράγμα που πρέπει να γνωρίζετε είναι ότι το Android είναι μια παραλλαγή του λειτουργικού συστήματος Linux και τουλάχιστον εδώ αυτό το σύστημα έχει βρει την αρχική του θέση. Μέσα στο σύστημα, στο πιο βασικό του επίπεδο, υπάρχει ένας τροποποιημένος πυρήνας Linux, ο οποίος, όπως και τα μεγάλα συστήματα, χρειάζεται να ενημερώνεται συχνά. Πολύ πιο συχνά από ό,τι σε άλλα λειτουργικά συστήματα κινητής τηλεφωνίας, διαφορετικά θα χάσετε την ευκαιρία να χρησιμοποιήσετε νέες δυνατότητες, αισθητήρες, εφαρμογές και άλλα χρήσιμα πράγματα. Ο πυρήνας λειτουργεί με εφαρμογές και προγράμματα οδήγησης μέσω του API συστήματος και μόνο σε αυτό το επίπεδο προγραμμάτων οδήγησης και εφαρμογών συστήματος μπορούν να γραφτούν προγράμματα σε C++. Το μεσαίο τμήμα του μηχανήματος καταλαμβάνεται από μια πλατφόρμα που μπορεί να συγκριθεί με το .NET της Microsoft. Ελέγχεται από τη γλώσσα Java. Κάθε εφαρμογή χρήστη δημιουργεί μια διαδικασία όταν η πλατφόρμα δημιουργεί ένα εικονικό περιβάλλον εκτέλεσης για αυτήν. Σε αυτό το σημείο, οι εφαρμογές Java με τη μορφή κώδικα κλάσης και βιβλιοθήκης μεταφράζονται αυτόματα σε γενικό bytecode που εκτελείται στη μηχανή byte Delvik. Αυτό το μηχάνημα έχει πολλά κοινά με το Java JVM.

Οι εφαρμογές λειτουργούν σε ένα περιβάλλον απομονωμένο η μία από την άλλη, συλλαμβάνοντας μόνο τους πόρους που χρειάζονται. Αυτή είναι μια θεμελιώδης διαφορά, για παράδειγμα, από προγράμματα σε υπολογιστή, όπου οποιοδήποτε πρόγραμμα μπορεί να καταλάβει όλους τους πόρους. Παρόλο που οι εφαρμογές είναι βελτιστοποιημένες για ποιότητα κώδικα και απομονωμένες η μία από την άλλη, δεν έχουν μόνο προληπτικές προτεραιότητες πολλαπλών εργασιών, αλλά και τρόπους κοινής χρήσης δεδομένων και αρχείων, εκχωρώντας τους τα ίδια αναγνωριστικά. Με αυτόν τον τρόπο, μπορείτε να διασφαλίσετε ότι τα σχετικά προγράμματα ξοδεύουν ελάχιστους περιττούς πόρους κατά την πρόσβαση σε API μέσω της πλατφόρμας, καθώς και σε κοινόχρηστα αρχεία προφίλ, λίστες επαφών κ.λπ. Το ενδιαφέρον εδώ είναι ότι μπορείτε να βάλετε άλλο κώδικα Java στο Delvik, τον οποίο η εικονική μηχανή θα αποδεχτεί ως εγγενή. Αυτό σας επιτρέπει να εφαρμόσετε πολλά συστήματα εικονικής ανάπτυξης, να χρησιμοποιήσετε νέες γλώσσες προγραμματισμού, ακόμη και να αλλάξετε το πλαίσιο εφαρμογής σε εναλλακτικές επιλογές - εφόσον μπορεί να δημιουργήσει bytecode και να συμμορφώνεται με κλήσεις API.

Η πλατφόρμα, ή το πλαίσιο, λειτουργεί με δεδομένα με ενοποιημένο τρόπο, μεταφράζοντάς τα στη μορφή βάσης δεδομένων SQLite - την ίδια μορφή με την οποία, για παράδειγμα, λειτουργεί το Mozilla σε υπολογιστή. Η διαχείριση της πρόσβασης στο Διαδίκτυο γίνεται από το πρόγραμμα περιήγησης Chrome, βελτιστοποιημένο για κινητές συσκευές. Για να δημιουργήσετε άψογα γραφικά, το API υποστηρίζει την τεχνολογία OpenGL ES v.3.0, καθώς και μια ολόκληρη σειρά από άπληστων μορφών γραφικών και βίντεο και κοντέινερ για την αποθήκευσή τους, συμπεριλαμβανομένων των h.264, mkv, MP4 κ.λπ.

Επικοινωνία με άλλες συσκευές – ενσύρματη (USB, κάρτες μνήμης) και ασύρματη (BT, IR, Wi-Fi, EDGE/3G/LTE). Πολλοί αισθητήρες συνδέονται με τη λήψη σημάτων από έξω από το σύστημα: GPS, επιταχυνσιόμετρο, πυξίδα, φωτογραφία, αισθητήρας σκότους, αισθητήρες φυσικής κατάστασης.

Στην εργοστασιακή του κατάσταση, το Android είναι πολύ σταθερό και ασφαλές, αλλά δεν επιτρέπει στον χρήστη να προχωρήσει πέρα ​​από τοποθεσίες όπου μπορούν να αγοραστούν εναλλακτικά προγράμματα. Αυτός είναι ο λόγος για τον οποίο, καθώς και για προγραμματισμό χαμηλού επιπέδου, στερείται προστασίας, μετά την οποία είναι απαραίτητο να εγκαταστήσετε λογισμικό προστασίας από ιούς στο σύστημα.

Εισαγωγή

Ιστορία

Διανομή Android

Ενσωματωμένες εφαρμογές Android

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

Πλεονεκτήματα και μειονεκτήματα του Android OS

1 Πλεονεκτήματα

2 Μειονεκτήματα

Τι δεν είναι το Android

συμπέρασμα

Βιβλιογραφία

Εισαγωγή

Το Google Android δεν είναι απλώς ένα λειτουργικό σύστημα για ένα smartphone, αλλά μια ολόκληρη υποδομή. Το Android είναι το πρώτο δωρεάν και ανοιχτού κώδικα λειτουργικό σύστημα. Το «πράσινο ρομπότ» τρέχει τηλέφωνα, tablet, τηλεοράσεις, έξυπνα ρολόγια και άλλα gadget, και σύντομα τα αυτοκίνητα θα ελέγχονται με Android. Το λειτουργικό σύστημα βασίζεται στον πυρήνα του Linux και στην υλοποίηση της εικονικής μηχανής Java από τη δική της Google. Αναπτύχθηκε αρχικά από την Android Inc, η οποία εξαγοράστηκε από την Google το 2005. Η Google ξεκίνησε στη συνέχεια τη δημιουργία της Open Handset Alliance (OHA), η οποία τώρα υποστηρίζει και αναπτύσσει περαιτέρω την πλατφόρμα. Το Android σάς επιτρέπει να δημιουργείτε εφαρμογές Java που ελέγχουν τη συσκευή μέσω βιβλιοθηκών που έχει αναπτύξει η Google. Το Android Native Development Kit σάς επιτρέπει να μεταφέρετε (αλλά όχι εντοπισμό σφαλμάτων) βιβλιοθήκες και στοιχεία εφαρμογών γραμμένα σε C και σε άλλες γλώσσες. Το Android OS είναι εγκατεστημένο στο 86% των smartphone (2014).

Εικόνα 1 - έμβλημα

1. Ιστορία

Σχήμα 2

Τον Ιούλιο του 2005, η Google εξαγόρασε την Android Inc. Τον Νοέμβριο του 2007, η εταιρεία ανακοίνωσε επίσημα τη δημιουργία του Open Handset Alliance (OHA) και ανακοίνωσε την ανοιχτή πλατφόρμα για κινητά Android, και στις 12 Νοεμβρίου 2007, η συμμαχία παρουσίασε την πρώτη έκδοση του κιτ προγραμματιστών Android "Early Look" SDK και έναν εξομοιωτή Android.

Τον Σεπτέμβριο του 2008, κυκλοφόρησε επίσημα η πρώτη έκδοση του λειτουργικού συστήματος, καθώς και το πρώτο ολοκληρωμένο πακέτο ανάπτυξης SDK 1.0, Έκδοση 1. Από την κυκλοφορία της πρώτης έκδοσης της πλατφόρμας, έχουν πραγματοποιηθεί αρκετές ενημερώσεις συστήματος. Αυτές οι ενημερώσεις αφορούν συνήθως τη διόρθωση σφαλμάτων που εντοπίστηκαν και την προσθήκη νέων λειτουργιών στο σύστημα.

Το 2009, παρουσιάστηκαν έως και τέσσερις ενημερώσεις πλατφόρμας. Έτσι, τον Φεβρουάριο κυκλοφόρησε η έκδοση 1.1 με διάφορες διορθώσεις σφαλμάτων. Τον Απρίλιο και τον Σεπτέμβριο. Δύο ακόμη ενημερώσεις έχουν κυκλοφορήσει - 1.5 "Cupcake" και 1.6 "Donut", αντίστοιχα. Η ενημέρωση Cupcake έφερε σημαντικές αλλαγές: εικονικό πληκτρολόγιο, αναπαραγωγή και εγγραφή βίντεο, πρόγραμμα περιήγησης και άλλα. Το Donut είναι το πρώτο που υποστηρίζει πολλαπλές αναλύσεις οθόνης, πυκνότητες οθόνης και δίκτυα CDMA.

Τον Οκτώβριο του ίδιου έτους, κυκλοφόρησε η έκδοση του λειτουργικού συστήματος Android 2.0 "Eclair" με υποστήριξη για πολλούς λογαριασμούς Google, υποστήριξη προγράμματος περιήγησης για τη γλώσσα HTML5 και άλλες καινοτομίες, και μετά από μια μικρή ενημέρωση στην έκδοση του "Eclair" ( 2.1), εμφανίστηκαν οι "ζωντανές ταπετσαρίες" και τροποποιήθηκε η οθόνη κλειδώματος.

Στα μέσα του 2010, η Google παρουσίασε την έκδοση Android 2.2 με το όνομα "Froyo", και στα τέλη του 2010, το Android 2.3 "Gingerbread". Η ενημέρωση "Froyo" κατέστησε δυνατή τη χρήση του smartphone σας ως hotspot, τη χρήση παραδοσιακού κλειδώματος smartphone με αριθμό ή αλφαριθμητικό κωδικό πρόσβασης και άλλες αλλαγές, ενώ η ενημέρωση "Gingerbread" έφερε περισσότερο έλεγχο στη λειτουργικότητα αντιγραφής και επικόλλησης, βελτιωμένη διαχείριση ενέργειας. και έλεγχος εφαρμογών , υποστήριξη για πολλές κάμερες στη συσκευή κ.λπ.

Τον Φεβρουάριο του 2011, παρουσιάστηκε επίσημα η πλατφόρμα Android 3.0 "Honeycomb" με προσανατολισμό στο Διαδίκτυο το 4.0 "Ice Cream Sandwich", που κυκλοφόρησε στις 19 Οκτωβρίου 2011, είναι η πρώτη καθολική πλατφόρμα που έχει σχεδιαστεί τόσο για tablet όσο και για smartphone. Η ενημέρωση εισήγαγε επίσης μια νέα διεπαφή "Holo", η οποία χρησιμοποιήθηκε πριν από το Android 4.4.4 KitKat, αλλά τώρα έχει αντικατασταθεί από το Material Design (Android 5).

Τον Ιούνιο του 2012, κυκλοφόρησε μια ενημερωμένη έκδοση με το όνομα "Jelly Bean" με σειριακό αριθμό 4.1, η οποία άλλαξε σε 4.2 λόγω μιας μικρής ενημέρωσης στα τέλη Οκτωβρίου του ίδιου έτους και σε 4.3 μετά από ενημέρωση τον Ιούλιο του 2013.

Τον Οκτώβριο του 2013, η Google παρουσίασε την επόμενη έκδοση του λειτουργικού συστήματος Android 4.4, η οποία ονομάστηκε σοκολάτα "KitKat" βάσει συμφωνίας με τον κατασκευαστή Nestlé. Το KitKat εμφανίστηκε για πρώτη φορά στο Nexus 5. Αυτή η έκδοση του Android είναι βελτιστοποιημένη για να λειτουργεί σε ένα ευρύτερο φάσμα συσκευών, με 512 MB μνήμης RAM ως το προτεινόμενο ελάχιστο.

Ιούνιος 2014 Η Google παρουσίασε το Android L, διαθέσιμο σε προγραμματιστές, χρήστες smartphone Nexus, καθώς και σε ορισμένα άλλα smartphone.

Το 2014 ανακοινώθηκε το λειτουργικό σύστημα για φορητές συσκευές Android Wear (για ρολόγια χειρός). Επίσης, στο Google I/O, παρουσιάστηκαν εκδόσεις του Android Auto (για αυτοκίνητα) και του Android TV (για τηλεοράσεις), και έτσι το Android έπαψε να είναι λειτουργικό μόνο για κινητές συσκευές.

Οκτώβριος 2014 ανακοινώθηκε επίσημα το Android 5.0 Lollipop. Η κύρια ενημέρωση του συστήματος είναι το νέο Material design. Επίσης, εάν έχει οριστεί κωδικός πρόσβασης ή μοτίβο σε μια συσκευή Android και εάν το ρολόι του κατόχου με Android Wear βρίσκεται κοντά, η συσκευή θα ξεκλειδώσει αυτόματα. Αντί για την εικονική μηχανή Dalvik που χρησιμοποιήθηκε προηγουμένως , αρχίζει να χρησιμοποιείται εικονική μηχανή ΤΕΧΝΗ.

Δεκέμβριος 2014 Η Google αντικατέστησε το επίσημο περιβάλλον ανάπτυξης που βασίζεται στο Eclipse (adt-bundle) με το Android Studio.

Τον Μάιο του 2015, η Google παρουσίασε το Android M. Σύμφωνα με την Google, ο κύριος στόχος του νέου λειτουργικού συστήματος είναι να βελτιώσει την εμπειρία του χρήστη στην επικοινωνία με ένα smartphone, κάνοντας την αλληλεπίδραση διαισθητική και ευκολότερη.

Στις 17 Αυγούστου 2015 έγινε επίσημα γνωστό ότι το Android M ονομαζόταν Android 6.0 Marshmallow.

πρόγραμμα android για κινητά

2. Διανομή Android

Στην αρχή κάθε μήνα, η Google δημοσιεύει παραδοσιακά στατιστικά στοιχεία σχετικά με τη διανομή των εκδόσεων Android. Σύμφωνα με τα τελευταία στοιχεία, τον Ιανουάριο του 2016 το μερίδιο του Android 6.0Marshmallow σχεδόν διπλασιάστηκε, αλλά μέχρι στιγμής μόνο το 1,2% των συσκευών εκτελεί το νέο λειτουργικό σύστημα. Δυστυχώς, οι κατασκευαστές δεν βιάζονται να ενημερώσουν τα gadget που έχουν ήδη κυκλοφορήσει και τα περισσότερα από τα νέα προϊόντα που παρουσιάστηκαν πρόσφατα εξακολουθούν να χρησιμοποιούν Android Lollipop.

Εικόνα 3

Τραπέζι 1

ΈκδοσηCodenameAPIDdistribution2.2Froyo80.1%2.3.3 - 2.3.7Gingerbread102.7%4.0.3 - 4.0.4Ice Cream Sandwich152.5%4.1.xJelly Bean168.8%4.2.x14.4%Kit %4.2.x14.4%Kit %4.2.x14.4%Kit %4.2.x14.4K%4.2.x14. 5,02117,0%5,1 Lollipop2217,1%6,0Marshmallow231,2% Στοιχεία από 1 Φεβρουαρίου 2016.

Το μερίδιο του Android 6.0 Marshmallow μόλις ξεπέρασε το 1% σχεδόν τέσσερις μήνες μετά την κυκλοφορία της πλατφόρμας. Την ίδια περίοδο, το 77% των κινητών gadget της Apple ενημερώθηκε σε iOS 9.

% των συσκευών χρησιμοποιούν iOS 9 (iPhone και iPad)

Εικόνα 4

Αυτό που προκαλεί έκπληξη είναι ότι το Android 4.4 KitKat, που ανακοινώθηκε το 2013, εξακολουθεί να βρίσκεται στην πρώτη θέση στην κατάταξη της Google (35,5%). Στη δεύτερη θέση σε δημοτικότητα βρίσκεται η έκδοση Lollipop με μερίδιο 34,1%, και την τρίτη θέση καταλαμβάνει η Jelly Bean (23,9%).

3. Ενσωματωμένες εφαρμογές Android

Οι συσκευές Android συνοδεύονται από ένα σύνολο προεγκατεστημένων προγραμμάτων που αναπτύχθηκαν από το Android Open Source Project (AOSP).

Παραθέτουμε τα κυριότερα:

E-mail - πελάτη;

Εφαρμογή για εργασία με SMS (ξεκινώντας από το Android 5.0 που αντικαταστάθηκε από το Hangouts).

Ένα πλήρες σύνολο εργαλείων για τη διαχείριση των προσωπικών δεδομένων του χρήστη, συμπεριλαμβανομένου ενός ημερολογίου και ενός βιβλίου διευθύνσεων.

Πρόγραμμα περιήγησης που βασίζεται σε WebKit (αφού το Android 4.4 αντικαταστάθηκε από το Google Chrome).

Πρόγραμμα αναπαραγωγής μουσικής και συλλογή φωτογραφιών (ξεκινώντας με το Android 5.0 που αντικαταστάθηκε από τη Μουσική Google Play και τις Φωτογραφίες Google).

Αριθμομηχανή;

"Επιφάνεια εργασίας";

Τρομάζω

Σε πολλές περιπτώσεις, το Android περιλαμβάνει επίσης το ακόλουθο λογισμικό με άδεια χρήσης από την Google:

Google Play Store για λήψη προγραμμάτων τρίτων κατασκευαστών που έχουν αναπτυχθεί για την πλατφόρμα Android, αγορά ταινιών, μουσικής, βιβλίων και τύπου.

Πλήρης εφαρμογή Χαρτών Google που περιλαμβάνει Street View, Οδηγίες οδήγησης, πλοήγηση με δρομολόγιο, δορυφορικό χάρτη και πληροφορίες κυκλοφορίας.

Πρόγραμμα για εργασία με αλληλογραφία Gmail.

Πρόγραμμα άμεσων μηνυμάτων Google Hangouts.

Ένα πρόγραμμα για εργασία με αρχεία Google Drive.

Πρόγραμμα αναπαραγωγής βίντεο για εργασία με την υπηρεσία YouTube.

Τα δεδομένα στα οποία έχετε πρόσβαση από αυτές τις εφαρμογές, όπως το βιβλίο διευθύνσεων, είναι επίσης ανοιχτά σε προγράμματα τρίτων. Επιπλέον, οι εφαρμογές μπορούν, για παράδειγμα, να ανταποκρίνονται σε εισερχόμενες κλήσεις.

Η εμφάνιση των προγραμμάτων που είναι εγκατεστημένα σε νέα τηλέφωνα μπορεί να διαφέρει σημαντικά ανάλογα με τον κατασκευαστή και/ή τον χειριστή ή τον διανομέα του υλικού.

Η ανοιχτή φύση της πλατφόρμας Android σημαίνει ότι οι χειριστές ή οι OEM μπορούν να αλλάξουν τη διεπαφή χρήστη και το λογισμικό σε οποιαδήποτε συσκευή Android.

Ορισμένοι κατασκευαστές έχουν αναπτύξει τις δικές τους διεπαφές, όπως το Sense της HTC, το Moto Blur της Motorola και το Touch Wiz της Samsung.

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

Εικόνα 5 Δομή πλατφόρμας Google Android

Η αρχιτεκτονική του Google Android αποτελείται από τέσσερα επίπεδα (η αρίθμηση υποδεικνύει τη σειρά των επιπέδων από κάτω προς τα πάνω).

Επίπεδο - OS Linux kernel έκδοση 2.6 διασφαλίζει τη λειτουργία του συστήματος. Είναι υπεύθυνο για την ασφάλεια, τη μνήμη, τη διαχείριση ενέργειας και διεργασιών, ενώ παρέχει επίσης μια στοίβα δικτύου και ένα μοντέλο προγράμματος οδήγησης. Παίζει επίσης έναν συνδετικό ρόλο μεταξύ του υλικού και της υπόλοιπης στοίβας λογισμικού.

Layer - Middleware - ένα σύνολο βιβλιοθηκών (Libraries) που έχουν σχεδιαστεί για να παρέχουν κρίσιμη λειτουργικότητα για εφαρμογές.

Εδώ είναι μερικά από αυτά:

Το Surface Manager είναι ένας σύνθετος διαχειριστής παραθύρων. Αντί να σχεδιάζει γραφικά στην προσωρινή μνήμη οθόνης, το σύστημα στέλνει τις εισερχόμενες εντολές σχεδίασης στην προσωρινή μνήμη εκτός οθόνης, όπου συσσωρεύονται μαζί με άλλες, συνθέτοντας μια συγκεκριμένη σύνθεση και στη συνέχεια εμφανίζονται στον χρήστη στην οθόνη. Αυτό σας επιτρέπει να δημιουργήσετε ενδιαφέροντα απρόσκοπτα εφέ, διαφάνεια παραθύρου και ομαλές μεταβάσεις.

Media Framework - βιβλιοθήκες που υλοποιούνται με βάση το PacketVideo OpenCORE. Με τη βοήθειά τους, το σύστημα καταγράφει/αναπαράγει περιεχόμενο ήχου και βίντεο, καθώς και εμφανίζει στατικές εικόνες. Υποστηρίζονται μορφές MPEG4, H.264, MP3, AAC, AMR, JPG και PNG κ.λπ.

Το SQLite είναι ένα σχεσιακό DBMS που χρησιμοποιείται στο Android ως η κύρια μηχανή εργασίας με βάσεις δεδομένων που χρησιμοποιούνται από εφαρμογές για την αποθήκευση πληροφοριών.

3D βιβλιοθήκες - χρησιμοποιούνται για απόδοση τρισδιάστατων γραφικών, αν είναι δυνατόν, χρησιμοποιήστε επιτάχυνση υλικού. Υλοποιήθηκε με βάση το OpenGL ES 1.0, 2.0, 3.0 και 3.1 API.

Το FreeType είναι μια βιβλιοθήκη για εργασία με ραστεροποίηση γραμματοσειρών και εκτέλεση λειτουργιών σε αυτές.

LibWebCore - Βιβλιοθήκες μηχανών προγράμματος περιήγησης WebKit.

Η SGL (Skia Graphics Engine) είναι μια βιβλιοθήκη για εργασία με 2D γραφικά.

Το Libc είναι μια τυπική βιβλιοθήκη γλώσσας C που έχει ρυθμιστεί να εκτελείται σε συσκευές που βασίζονται σε Linux.

Όλες οι βιβλιοθήκες είναι γραμμένες σε C++ και μεταγλωττίζονται για συγκεκριμένο υλικό συσκευής.

Το περιβάλλον Android Runtime βρίσκεται στο ίδιο επίπεδο. Αποτελείται από την εικονική μηχανή Dalvik/ART Java και τις βιβλιοθήκες πυρήνα. Το Dalvik/ART υποστηρίζει την ταυτόχρονη λειτουργία πολλών εφαρμογών και εκτελεί αρχεία σε ειδική μορφή. dex, βελτιστοποιημένο για συσκευές με χαμηλή μνήμη. Οι βασικές βιβλιοθήκες είναι γραμμένες σε Java και υποστηρίζουν ένα ευρύ φάσμα λειτουργιών.

Κάθε εφαρμογή στο Android Runtime εκτελείται στη δική της παρουσία της εικονικής μηχανής Dalvik/ART. Δηλαδή, όλες οι διεργασίες που εκτελούνται είναι απομονωμένες από το λειτουργικό σύστημα και μεταξύ τους. Ένα χαρακτηριστικό της δομής Android Runtime επιτρέπει στα προγράμματα να εκτελούνται αυστηρά μέσα σε μια εικονική μηχανή. Χάρη σε αυτό, ο πυρήνας του λειτουργικού συστήματος προστατεύεται από την επιρροή άλλων στοιχείων. Ο κωδικός σφάλματος ή το κακόβουλο λογισμικό δεν θα μπορούν να βλάψουν το σύστημα ή την ίδια τη συσκευή. Η λειτουργία προστασίας, εκτός από την άμεση εκτέλεση του κώδικα προγράμματος, είναι μία από τις βασικές για αυτό το επίπεδο.

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

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

Ένα πλούσιο και επεκτάσιμο σύνολο προβολών που μπορεί να χρησιμοποιηθεί για τη δημιουργία οπτικών στοιχείων εφαρμογής, όπως λίστες, πεδία κειμένου, πίνακες, κουμπιά ή ακόμα και ένα ενσωματωμένο πρόγραμμα περιήγησης ιστού.

Οι πάροχοι περιεχομένου, οι οποίοι διαχειρίζονται τα δεδομένα που ορισμένες εφαρμογές διαθέτουν σε άλλες, ώστε να μπορούν να τα χρησιμοποιήσουν για την εργασία τους.

Διαχείριση πόρων, που παρέχει πρόσβαση σε πόρους χωρίς λειτουργικότητα (χωρίς κωδικό), για παράδειγμα, δεδομένα συμβολοσειρών, γραφικά, αρχεία και άλλα.

Διαχειριστής ειδοποιήσεων, χάρη στον οποίο όλες οι εφαρμογές μπορούν να εμφανίζουν τις δικές τους ειδοποιήσεις στον χρήστη στη γραμμή κατάστασης.

Το Activity Manager, το οποίο διαχειρίζεται τους κύκλους ζωής των εφαρμογών, αποθηκεύει δεδομένα ιστορικού δραστηριότητας και παρέχει επίσης ένα σύστημα πλοήγησης για αυτές.

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

Έτσι, οι εφαρμογές στο λειτουργικό σύστημα Android μπορούν να έχουν στη διάθεσή τους βοηθητικά εργαλεία.

Διαφορές μεταξύ πλαισίου και βιβλιοθήκης

Το πλαίσιο εκτελεί μόνο τον κώδικα που είναι γραμμένο για αυτό, οι βιβλιοθήκες εκτελούν μόνες τους.

Το πλαίσιο αποτελείται από βιβλιοθήκες με διαφορετική λειτουργικότητα και σκοπούς και οι βιβλιοθήκες συνδυάζουν σύνολα συναρτήσεων που είναι παρόμοια στη λογική.

Επίπεδο 4 - Εφαρμογές. Αυτό περιλαμβάνει τα βασικά προγράμματα που είναι προεγκατεστημένα στο Android. Πρόκειται για πρόγραμμα περιήγησης, πρόγραμμα-πελάτη email, πρόγραμμα αποστολής SMS, χάρτες, ημερολόγιο, διαχείριση επαφών. Η λίστα των ενσωματωμένων εφαρμογών μπορεί να διαφέρει ανάλογα με το μοντέλο της συσκευής και την έκδοση Android. Λογισμικό τρίτων βρίσκεται επίσης σε αυτό το επίπεδο. Το σύστημα σάς επιτρέπει να το εγκαταστήσετε χωρίς περιορισμούς, έτσι ώστε όλες οι τυπικές εφαρμογές να μπορούν να αντικατασταθεί από ανάλογα. Οι εφαρμογές Android είναι γραμμένες σε Java .

5. Πλεονεκτήματα και μειονεκτήματα του Android OS

1 Πλεονεκτήματα

Ορισμένοι παρατηρητές σημειώνουν ότι το Android αποδίδει καλύτερα από έναν από τους ανταγωνιστές του, την Apple iOS, σε μια σειρά από λειτουργίες, όπως η περιήγηση στο διαδίκτυο και η ενοποίηση με τις υπηρεσίες Google Inc. και άλλοι. Επίσης, το Android, σε αντίθεση με το iOS, είναι μια ανοιχτή πλατφόρμα, η οποία σας επιτρέπει να εφαρμόσετε περισσότερες λειτουργίες σε αυτό.

Οι συσκευές Android συνήθως διαθέτουν συσκευή ανάγνωσης καρτών microSD, η οποία καθιστά δυνατή τη γρήγορη μεταφορά αρχείων από τον υπολογιστή σας στο τηλέφωνό σας. Επιπλέον, στο Windows Phone 7 είναι αδύνατη η απευθείας μεταφορά αρχείων από και προς το τηλέφωνο, παρά μόνο μέσω προγραμμάτων συγχρονισμού (Zune), ενώ τα τηλέφωνα Android εξάγουν το σύστημα αρχείων της κάρτας μνήμης ως συσκευή μαζικής αποθήκευσης USB (σε εκδόσεις που ξεκινούν από 3.0 κατά την κρίση του κατασκευαστή) ή χρησιμοποιώντας το πρωτόκολλο μεταφοράς πολυμέσων (MTP).

Σε αντίθεση με τα Windows Phone 7, το Android διεκδικεί την πλήρη εφαρμογή της στοίβας Bluetooth, η οποία επιτρέπει, μεταξύ άλλων, τη μεταφορά και λήψη αρχείων. Υπάρχει μια υλοποίηση διακομιστή FTP, λειτουργία σημείου πρόσβασης δικτύου (υπηρεσίες PAN) και ομαδικό δίκτυο peer-to-peer μέσω Bluetooth (υπηρεσίες GN).

Παρά την αρχική απαγόρευση εγκατάστασης προγραμμάτων από "μη επαληθευμένες πηγές" (για παράδειγμα, από κάρτα μνήμης), αυτός ο περιορισμός απενεργοποιείται με τυπικά μέσα στις ρυθμίσεις της συσκευής, που σας επιτρέπει να εγκαταστήσετε προγράμματα σε τηλέφωνα και tablet χωρίς σύνδεση στο Διαδίκτυο (για Για παράδειγμα, χρήστες που δεν έχουν σημεία πρόσβασης Wi-Fi Fi και εκείνοι που δεν θέλουν να ξοδέψουν χρήματα στο κινητό Διαδίκτυο, το οποίο είναι συνήθως ακριβό), και επίσης επιτρέπει σε όλους να γράφουν δωρεάν εφαρμογές Android και να τις δοκιμάζουν στη συσκευή τους. Διατίθεται για διάφορες πλατφόρμες υλικού, όπως ARM, MIPS, x86.

Υπάρχουν εναλλακτικά καταστήματα εφαρμογών στο Google Play: Amazon Appstore (Αγγλικά), Opera Mobile Store, Yandex.Store, GetUpps!, F-Droid (Αγγλικά) και άλλα.

Η έκδοση 4.2 εισήγαγε υποστήριξη για λειτουργία πολλών χρηστών.

5.2 Μειονεκτήματα

Η παρουσία σε ορισμένες συσκευές Android υπηρεσιών Google που παρέχουν τη δυνατότητα μεταφοράς πληροφοριών αναγνώρισης στους διακομιστές της εταιρείας, για παράδειγμα, πληροφορίες σχετικά με την κίνηση του χρήστη σε πραγματικό χρόνο.

Στην έκδοση Android 1.6, οι προγραμματιστές πρόσθεσαν το Native Development Kit, το οποίο σας επιτρέπει να γράψετε τις δικές σας μονάδες χαμηλού επιπέδου για το σύστημα σε γλώσσες C/C++, βασιζόμενοι σε τυπικές βιβλιοθήκες Linux. Αν και, για παράδειγμα, η τυπική βιβλιοθήκη C στην πλατφόρμα Android, γνωστή ως Bionic, δεν είναι τυπική και είναι απολύτως συμβατή με το libc.

Για να αποκτήσετε πρόσβαση στο Google Play και σε άλλες υπηρεσίες από την Google, πρέπει να χρησιμοποιήσετε ιδιόκτητες εφαρμογές που ο κατασκευαστής του τηλεφώνου έχει το δικαίωμα να εγκαταστήσει στο τηλέφωνο μόνο μετά τη σύναψη σύμβασης με την Google.

Οι ανταγωνιστές του Android επέκριναν την πλατφόρμα, κατηγορώντας την ότι είναι υπερβολικά κατακερματισμένη και ότι παρεμποδίζει τους προγραμματιστές. Η Google αρνήθηκε όλες τις κατηγορίες, λέγοντας ότι δεν υπάρχουν τέτοια προβλήματα.

Η απόφαση της Google να μην κυκλοφορήσει δημόσια τον κώδικα Honeycomb Android 3.0, ο οποίος είναι διαθέσιμος μόνο στα μέλη της Open Handset Alliance ή κατόπιν ατομικού αιτήματος μετά την υπογραφή της συμφωνίας, έχει επικριθεί. Το κίνητρο της Google είναι η μη διαθεσιμότητα της πλατφόρμας και ένα μέτρο για την αποτροπή της απρόσεκτης εφαρμογής της. Ο Richard Stallman δήλωσε ότι «είναι σαφές και απλό: με εξαίρεση τον πυρήνα Linux, το Android 3 είναι αποκλειστικό λογισμικό» και «παρόλο που τα τηλέφωνα Android σήμερα δεν είναι τόσο κακά όσο τα smartphone της Apple ή των Windows, δεν μπορεί να ειπωθεί ότι σέβονται την ελευθερία σου. .» Επί του παρόντος, η Google έχει ανοιχτού κώδικα όλες τις εκδόσεις του Android έως την έκδοση 6.0 και έχει επίσης κυκλοφορήσει όλες τις αλλαγές στο Linux βάσει της GPL.

Σύμφωνα με το Lookout Security Mobile, το 2011, περίπου ένα εκατομμύριο δολάρια ΗΠΑ κλάπηκαν από χρήστες smartphone Android (για παράδειγμα, αποστολή SMS χωρίς τη γνώση του κατόχου του τηλεφώνου). Ωστόσο, αυτό συμβαίνει συχνά σε χρήστες που δεν διαβάζουν προσεκτικά τις λίστες δικαιωμάτων.

6. Τι δεν είναι το Android

Δεν αποτελεί έκπληξη το γεγονός ότι η εισαγωγή της επαναστατικής τεχνολογίας έχει προκαλέσει κάποια σύγχυση σχετικά με το τι είναι στην πραγματικότητα το Android. Μπορούμε να πούμε με σιγουριά τι δεν είναι.

-Υλοποίηση της πλατφόρμας Java ME. Οι εφαρμογές Android γράφονται χρησιμοποιώντας τη γλώσσα Java, αλλά δεν χρησιμοποιούνται στην εικονική μηχανή Java ME (Mobile Edition), επομένως οι κλάσεις και τα εκτελέσιμα αρχεία που έχουν δημιουργηθεί για Java δεν θα εκτελούνται στην πλατφόρμα Android.

-Μέρος της πρωτοβουλίας Linux Phone Standards Forum (LiPs) ή της Open Mobile Alliance (OMA). Το Android τρέχει στον πυρήνα Linux ανοιχτού κώδικα, αλλά ενώ οι στόχοι είναι παρόμοιοι, ολόκληρη η στοίβα λογισμικού πλατφόρμας Android προορίζεται να λύσει περισσότερα υποσχόμενα προβλήματα σε σύγκριση με τις πρωτοβουλίες προτύπων των αναφερόμενων οργανισμών.

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

-Τύπος κινητών τηλεφώνων. Το Android περιλαμβάνει σχέδια αναφοράς για κατασκευαστές κινητών τηλεφώνων, αλλά δεν υπάρχει τηλέφωνο με επωνυμία Android στη φύση. Το αντίθετο: το Android σχεδιάστηκε για να χρησιμοποιείται σε μια μεγάλη ποικιλία συσκευών.

-Η απάντηση της Google στο iPhone. Το iPhone είναι η αποκλειστική πλατφόρμα λογισμικού και υλικού της Apple. Ταυτόχρονα, το Android είναι ένα σύνολο λογισμικού ανοιχτού κώδικα που αναπτύχθηκε και διατηρείται από την Alliance for Open Mobile Architectures. Το Android έχει σχεδιαστεί για να λειτουργεί σε οποιαδήποτε συμβατή συσκευή.

συμπέρασμα

Σήμερα, το λειτουργικό σύστημα για κινητές πλατφόρμες Google Android έχει γίνει αρκετά δημοφιλές. Οι προοπτικές για ένα λειτουργικό σύστημα για κινητές συσκευές είναι πολύ ελπιδοφόρες: βελτιωμένη και απλοποιημένη διεπαφή χρήστη. βελτιωμένα γραφικά? ευρύτερες δυνατότητες πολυμέσων· ανάπτυξη ενός συνόλου προγραμμάτων υπηρεσιών και παιχνιδιών. συμβατό με υπολογιστές και μορφές αρχείων. συνέχιση και ανάπτυξη της χρήσης της πλατφόρμας Java για κινητές συσκευές· ανάπτυξη των ίδιων των κινητών συσκευών: βελτίωση της ανάλυσης οθόνης, επιτάχυνση επεξεργαστών, αύξηση χωρητικότητας μνήμης, εφαρμογή νέων τεχνολογιών γρήγορης επικοινωνίας.

Τα αρχιτεκτονικά χαρακτηριστικά της πλατφόρμας Google Android της επέτρεψαν να πάρει την πρώτη θέση μεταξύ άλλων πλατφορμών. Τα κυριότερα:

1Ένας καλά σχεδιασμένος πυρήνας δανεισμένος από το σύστημα Linux.

2Εικονική μηχανή Dalvik/ART προσανατολισμένη σε καταχωρήσεις για εκτέλεση εφαρμογών.

Καινοτόμες βιβλιοθήκες που επεκτείνουν σημαντικά τη λειτουργικότητα των συσκευών.

4"Ελαφρύ" SQLite DBMS για αποθήκευση δεδομένων.

5Δυνατότητα υποστήριξης γραφικών 3D και 2D, ακόμη και συνδυασμού τους σε μία εφαρμογή.

Multitasking και απομόνωση διαδικασιών μεταξύ τους.

Πολυχρηστικότητα αρχιτεκτονικής σε συνδυασμό με υψηλή ποιότητα.

Βιβλιογραφία

1) Goloshchapov A.L. Google Android: στοιχεία συστήματος και επικοινωνίες δικτύου. - Αγία Πετρούπολη: BHV-Petersburg, 2012. - 384 σελ.

2) Felker D. Android: ανάπτυξη εφαρμογών για ομοιώματα. - Μ.: Διαλεκτική, 2012. - 336 σελ.

3) Hashimi S., Komatineni S., McLean D. Ανάπτυξη εφαρμογών Android. - Αγία Πετρούπολη: Πέτρος, 2011. - 736 σελ.

4) Mayer R. Android 4. Προγραμματισμός εφαρμογών για tablet και smartphone. - Μ.: Eksmo, 2013. - 816 σελ.

5) Προγραμματιστής Android

)Προγραμματιστής της Apple

Σε αυτό το άρθρο θα προσπαθήσω να εξετάσω την ασφάλεια λίγο υψηλότερα από τον πυρήνα, δηλαδή: πώς λειτουργεί η ασφάλεια στον χώρο εγγενών χρηστών. Θα αγγίξουμε το θέμα της διαδικασίας εκκίνησης του λειτουργικού συστήματος και θα εξετάσουμε τη δομή του συστήματος αρχείων Android. Όπως είπα ήδη, δεν είμαι πολύ δυνατός στο Linux, οπότε αν παρατηρήσετε τυχόν ανακρίβειες, διορθώστε τις - διδάξτε με και βελτιώστε το άρθρο. Επειδή αυτό το θέμα είναι αρκετά εκτενές, αποφάσισα να το χωρίσω σε δύο μέρη. Στο πρώτο μέρος θα δούμε τη διαδικασία φόρτωσης του λειτουργικού συστήματος και τις δυνατότητες του συστήματος αρχείων. Όποιος ενδιαφέρεται είναι ευπρόσδεκτος!

Κατάλογος άρθρων

Ακολουθούν σύνδεσμοι προς τα άρθρα μου από αυτό το θέμα:
  1. Βασική ασφάλεια του λειτουργικού συστήματος Android. Επίπεδο πυρήνα
  2. Βασική ασφάλεια του λειτουργικού συστήματος Android. Εγγενής χώρος χρήστη, μέρος 1
  3. Βασική ασφάλεια του λειτουργικού συστήματος Android. Εγγενής χώρος χρήστη, μέρος 2
  4. Βασική ασφάλεια του λειτουργικού συστήματος Android. Ασφάλεια σε επίπεδο Application Framework. Binder IPC

Τι σημαίνει εγγενής χώρος χρήστη

Ο χώρος εγγενούς χρήστη αναφέρεται σε όλα τα στοιχεία χώρου χρήστη που εκτελούνται εκτός της εικονικής μηχανής Dalvik και δεν αποτελούν μέρος του πυρήνα του Linux.

Σύστημα αρχείων Android

Αρχικά, ας ρίξουμε μια ματιά στη δομή του συστήματος αρχείων Android. Αν και το Android βασίζεται στον πυρήνα του Linux, δεν θα δούμε τη γνωστή δομή του συστήματος αρχείων εδώ. Ας ενεργοποιήσουμε τον εξομοιωτή και ας δούμε τι έχουμε. Για να το κάνετε αυτό, εκτελέστε την εντολή:

Adb κέλυφος ls -al
Στο τερματικό μου για έναν εξομοιωτή Android 4.2 βλέπω την ακόλουθη έξοδο:

Drwxr-xr-x root root 2013-04-10 08:13 acct drwxrwx--- system cache 2013-04-10 08:13 cache dr-x------ root root 2013-04-10 08:13 config lrwxrwxrwx root root 2013-04-10 08:13 d -> /sys/kernel/debug drwxrwx--x system system 2013-04-10 08:14 data -rw-r--r-- root 116 1970- 01-01 00:00 default.prop drwxr-xr-x root root 2013-04-10 08:13 dev lrwxrwxrwx root root 2013-04-10 08:13 etc -> /system/etc -rwxr-x--- root root 244536 1970-01-01 00:00 init -rwxr-x--- root root 2487 1970-01-01 00:00 init.goldfish.rc -rwxr-x--- root root 18247 1970-01- 00:00 init.rc -rwxr-x--- root root 1795 1970-01-01 00:00 init.trace.rc -rwxr-x--- root root 3915 1970-01-01 00:00 init.usb .rc drwxrwxr-x root system 2013-04-10 08:13 mnt dr-xr-xr-x root root 2013-04-10 08:13 proc drwx------ root root 2012-11-15 05: 31 root drwxr-x--- root root 1970-01-01 00:00 sbin lrwxrwxrwx root root 2013-04-10 08:13 sdcard -> /mnt/sdcard d---r-x--- ρίζα 02013 -10 08:13 αποθήκευση drwxr-xr-x root root 2013-04-10 08:13 sys drwxr-xr-x root root 2012-12-31 03:20 system -rw-r--r-- root root 272 1970-01-01 00:00 ueventd.goldfish.rc -rw-r--r-- root root 4024 1970-01-01 00:00 ueventd.rc lrwxrwxrwx root 2013-04-10 08:1 /σύστημα/πωλητής
Θα σημειώσω εδώ μόνο τους κύριους καταλόγους και αυτούς που θα μας φανούν χρήσιμοι στο μέλλον. Μπορείτε να βρείτε περιγραφές και σκοπούς άλλων καταλόγων στο Διαδίκτυο. Θα παρατηρήσετε ότι ορισμένοι κατάλογοι είναι οι ίδιοι όπως στο Linux, για παράδειγμα, /dev, /proc, /sys, /μντ, /και τα λοιπάΚαι ο σκοπός τους είναι ουσιαστικά ο ίδιος όπως στο Linux. Με την ευκαιρία, σημειώστε ότι δεν βλέπουμε /αποθήκηΚαι /libΕυρετήριο. Θα σας πω πού κρύφτηκαν λίγο αργότερα.

Από την άλλη πλευρά, μπορείτε να παρατηρήσετε καταλόγους που δεν υπάρχουν καθόλου στο Linux. Μεταξύ αυτών μας ενδιαφέρει /δεδομένα, /Σύστημα, /κρύπτη, /μέσα σε αυτό, /init.rcΑς ρίξουμε μια πιο προσεκτική ματιά στον σκοπό τους.
/ΣύστημαΑυτός είναι ο κύριος κατάλογος όπου αποθηκεύονται τα αμετάβλητα στοιχεία του συστήματος Android. Αν σχεδιάσουμε μια αναλογία, αυτός ο φάκελος είναι παρόμοιος με τον φάκελο C:\windows\, μόνο για ανάγνωση. Εκείνοι. Δεν μπορούμε να αλλάξουμε τα δεδομένα σε αυτόν τον κατάλογο. Εδώ μπορείτε να βρείτε τους καταλόγους /αποθήκηΚαι /lib, όπου αποθηκεύονται διάφορα εκτελέσιμα αρχεία και κοινόχρηστες βιβλιοθήκες. Επιπλέον, υπάρχουν εφαρμογές συστήματος που είναι ενσωματωμένες στο λειτουργικό σύστημα και οι οποίες, από προεπιλογή, δεν μπορούν να διαγραφούν. Τα περιεχόμενα αυτού του καταλόγου δημιουργούνται κατά τη μεταγλώττιση του λειτουργικού συστήματος.
/δεδομέναΕπειδή /ΣύστημαΕφόσον έχουμε πρόσβαση μόνο για ανάγνωση, πρέπει να υπάρχει ένας κατάλογος όπου αποθηκεύονται τα δεδομένα που μπορούν να αλλάξουν. /δεδομένααυτό ακριβώς είναι. Για παράδειγμα, σε αυτόν τον κατάλογο στο /data/appΤα αρχεία apk των εγκατεστημένων εφαρμογών αποθηκεύονται και /data/dataτα δεδομένα τους αποθηκεύονται (συζητήσαμε αυτόν τον κατάλογο λεπτομερώς στο προηγούμενο άρθρο).
/κρύπτηΑυτό είναι απλώς προσωρινή αποθήκευση. Οι ενημερώσεις συστήματος αποθηκεύονται επίσης σε αυτόν τον κατάλογο και στη συνέχεια εκκινούνται από αυτόν.

Για να καταλάβεις τι είναι /μέσα σε αυτόαρχείο και γιατί χρειαζόμαστε ακατανόητα αρχεία με επέκταση *.rc, ας δούμε τη διαδικασία εκκίνησης του συστήματος.

Διαδικασία εκκίνησης Android

Ας δούμε μερικά βήματα της διαδικασίας λήψης του λειτουργικού συστήματος Android. Αυτή η εικόνα προέρχεται από το βιβλίο "Embedded Android", όπου μπορείτε επίσης να βρείτε μια πιο λεπτομερή περιγραφή. Αν και γενικά καταλαβαίνω τη διαδικασία, για μένα είναι πιο μαγικό :)

ΕΠΕΞΕΡΓΑΣΤΗΣ.Όταν πατάτε το κουμπί λειτουργίας, παρέχεται τάση στον επεξεργαστή της συσκευής σας. Εφόσον μέχρι αυτό το σημείο ο επεξεργαστής ήταν απενεργοποιημένος και αφού δεν μπορεί να διατηρήσει την κατάστασή του χωρίς να εφαρμόσει τάση, τότε αμέσως μετά την εκκίνηση βρίσκεται σε κάποια μη αρχικοποιημένη κατάσταση. Σε αυτήν την περίπτωση, ο επεξεργαστής διαβάζει κάποια ενσύρματη διεύθυνση από τον ειδικό μητρώο του και ξεκινά την εκτέλεση εντολών ξεκινώντας από αυτόν. Τις περισσότερες φορές, αυτή η διεύθυνση δείχνει το τσιπ στο οποίο είναι ενσωματωμένος ο bootloader.
Bootloader.Ο Bootloader προετοιμάζει τη μνήμη RAM και φορτώνει τον πυρήνα του Linux σε αυτήν. Επιπλέον, ο Bootloader δημιουργεί έναν δίσκο RAM.
Πυρήνας Linux.Ο πυρήνας προετοιμάζει διάφορα υποσυστήματα, ενσωματωμένα προγράμματα οδήγησης και προσαρτά το ριζικό σύστημα αρχείων. Ο πυρήνας μπορεί στη συνέχεια να εκτελέσει το πρώτο πρόγραμμα.
Εδώ τελειώνει η μαγεία και τότε όλα γίνονται λίγο πολύ ξεκάθαρα.

Μέσα σε αυτό

Το πρώτο πρόγραμμα στην περίπτωση του Android είναι μέσα σε αυτό. Το εκτελέσιμο αρχείο βρίσκεται στον ριζικό κατάλογο ( /μέσα σε αυτό). Αυτό το πρόγραμμα ξεκινάει ο πυρήνας μετά τη φόρτωσή του. Οι πηγές του βρίσκονται στο φάκελο Ας τις ψάξουμε λίγο. Ενδιαφερόμαστε για :

Int main(int argc, char **argv) ( ... /* διαγράψτε το umask */ umask(0); /* Αποκτήστε τη βασική ρύθμιση του συστήματος αρχείων που χρειαζόμαστε μαζί * στο initramdisk στο / και μετά θα * αφήσουμε το αρχείο rc μάθετε τα υπόλοιπα */ mkdir ("/dev", 0755) mkdir ("/sys", 0755); , "tmpfs", MS_NOSUID, "mode=0755" mkdir("/dev/pts", 0755); , "devpts", 0, NULL ("proc", "/proc", "proc", 0, mount ("sysfs", "/sys", "sysfs", 0, NULL); ... init_parse_config_file("/init.rc");
Πρώτα, δημιουργούμε και προσαρτούμε ορισμένους καταλόγους που είναι απαραίτητοι για εργασία και, στη συνέχεια, αναλύουμε το αρχείο /init.rcκαι εκτελέστε αυτό που αναλύσαμε. Μορφή /init.rcΤο αρχείο περιγράφεται πολύ καλά και ένα παράδειγμα μπορεί επίσης να βρεθεί εκεί. Εν ολίγοις, αυτό το αρχείο είναι ένα σύνολο ενεργειών (ενότητες - μια επώνυμη ακολουθία εντολών). Κάθε ακολουθία εντολών ενεργοποιείται από ένα συγκεκριμένο έναυσμα. Για παράδειγμα, η ακόλουθη ακολουθία είναι μια ενέργεια, στην οποία το έναυσμα είναι fs και η ακολουθία εντολών είναι ένα σύνολο εντολών προσάρτησης:


Αρχικό αρχείο /init.rcείναι στο Ας δούμε μερικά από τα κύρια μέρη του, αν και συνιστώ ανεπιφύλακτα να το δείτε στο σύνολό του. Μετά από αυτό, πολλά πράγματα πρέπει να σας ξεκαθαρίσουν. Έτσι, το αρχείο μας ξεκινά με τις ακόλουθες γραμμές:

Εισαγωγή /init.usb.rc εισαγωγή /init.$(ro.hardware).rc εισαγωγή /init.trace.rc
Σημαίνουν ότι εκτός από init.rcαρχείο, πρέπει επίσης να εισαγάγετε ρυθμίσεις από τα αρχεία init.usb.rc, init.trace.rcκαι από ένα αρχείο με ασαφές όνομα init.$(ro.hardware).rcΩστόσο, $(ro.hardware)είναι απλώς μια μεταβλητή της οποίας η τιμή καθορίζει τον τύπο του υλικού. Στην περίπτωση ενός εξομοιωτή, η τιμή του είναι, για παράδειγμα, - χρυσόψαρο. Ορίζονται οι ακόλουθες μεταβλητές περιβάλλοντος:

Στο init ... # ρυθμίστε το παγκόσμιο περιβάλλον εξαγωγής PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin export LD_LIBRARY_PATH /vendor/lib:/system/lib export ANDROID_BOOTLOGO 1 εξαγωγή ANDROID_ROOT /εξαγωγή συστήματος ANDROID_ASSETS /σύστημα/εξαγωγή εφαρμογής ANDROID_DATA /εξαγωγή δεδομένων ANDROID_STORAGE /αποθήκευση εξαγωγή ASEC_MOUNTPOINT /mnt/asec εξαγωγή LOOP_MOUNTPOINT /mnt/obb εξαγωγή BOOTCLASSPATH /system/framework/core.jarme/jar: /framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/ Framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar ...
Μετά από αυτό, αρχικοποιούνται οι μεταβλητές που είναι απαραίτητες για τη λειτουργία της συσκευής. Εάν ενδιαφέρεστε για αυτό το θέμα, μπορείτε εύκολα να βρείτε πληροφορίες σχετικά με αυτήν ή εκείνη την εντολή. Ας ρίξουμε μια πιο προσεκτική ματιά στο ακόλουθο μπλοκ (το οποίο έχω ήδη δώσει σε αυτό το άρθρο):

Στο fs # mount mtd partitions # Mount /system rw πρώτα για να δώσει στο σύστημα αρχείων την ευκαιρία να αποθηκεύσει ένα σημείο ελέγχου mount yaffs2 mtd@system /system mount yaffs2 mtd@system /system ro remount mount yaffs2 mtd@userdata /data nosuid nodev mount yaffs2 mt @cache /cache nosuid nodev
MTD - Συσκευές τεχνολογίας μνήμης. Σε γενικές γραμμές, το MTD είναι ένα ειδικό τσιπ με μη πτητική (δηλαδή τα δεδομένα σε αυτό το τσιπ αποθηκεύονται μετά από επανεκκίνηση ή τερματισμό) μνήμη flash (τύπου NOR ή NAND), στην οποία αποθηκεύονται εικόνες δίσκου. Αυτό το άρθρο παρουσιάζει περισσότερες λεπτομέρειες σχετικά με αυτόν τον τύπο συσκευής, καθώς και τους περιορισμούς του. Ειδικά συστήματα αρχείων, για παράδειγμα, YAFFS, έχουν αναπτυχθεί ειδικά για αυτούς τους τύπους μνήμης flash. Ένας από τους σημαντικότερους περιορισμούς αυτών των τύπων μνήμης είναι ότι για να γράψετε δεδομένα σε έναν τομέα που έχει ήδη γραμμένα κάποια δεδομένα σε αυτόν, πρέπει πρώτα να διαγράψετε εντελώς ολόκληρο τον τομέα. Ως εκ τούτου, οι κατασκευαστές άρχισαν να μεταβαίνουν σε έναν νέο τύπο μπλοκ μνήμης flash (eMMC), στον οποίο μπορείτε να εγκαταστήσετε ένα κανονικό σύστημα αρχείων ext4 και να απαλλαγείτε από αυτόν τον περιορισμό. Επειδή Δείχνω ένα παράδειγμα init.rcαρχείο για τον εξομοιωτή, όπου γίνεται εξομοίωση όλης της εργασίας, χρησιμοποιεί το σύστημα αρχείων YAFFS2 από προεπιλογή (νομίζω ότι αυτό είναι λείψανο του παρελθόντος, αφού το YAFFS2 χρησιμοποιήθηκε για όλες τις συσκευές πριν από το Android 2.2). Σε μια πραγματική συσκευή (αυτό είναι μόνο ένα παράδειγμα όταν είναι απαραίτητο να χρησιμοποιηθεί init.rcαρχείο για ένα συγκεκριμένο υλικό) αυτές οι εντολές θα αντικατασταθούν. Για παράδειγμα, στην περίπτωση μιας συσκευής ρέγγα (Google Nexus S), στο αρχείο αυτή η ενότητα μοιάζει με αυτό:

Σε fs mkdir /efs 0775 ραδιοφωνική βάση yaffs2 mtd@efs /efs noatime nosuid nodev chmod 770 /efs/bluetooth chmod 770 /efs/imei mount_all /fstab.herring ...
Οπου fstab.ρέγγαείναι , το περιεχόμενο του οποίου μοιάζει με αυτό:

... /dev/block/platform/s3c-sdhci.0/by-name/system /system ext4 ro περιμένετε /dev/block/platform/s3c-sdhci.0/by-name/userdata /data ext4 noatime,nosuid ,nodev,nomblk_io_submit,errors=αναμονή πανικού,encryptable=/efs/userdata_footer
Όπως ίσως έχετε παρατηρήσει, /Σύστημα, /δεδομένα, /κρύπτη- πρόκειται απλώς για σημεία στερέωσης (σημεία προσάρτησης συστήματος αρχείων) που παραπέμπουν είτε στο MTD της συσκευής (στην περίπτωση ενός εξομοιωτή) είτε στις συσκευές μπλοκ (στην περίπτωση μιας πραγματικής συσκευής), όπου οι αντίστοιχες εικόνες δίσκου ( system.img, userdata.img και cache) γράφονται .img). Δεν είμαι σίγουρος, αλλά νομίζω ότι μέσα στο smartphone υπάρχει ένα ενιαίο τσιπ με μνήμη flash, χωρισμένο σε διαμερίσματα (τόμους), καθένα από τα οποία περιέχει μια αντίστοιχη εικόνα. Αυτό το τσιπ μνήμης flash είναι αυτό που γνωρίζουμε ως Εσωτερική αποθήκευση(εσωτερική μνήμη), η ένταση της οποίας είναι μία από τις κύριες παραμέτρους ενός smartphone.

πρέπει να σημειωθεί ότι /Σύστηματοποθετημένο μόνο για ανάγνωση. Αυτό σημαίνει ότι τα περιεχόμενα αυτής της ενότητας δεν αλλάζουν κατά τη λειτουργία της συσκευής, αλλά μόνο όταν, για παράδειγμα, ενημερώνετε το σύστημα στη συσκευή σας (χρησιμοποιώντας ενημερώσεις συστήματος).

Ας συνεχίσουμε να κοιτάμε τα δικά μας init.rc. Με έναυσμα μετά-fs-δεδομέναδιαμορφώνεται η βασική δομή του συστήματος αρχείων /δεδομέναΕνότητα. Εκεί, γενικά, όλα είναι ξεκάθαρα - ένα σύνολο mkdir, τσόουν, chmodεντολές

Περαιτέρω init.rcεκτοξεύει αρκετούς δαίμονες. Εάν επιστρέψετε στην εικόνα στην αρχή του άρθρου, αναφέρονται στο μπλοκ Native daemons. Θα σταματήσουμε εκεί προς το παρόν. Όπως ίσως έχετε παρατηρήσει από το σχήμα, δεν κάλυψα πλήρως τη διαδικασία φόρτωσης του λειτουργικού συστήματος. Θα εξετάσω μερικά ακάλυπτα βήματα στο επόμενο άρθρο.

συμπέρασμα

Στο επόμενο μέρος θα σας πω από πού προέρχονται οι εικόνες system.img, userdata.img και cache.img και θα εξετάσουμε την ασφάλεια σε επίπεδο εγγενούς χώρου χρήστη. Όπως πάντα, είναι ευπρόσδεκτες διορθώσεις, προσθήκες και προτάσεις για το τι να γράψουμε. Και παρόλο που έχω ήδη κάποιο σχέδιο για το τι να γράψω στο επόμενο άρθρο, είμαι έτοιμος να το προσαρμόσω.

Το Android είναι ένα σύνολο ανοιχτού λογισμικού για κινητές συσκευές από την Google, το οποίο περιλαμβάνει ένα λειτουργικό σύστημα και ένα σύνολο βασικών εφαρμογών πολλαπλών πλατφορμών.

Για να αναπτύξετε εφαρμογές για την πλατφόρμα Android, θα χρειαστείτε ένα σύνολο εργαλείων και βιβλιοθήκες API - Android SDK, την πιο πρόσφατη έκδοση του οποίου μπορείτε να βρείτε.

Το παρακάτω σχήμα δείχνει την αρχιτεκτονική του λειτουργικού συστήματος Android.


Επίπεδο εφαρμογών

Το Android περιλαμβάνει ένα σύνολο βασικών εφαρμογών: προγράμματα-πελάτες email και SMS, ένα ημερολόγιο, διάφορους χάρτες, ένα πρόγραμμα περιήγησης, ένα πρόγραμμα για τη διαχείριση επαφών και πολλά άλλα. Όλες οι εφαρμογές που εκτελούνται στην πλατφόρμα Android είναι γραμμένες σε Java.

Επίπεδο πλαισίου εφαρμογής

Το Android σάς επιτρέπει να αξιοποιήσετε πλήρως την ισχύ των API που χρησιμοποιούνται σε βασικές εφαρμογές. Η αρχιτεκτονική είναι χτισμένη με τέτοιο τρόπο ώστε κάθε εφαρμογή να μπορεί να χρησιμοποιεί τις ήδη υλοποιημένες δυνατότητες μιας άλλης εφαρμογής, με την προϋπόθεση ότι η τελευταία ανοίγει πρόσβαση για χρήση της λειτουργικότητάς της. Έτσι, η αρχιτεκτονική εφαρμόζει την αρχή της επαναχρησιμοποίησης των στοιχείων και των εφαρμογών του ΛΣ.

Η βάση όλων των εφαρμογών είναι ένα σύνολο συστημάτων και υπηρεσιών:
1. Σύστημα αντιπροσώπευσης ( Προβολή συστήματος) είναι ένα πλούσιο σύνολο προβολών με επεκτάσιμη λειτουργικότητα που χρησιμεύει για τη δημιουργία της εμφάνισης εφαρμογών, συμπεριλαμβανομένων στοιχείων όπως λίστες, πίνακες, πεδία εισαγωγής, κουμπιά κ.λπ.
2. πάροχοι περιεχομένου ( Παρόχους Περιεχομένου) είναι υπηρεσίες που επιτρέπουν στις εφαρμογές να έχουν πρόσβαση σε δεδομένα από άλλες εφαρμογές, καθώς και να μοιράζονται τα δικά τους δεδομένα.
3. Διαχειριστής πόρων ( Υπεύθυνος Πόρων) προορίζεται για πρόσβαση σε συμβολοσειρές, γραφικά και άλλους τύπους πόρων.
4. Διαχειριστής ειδοποιήσεων ( Διαχειριστής ειδοποιήσεων) επιτρέπει σε οποιαδήποτε εφαρμογή να εμφανίζει προσαρμοσμένες ειδοποιήσεις στη γραμμή κατάστασης.
5. Action Manager ( Υπεύθυνος δραστηριότητας) διαχειρίζεται τον κύκλο ζωής των εφαρμογών και παρέχει ένα σύστημα πλοήγησης για το ιστορικό της εργασίας με ενέργειες.

Επίπεδο βιβλιοθηκών

Η πλατφόρμα Android περιλαμβάνει ένα σύνολο βιβλιοθηκών C/C++ που χρησιμοποιούνται από διάφορα στοιχεία του λειτουργικού συστήματος. Για τους προγραμματιστές, η πρόσβαση στις λειτουργίες αυτών των βιβλιοθηκών πραγματοποιείται μέσω της χρήσης του Application Framework. Παρακάτω είναι μερικά από αυτά:
1. Βιβλιοθήκη System C- Μια εφαρμογή BSD της τυπικής βιβλιοθήκης συστήματος C (libc) για ενσωματωμένες συσκευές που βασίζονται σε Linux.
2. Βιβλιοθήκες μέσων– βιβλιοθήκες που βασίζονται στο OpenCORE του PacketVideo, σχεδιασμένες να υποστηρίζουν την αναπαραγωγή και την εγγραφή δημοφιλών μορφών ήχου και βίντεο (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, κ.λπ.).
3. Surface Manager– ο διαχειριστής επιφάνειας ελέγχει την πρόσβαση στο υποσύστημα εμφάνισης των επιπέδων γραφικών 2D και 3D.
4. LibWebCore– μια σύγχρονη μηχανή προγράμματος περιήγησης ιστού που παρέχει όλη τη δύναμη του ενσωματωμένου προγράμματος περιήγησης Android.
5. SGL– μηχανή για εργασία με γραφικά 2D.
6. τρισδιάστατες βιβλιοθήκες– μηχανή για εργασία με τρισδιάστατα γραφικά, βασισμένη στο OpenGL ES 1.0 API.
7. FreeType– μια βιβλιοθήκη σχεδιασμένη να λειτουργεί με γραμματοσειρές.
8. SQLite– ένας ισχυρός ελαφρύς κινητήρας για εργασία με σχεσιακές βάσεις δεδομένων.

Επίπεδο χρόνου εκτέλεσης (Android Runtime)

Το Android περιλαμβάνει ένα σύνολο βασικών βιβλιοθηκών που παρέχουν μεγάλο μέρος της λειτουργικότητας των βασικών βιβλιοθηκών γλωσσών Java.

Η πλατφόρμα χρησιμοποιεί μια βελτιστοποιημένη εικονική μηχανή Dalvik προσανατολισμένη σε καταχωρήσεις, σε αντίθεση με την τυπική εικονική μηχανή Java, η οποία είναι προσανατολισμένη στη στοίβα. Κάθε εφαρμογή εκτελείται στη δική της διαδικασία, με τη δική της παρουσία εικονικής μηχανής. Το Dalvik χρησιμοποιεί τη μορφή Dalvik Executable (*.dex), η οποία είναι βελτιστοποιημένη για ελάχιστη χρήση μνήμης εφαρμογών. Αυτό διασφαλίζεται από βασικά χαρακτηριστικά του πυρήνα του Linux όπως το threading και η διαχείριση μνήμης χαμηλού επιπέδου. Ο bytecode Java στον οποίο είναι γραμμένες οι εφαρμογές σας μεταγλωττίζεται σε μορφή dex χρησιμοποιώντας το βοηθητικό πρόγραμμα dx που περιλαμβάνεται στο SDK.

Επίπεδο πυρήνα Linux

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

Νέο στο site

>

Δημοφιλέστερος