BETA

Μαθαίνοντας το Android- AndroidManifest.xml is all about [Μαθήματα 4, 5 & 6]

Εικόνα Michail

android_super_logo

Συνέχεια μαθημάτων για το Android και σήμερα μιλάμε για What AndroidManifest.xml is all about (Part 1) & What AndroidManifest.xml is all about (Part 2)

Lesson 4 – What AndroidManifest.xml is all about (Part 1)

android_super_logo

Στο σημερινό μάθημα θα εξηγήσουμε την δομή ενός απλού προγράμματος Android. Εάν δεν γνωρίζετε πώς να δημιουργήσετε ένα απλό Android project αναφερθείτε στα 3 προηγούμενα μαθήματα. Όπως έχουμε ήδη αναφέρει, οι Android εφαρμογές χρησιμοποιούν XML εντολές, κατά μεγάλο ποσοστό, για να απλοποιηθεί η δημιουργία της εφαρμογής. Ας ξεκινήσουμε όμως την ανάλυση μας για να μπορέσουμε να γίνουμε πιο συγκεκριμένοι. Στην πιο κάτω εικόνα βλέπετε την δομή ενός Android project και το απλό output που θα εμφανιστεί στην οθόνη μας όταν τρέξουμε την εφαρμογή.

pic_1pic_2

Εάν παρατηρήσουμε το project μας θα δούμε την ύπαρξη ενός αρχείου με το όνομα AndroidManifest.xml. Αυτό είναι το ένα και μοναδικό αρχείο που χρειάζεται κάθε Android εφαρμογή για να ξεκινήσει. Από την κατάληξη καταλαβαίνουμε ότι κάθε εντολή που περιέχει είναι γραμμένη σε XML μορφή. Πριν δούμε όμως την εσωτερική δομή του αρχείου ας μιλήσουμε λίγο για την λειτουργία του AndroidManifest.xml.

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

Ονομάζει και αναγνωρίζει τα java πακέτα τις εφαρμογής μέσα στα οποία βρίσκονται οι java κλάσεις.
Περιγράφει όλα τα στοιχεία από τα οποία αποτελείται μια εφαρμογή συμπεριλαμβανομένων και των ακόλουθων στοιχείων – activities, services, broadcast receivers και content providers (Μην ανησυχείτε αν δεν είσαστε εξοικειωμένοι ακόμα με αυτές τις ορολογίες).
Προσδιορίζει τα processes που θα χρειαστούν να υποστηρίξουν την εφαρμογή.
Προσδιορίζει τα δικαιώματα τα οποία πρέπει να έχει η τρέχον εφαρμογή για να μπορεί να αλληλοεπιδρά με άλλες εφαρμογές.
Ορίζει τα δικαιώματα που άλλες εφαρμογές πρέπει να έχουν για να χρησιμοποιήσουν την εφαρμογή μας.
Δηλώνει το ελάχιστο επίπεδο του Android API που απαιτεί η εφαρμογή.
Παραθέτει τις βιβλιοθήκες που χρειάζεται η εφαρμογή για να τρέξει.
Και τέλος καλεί και χρησιμοποιεί τις Instrumentation κλάσεις που παρέχουν πληροφορίες για την εκτέλεση και λειτουργία της εφαρμογής.

Κάνοντας διπλό κλικ επάνω στο αρχείο AndroidManifest.xml μπορούμε να δούμε το περιεχόμενο του.

pic_31

Από όλα αυτά τα elements που βλέπεται, δύο είναι αυτά που απαιτούνται – το manifest και το application. Αυτά τα δύο elements πρέπει πάντα να υπάρχουν και να εμφανίζονται μόνο μια φορά μέσα στο αρχείο. Οτιδήποτε άλλο element μπορεί να είναι γραμμένο περισσότερο από μια φορά ή και καθόλου. Στο σημερινό μάθημα θα αναφερθούμε στο element manifest.

Η γενική μορφή που μπορεί να έχει ένα element manifest είναι η εξής:

pic_4

Και στο δικό μας παράδειγμα έχει την ακόλουθη μορφή:

pic_5

Τι είναι λοιπόν το manifest? Είναι το root element του αρχείου AndroidManifest.xml και πρέπει να περιέχει ένα application element. Ορίζει δύο attributes: το xmlns:android και το package.

xmlns:android

Ορίζει το Android namespace και πρέπει πάντα να δείχνει στο «http://schemas.android.com/apk/res/android”.

package:

Είναι το java πακέτο μέσα στο οποίο βρίσκεται η εκτελέσιμη java κλάση της εφαρμογής μας.

pic_6

android:versionCode

Αυτός είναι ένας εσωτερικός αριθμός που δείχνει την σε ποια έκδοση της εφαρμογής βρισκόμαστε. Το android:versionCode δεν εμφανίζεται στους χρήστες. Όσο μεγαλύτερος είναι ο αριθμός τόσο πιο πρόσφατη είναι η έκδοση της εφαρμογής. Ο αριθμός πρέπει να είναι ακέραιος, όπως π.χ. 4.

android:versionName

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

Για να αλλάξετε την τιμή του android:versionCode όπως και εκείνη του android:versionName δεν έχετε παρά να αλλάξετε τον αριθμό απευθείας στο xml αρχείο ή πολύ πιο απλά πατήστε στο tab με το όνομα manifest και έχετε ένα παραθυρικό περιβάλλον διαχείρισης αυτών των μεταβλητών.

pic_7

ch1

Lesson 5 – What AndroidManifest.xml is all about (Part 2)

Στο σημερινό Android μάθημα, θα συνεχίσουμε την αναφορά μας στο AndroidManifest αρχείο. Ήδη στο προηγούμενο μάθημα (βλέπε Lesson 4) μιλήσαμε αρκετά για την αξία του αρχείου AndroidManifest σε μια Android εφαρμογή. Στο σημερινό μάθημα θα αναλύσουμε τα υπόλοιπα XML elements από τα οποία αποτελείται.

Όπως φαίνεται από την πιο κάτω εικόνα, σε ένα project με default επιλογές, το δεύτερο xml element που θα συναντήσουμε στο AndroidManifest αρχείο είναι το uses-sdk.

pic_11

Το γενικό συντακτικό του uses-sdk είναι το εξής:

pic_21

Ο ρόλος του uses-sdk είναι να τηρεί την συμβατότητα της εφαρμογής της οποίας αναπτύσσουμε με μία ή περισσότερες εκδόσεις της πλατφόρμας του Android μέσω του αριθμού API. Εδώ θέλει λίγη ακόμα επεξήγηση ο ορισμός. Παρά το όνομα του, αυτό το στοιχείο χρησιμοποιείται για να καθορίσει το επίπεδο API και όχι τον αριθμό έκδοσης του SDK (software development kit). Στο παράδειγμα μας, ο αριθμός του API είναι 8 που σημαίνει ότι είμαστε συμβατοί τουλάχιστον με συσκευές Android με λειτουργικό έκδοσης 2.2 ή υψηλότερο.

android:minSdkVersion

Είναι ο ακέραιος αριθμός που ορίζει το ελάχιστο επίπεδο API που απαιτείται για να τρέξει η εφαρμογή. Το λειτουργικό Android θα απαγορέψει το χρήστη να εγκαταστήσει οποιαδήποτε εφαρμογή αν το επίπεδο του API του συστήματος είναι χαμηλότερο από την τιμή που καθορίζεται στην android:minSdkVersion παράμετρο.

android:targetSdkVersion

Ορίζει το επίπεδο API στο οποίο στοχεύει η εφαρμογή. Εάν δεν έχει οριστεί τότε η τιμή του είναι ίδια με εκείνη του minSdkVersion.

Το επόμενο xml element του AndroidManifest αρχείου είναι το application. Η γενική σύνταξη του ορίζεται ως εξής:

pic_32

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

pic_41

android:allowBackup

Η τιμή “True” επιτρέπει στον χρήστη της εφαρμογής να κάνει backup την ίδια την εφαρμογή για να μπορέσει να την ανακτήσει ξανά.

android:icon

Εδώ ορίζεται το path του φάκελου από τον οποίο θα προέλθει το εικονίδιο της εφαρμογής. Εάν δεν ορίσουμε εμείς κάποιο εικονίδιο τότε η εφαρμογή θα βάλει το δικό της default που είναι το εικονίδιο του Android. Το εικονίδιο με το οποίο παρουσιάζεται η εφαρμογή όταν είναι εγκαταστημένη προέρχεται από ένα φάκελο το ο όνομα drawable. Για την εξυπηρέτηση όμως όλων των κινητών με διαφορετικά μεγέθη οθόνης, δημιουργούμε πολλαπλούς drawable φακέλους έτσι ώστε μέσα σε κάθε φάκελο έχουμε και το αντίστοιχο μέγεθος σε pixel του εικονιδίου. Οι φάκελοι drawable βρίσκονται μέσα στο φάκελο res. Για αυτούς τους φακέλους θα μιλήσουμε σε μελλοντικό μάθημα.

pic_51

android:label

Εδώ ορίζεται το όνομα με το οποίο θα εμφανίζεται η εφαρμογή. Το όνομα προέρχεται από το strings.xml αρχείο που βρίσκεται μέσα στο φάκελο values. Και για αυτό το αρχείο θα μιλήσουμε σε μελλοντικό Android μάθημα. Απλά συνεχίστε να διαβάζετε τα Android μαθήματα και μικρό χρονικό διάστημα θα έχουν λυθεί όλες σας οι απορίες. Στην πιο κάτω εικόνα βλέπουμε ότι το Androidmanifest αρχείο διαβάζει την μεταβλητή string με το όνομα app_name που ισούται με το όνομα της εφαρμογής που είναι kassapoglouApp.

pic_61

android:theme

Αναφέρεται στο default theme της εφαρμογής το οποίο προέρχεται από το αρχείο styles.xml από τον φάκελο values όπως δείχνει και η πιο κάτω εικόνα.

pic_71

Lesson 6 – What AndroidManifest.xml is all about (Part 3)

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

Το επόμενο element που έχουμε να αναλύσουμε είναι το activity. Η γενική σύνταξη της εντολής είναι αρκετά μεγάλη.

pic_12

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

Το activity ορίζει το που υπάρχει η java activity κλάση ή οποία είναι υπεύθυνη για την λειτουργία της εφαρμογής και για την δημιουργία του visual interface που θα εμφανιστεί στην οθόνη της συσκευής. Με άλλα λόγια, το AndroidManifest είναι το αρχείο στο οποίο κοιτάει αρχικά η Android πλατφόρμα για να μπορέσει να βρει την activity κλάση που περιέχει το java πρόγραμμα εκκίνησης της εφαρμογής και να εμφανιστεί στην οθόνη μας. Οπότε τώρα έχει κάποια λογική το γεγονός ότι χρειάζονται οπωσδήποτε δύο παράμετροι να οριστούν μέσα στο activity– το android:name και το android:label.

android:name

Αυτό είναι το όνομα της κλάσης μέσα στην οποία υλοποιείται το activity. Το όνομα πρέπει να είναι σε fully qualified class μορφή δίνοντας ακριβώς την τοποθεσία της κλάσης. Στο δικό μας παράδειγμα, αναφέρεται το όνομα kassapoglouapp.example.KassapoglouTest. Στην πιο κάτω εικόνα σας δείχνω την activity κλάση την οποία προσπαθεί να καλέσει το AndroidManifest αρχείο. Για την activity κλάση θα μιλήσουμε σε μελλοντικά μαθήματα Android.

pic_33

android:label

Είναι το όνομα με το οποίο θα παρουσιάζεται στην οθόνη η εφαρμογή. Σας θυμίζω ότι εξ ορισμού ότι είναι μεταβλητή String ορίζεται από το Strings.xml αρχείο του φακέλου values.

pic_42

Φτάσαμε λοιπόν στο τελευταίο element με το όνομα intent-filter. Μέσα σε αυτό ορίζουμε όλες τις πράξεις στις οποίες ανταποκρίνεται η εφαρμογή μας. Με άλλα λόγια ορίζουμε τι μπορεί να κάνει η εφαρμογή φιλτράροντας και αφήνοντας έξω εκείνες τις πράξεις στις οποίες δεν έχουν σημασία. Βασικά κατά κάποιο τρόπο το intent filter διαφημίζει τι είδους πράξεις μπορεί να εκτελέσει. Μέσα στο element intent-filter πρέπει οπωσδήποτε να περιέχεται και το element action. Το element category είναι προαιρετικό.

action

Όπως καταλαβαίνουμε από το ίδιο το όνομα, το action προσθέτει ένα action στο intent filter και κατά συνέπεια στην ίδια την Android εφαρμογή.

android:name

Ορίζουμε το όνομα της πράξης. Ο τρόπος με τον οποίο γίνεται αυτό είναι να ορίσουμε την πράξη μετά από την λέξη ACTION_ , για παράδειγμα ACTION_MAIN. Ο ορισμός της συγκεκριμένης πράξης σημαίνει ότι η κλάση ορίζεται σαν αρχικό σημείο έναρξης της εφαρμογής και δεν περιμένει να λάβει καμία πληροφορία η data. Αυτό σημαίνει ότι το android.intent.action.MAIN δεν δέχεται input και δεν στέλνει output.

 category

Προσθέτει μια κατηγορία στο intent filter.

android:name

Το activity θα είναι το πρώτο activity που θα τρέξει και ορίζεται σαν top-level στο application launcher. Σημαίνει ότι θα είναι το πρώτο activity που θα τρέχει κάθε φορά που ξεκινάει η εφαρμογή.

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

>>>Δείτε όλη την σειρά των μαθημάτων Android.

Μιχάλης Κασάπογλου(http://kassapoglou.com)

  • Σχόλια

0 Comments:

Scroll to Top