Android fragmentation: Όταν το καλύτερό σου προσόν, παρουσιάζεται ως μειονέκτημα!
"Haters gonna hate", τουτέστιν "Αυτοί που σε μισούν, θα συνεχίσουν να σε μισούν". Δε γίνεται να αρχίσει κάπως αλλιώς αυτό το άρθρο απλά και μόνο γιατί το fragmentation είναι η τελευταία δικαιολογία, το τελευταίο προπύργιο του ανταγωνισμού που βλέπει τα ποσοστά του να πέφτουν, έναντι του Android. Είναι η μεγαλύτερη ευλογία, το σήμα κατατεθέν του ανοιχτού λογισμικού και όμως παρουσιάζεται ως μειονέκτημα!!!
Έχουν ξοδευτεί άπειρες ιντερνετικές σελίδες για να αναλύσουν αυτό το φαινόμενο, άλλες με δόλο και άλλες με τη ματιά του απλού αρθρογράφου αλλά πουθενά δεν κατάφερα να διαβάσω μια γνώμη με την οποία να συμφωνώ. Μήπως εγώ σκέφτομαι λάθος; Ίσως! Θεωρώ όμως οτι το fragmentation είναι αυτό που έδωσε τη δυνατότητα στο Android να γίνει η νούμερο ένα mobile πλατφόρμα στον κόσμο.
Τι είναι το fragmentation;
Όταν λέμε οτι το Android είναι fragmented (στα ελληνικά: κατακερματισμένο), εννοούμε οτι είναι σπασμένο σε κομμάτια. Τα κομμάτια αυτά μπορεί να είναι ένα από τα παρακάτω ανάλογα με την ιδιότητά μας και τη σκοπιά από την οποία το βλέπουμε:
- Για τον απλό παρατηρητή είναι οι διάφορες εκδόσεις του Android ή ο αριθμός των συσκευών που κυκλοφορούν,
- για τους developer είναι τα API level ή οι διαφορετικές αναλύσεις οθονών
- και για το σκοπό αυτού του άρθρου, όλα τα παραπάνω.
Από όποια σκοπιά και αν το δει κανείς, το Android είναι σπασμένο σε κομμάτια λοιπόν. Γιατί όμως αυτό αντιμετωπίζεται ως πρόβλημα και όχι ως πλεονέκτημα; Πρόσφατη έρευνα του OpenSignalMaps, η οποία διεξήχθη σε χρονική περίοδο έξι μηνών, έδειξε με συγκεκριμένα νούμερα πόσο κατακερματισμένο είναι το Android σε όλους τους παραπάνω τομείς. Θα δούμε λοιπόν παρακάτω όλα τα στοιχεία και θα τα αναλύσουμε με τη ματιά του ενδιαφερόμενου κάθε φορά (developer, καταναλωτή κλπ.).
Ο developer
Αυτό που ενδιαφέρει τον άνθρωπο που θα κατασκευάσει μια εφαρμογή ή ένα παιχνίδι είναι οτι θέλει να παίζει στο σύνολο των Android συσκευών. Ο χρόνος που ξόδεψε για το φτιάξει είναι χρήμα και αν είναι επαγγελματίας τότε ζει την οικογένειά του από αυτό, οπότε δε θα ήθελε να αποτύχει. Θέλει επίσης αυτό που έφτιαξε να είναι ποιοτικό και να αφήσει τον τελικό χρήστη ευχαριστημένο, ειδάλλως δε θα τον ξαναπροτιμήσει. Αντιμετωπίζει λοιπόν δύο προβλήματα: Την ανάλυση οθόνης και το API level στο οποίο θα κατασκευάσει την εφαρμογή.
- Ανάλυση οθόνης
Σίγουρα θα έχετε εγκαταστήσει παιχνίδια ή εφαρμογές που δεν εκμεταλλευόντουσαν όλη την οθόνη ή ήταν μεγαλύτερα από αυτή. Η έρευνα έδειξε οτι στο Android υπάρχουν πολλές και διαφορετικές αναλογίες οθόνης (κάθε κουκκίδα αναπαριστά και μία ανάλυση, στο σχήμα), όμως αν προσέξετε οι περισσότερες τείνουν σε μία ευθεία γραμμή. Όσες είναι πάνω στην ευθεία έχουν αναλογία οθόνης 5:3, οπότε αρκεί να κατασκευάσουμε την εφαρμογή μας για μία από αυτές και θα παίζει σε όλες! Με τον ίδιο τρόπο θα βρούμε και άλλες παρόμοιες αναλύσεις και να κλείσουμε ακόμα περισσότερο την ψαλίδα, συνήθως όμως, οι συσκευές με τις μεγαλύτερες πωλήσεις έχουν και παρόμοια αναλογία οθόνης. Επίσης, έχουμε πάντα τη δυνατότητα να κατασκευάσουμε την εφαρμογή μας, δίνοντας το δικαίωμα να απλωθεί σε όλο το μήκος και σε όλο το πλάτος της συσκευής που θα την εγκαταστήσουμε, άρα λειτουργεί σε όλες!
Η πλειονότητα των Android συσκευών κινείται μέσα σε 13 αναλύσεις οθονών οι οποίες έχουν τρεις διαφορετικές αναλογίες. Ο developer, μπορεί λοιπόν με τρεις εκδόσεις της ίδιας εφαρμογής, να καλύψει όλες τις συσκευές. Στο iOS έχουμε τέσσερις αναλύσεις οι οποίες όμως έχουν δύο αναλογίες οθόνης. Θα χρειαστεί λοιπόν δύο εκδόσεις για εκεί, συν μία για την "εκπληκτική" Retina οθόνη του νέου iPad! Άρα τρεις εκδόσεις στο Android και τρεις στο iOS.
- API level
Το API είναι η πλατφόρμα σχεδιασμού εφαρμογών πάνω σε μία συγκεκριμένη τεχνολογία. Για να γίνω κατανοητός, αν θέλουμε να φτιάξουμε μία εφαρμογή η οποία θα εκμεταλλεύεται την τεχνολογία του Google Maps, θα πρέπει να χρησιμοποιήσουμε το API του Google Maps. Τα πάντα γύρω μας διαθέτουν API και το Android δεν είναι εξαίρεση όμως κάθε έκδοση έχει και τους δικούς της κανόνες άρα και το δικό της API. Το πιο συνηθισμένο είναι αυτό της έκδοσης 2.2 και αυτό γιατί σε αυτή την έκδοση έγιναν οι μεγαλύτερες αλλαγές (μέχρι την έλευση του Android 4). Αν λοιπόν κατασκευάσετε την εφαρμογή σας με βάση του API του 2.2 θα μπορεί να τρέξει σε όλες τις συσκευές από 2.2 και άνω, άρα θα χάσετε μόνο το 9% της αγοράς (Android 2.1, 1.6, 1.5). Αν η εφαρμογή σας δε θέλετε να μεταφέρεται στην κάρτα SD (που είναι η μεγάλη αλλαγή του Android 2.2), μπορείτε να την κατασκευάσετε με βάση του API του 2.1 και θα χάσετε μόνο το 2.4% της αγοράς (Android 1.5, 1.6)!
- Συμπέρασμα
Βλέπουμε λοιπόν οτι είναι στο χέρι του developer αν θα κοπιάσει ή όχι για να φτιάξει την εφαρμογή του στο Android, τον ίδιο κόπο όμως θα καταβάλει και στο iOS (που υποτίθεται οτι δεν έχει πρόβλημα κατακερματισμού). Συμφωνούμε οτι οι συσκευές έχουν πολλές διαφορετικές αναλύσεις όμως ακόμα και στο iOS που οι συσκευές είναι μόνο οκτώ, χρειάζεται η ίδια δουλειά για να μπορέσει να πετύχει την απόλυτη ποιότητα.
Όσον αφορά το API, αποδείξαμε οτι δεν αποτελεί πρόβλημα. Πόσες συσκευές είδατε τελευταία να έχουν Android 1.6 ή 2.1 και από αυτές πόσες δεν αναβαθμίζονται σε Android 2.3 μέσω μίας custom ROM όπως η Cyanogen; Η ψαλίδα κλείνει ερμητικά!
Πού οφείλεται λοιπόν το fragmentation; Μα φυσικά στο ότι το Android είναι ανοιχτού κώδικα! Αυτό σημαίνει οτι μπορεί να το βρει όποιος θέλει, δωρεάν και να χτίσει πάνω σε οποιαδήποτε έκδοσή του, το δικό του λειτουργικό σύστημα. Με αυτό τον τρόπο μπήκε σε κινητά, ταμπλέτες, υπολογιστές, αυτοκίνητα, ψυγεία κ.ο.κ. Όλα τα Linux λειτουργικά συστήματα είναι κατακερματισμένα με αυτό τον τρόπο, αφού ο καθένας μπορεί να εγκαταστήσει όποια έκδοσή θέλει, σε οποιαδήποτε συσκευή αλλά και να φτιάξει τη δική του εκδοχή του λειτουργικού συστήματος, με βάση αυτές. Ο πόλεμος λοιπόν κατά του Android είναι στην πραγματικότητα πόλεμος ενάντια στο ανοιχτό και ελεύθερο λογισμικό, κάτι που καλείται να προστατεύσει η κοινότητα του Linux και γενικότερα του Open Source.
Το fragmentation δεν έχει καμία σημασία για τον απλό χρήστη ο οποίος επιλέγει συνειδητά την καλύτερη δυνατή συσκευή σε σχέση με τα χρήματα που διαθέτει (αν αγοράζετε κινέζικα από το ebay, τότε θα έχετε πρόβλημα). Το ίδιο ισχύει και για τον developer ο οποίος δεν πιστεύω οτι απευθύνεται σε αυτού του είδους τις συσκευές.
Μπορείτε να βρείτε περισσότερες πληροφορίες και πιο επεξηγηματικές εικόνες στο αντίστοιχο άρθρο του OpenSignalMaps.
Ο καταναλωτής
Αυτό που ενδιαφέρει τον καταναλωτή είναι να έχει πολλές επιλογές, χαμηλές τιμές και καλή ποιότητα κατασκευής. Το Android όμως μπορεί να προσφέρει πολλά παραπάνω από αυτά:
- Σου προσφέρει τη δυνατότητα να το αλλάξεις εντελώς με έναν launcher ή μία custom ROM. Με αυτό τον τρόπο το ανανεώνεις συνεχώς και δεν το βαριέσαι ποτέ.
- Σου επιτρέπει να φτιάξεις εύκολα δικές σου εφαρμογές, δωρεάν.
- Σου μαθαίνει τεχνολογία. Πόσοι από εμάς ήξεραν τι είναι η recovery, ο bootloader κλπ.;
- Σου μαθαίνει το Linux. Το Android είναι Linux και οι βασικές αρχές μεταξύ των δύο είναι ίδιες.
Για να μην αναφέρουμε και την τεράστια βάση δεδομένων στο ίντερνετ με τους άπειρους χρήστες οι οποίοι είναι πρόθυμοι να σε βοηθήσουν να φτιάξεις ακόμα και τη δική σου ROM! Πάμε όμως στο θέμα μας.
- Συσκευές & τιμές
Το fragmentation ξεκινάει από τις συσκευές και όπως έδειξε η έρευνα, σε περίοδο έξι μηνών καταγράφηκαν 3.997! Όπως βλέπετε και στην εικόνα παραπάνω η πιο συνηθισμένη συσκευή είναι το GT-I9100, το γνωστό Samsung Galaxy SII. Αν λοιπόν η πληθώρα επιλογών είναι κατακερματισμός, τότε δόξα τω Θεώ που υπάρχει! Φανταστείτε να υπήρχαν μόνο οκτώ συσκευές να επιλέξεις και όλες να έχουν συγκεκριμένη τιμή άνω των 500€ (δε λέμε ονόματα). Θα τις αγοράζατε με ένα σκασμό λεφτά και μετά θα γελούσατε με το διπλανό σας που επέλεξε ανάμεσα σε περίπου 4.000 μοντέλα λέγοντάς του για fragmentation; Δε νομίζω.
Οι πολλές συσκευές δίνουν φοβερό πλεονέκτημα επιλογής. Μπορείτε να τις βρείτε από 80€ έως 800€, με οθόνη από 1.5" έως και 10.1", σε ότι σχήμα και χρώμα θέλετε, με πενάκι ή χωρίς. Το Android μπορεί πραγματικά να καλύψει όλα τα γούστα και όλες τις απαιτήσεις, για παράδειγμα ακόμα και ο παππούς με τα προβλήματα όρασης μπορεί να χειριστεί Android συσκευή.
Φυσικά όταν υπάρχει τέτοια μεγάλη γκάμα συσκευών φυσιολογικό είναι να αλλάζουν και τα χαρακτηριστικά, όπως και η έκδοση του Android, η οποία δεν μπορεί να είναι η ίδια σε όλες καθώς κάθε επόμενη είναι και βαρύτερη. Το ίδιο δε συμβαίνει όμως και στις iOS συσκευές; Για παράδειγμα το δικό μου iPhone 3GS όταν αναβαθμίστηκε σε iOS 5 έγινε χειρότερο από το αξιοπρεπέστατο HTC Wildfire με Android 2.3.7!
Φυσικά όταν υπάρχει τέτοια μεγάλη γκάμα συσκευών φυσιολογικό είναι να αλλάζουν και τα χαρακτηριστικά, όπως και η έκδοση του Android, η οποία δεν μπορεί να είναι η ίδια σε όλες καθώς κάθε επόμενη είναι και βαρύτερη. Το ίδιο δε συμβαίνει όμως και στις iOS συσκευές; Για παράδειγμα το δικό μου iPhone 3GS όταν αναβαθμίστηκε σε iOS 5 έγινε χειρότερο από το αξιοπρεπέστατο HTC Wildfire με Android 2.3.7!
- Συμπέρασμα
Πού οφείλεται λοιπόν το fragmentation; Μα φυσικά στο ότι το Android είναι ανοιχτού κώδικα! Αυτό σημαίνει οτι μπορεί να το βρει όποιος θέλει, δωρεάν και να χτίσει πάνω σε οποιαδήποτε έκδοσή του, το δικό του λειτουργικό σύστημα. Με αυτό τον τρόπο μπήκε σε κινητά, ταμπλέτες, υπολογιστές, αυτοκίνητα, ψυγεία κ.ο.κ. Όλα τα Linux λειτουργικά συστήματα είναι κατακερματισμένα με αυτό τον τρόπο, αφού ο καθένας μπορεί να εγκαταστήσει όποια έκδοσή θέλει, σε οποιαδήποτε συσκευή αλλά και να φτιάξει τη δική του εκδοχή του λειτουργικού συστήματος, με βάση αυτές. Ο πόλεμος λοιπόν κατά του Android είναι στην πραγματικότητα πόλεμος ενάντια στο ανοιχτό και ελεύθερο λογισμικό, κάτι που καλείται να προστατεύσει η κοινότητα του Linux και γενικότερα του Open Source.
Το fragmentation δεν έχει καμία σημασία για τον απλό χρήστη ο οποίος επιλέγει συνειδητά την καλύτερη δυνατή συσκευή σε σχέση με τα χρήματα που διαθέτει (αν αγοράζετε κινέζικα από το ebay, τότε θα έχετε πρόβλημα). Το ίδιο ισχύει και για τον developer ο οποίος δεν πιστεύω οτι απευθύνεται σε αυτού του είδους τις συσκευές.
Μπορείτε να βρείτε περισσότερες πληροφορίες και πιο επεξηγηματικές εικόνες στο αντίστοιχο άρθρο του OpenSignalMaps.
Επίσης ένα ενδιαφέρον point που έχω συναντήσει:
ΑπάντησηΔιαγραφήΠοτέ δεν έχω ακούσει κανέναν developer να παραπονιέται για το fragmentation, παρά μόνο χρήστες. Προσωπικά ως dev δεν με δυσκολεύει σε κάτι να χρησιμοποιώ Relative Layout (αντί για Absolute), καθώς και scalable τεχνολογίες (π.χ. jquery mobile) στις εφαρμογές μου, και μέχρι τώρα τουλάχιστον δεν έχω δει παράπονα ασυμβατότητας στο market!
Συγχαρητήρια για το site σου btw, καιρό το παρακολουθώ, πρώτη φορά ποστάρω.
Θα συμφωνήσω. Ότι έχω κάνει κοιτάω να είναι scalable και λειτουργεί παντού. Η αλήθεια είναι οτι στα παιχνίδια αυτό δε γίνεται γιατί αν τεντώσουν τα background, χαλάνε.
ΔιαγραφήΕυχαριστώ επίσης για τα καλά σου λόγια. Αν έχεις ένα θέμα να προτείνεις, μετά χαράς να το αναλύσουμε.
Μία μικρή παρατήρηση θα μου επιτρέψεις φίλε μου, αν δεν κάνω λάθος:
ΑπάντησηΔιαγραφή"Αν η εφαρμογή σας δε θέλετε να μεταφέρεται στην κάρτα SD (που είναι η μεγάλη αλλαγή του Android 2.2), μπορείτε να την κατασκευάσετε με βάση του API του 2.1 και θα χάσετε μόνο το 2.4% της αγοράς (Android 1.5, 1.6)"
Μπορώ να ορίσω το target SDK σε 2.2 (ή και ανώτερο) και μετά στο manifest να ορίσω uses-sdk android:minSdkVersion="4"
Έτσι στην ουσία θα λειτουργεί η μεταφορά στην κάρτα μνήμης σε android 2.2 και άνω, και θα παίζει και σε android 1.6 - 2.1, και έτσι δεν χάνω στην ουσία μερίδιο αγοράς.
Δεν το ήξερα! Πολύ σωστός!
ΔιαγραφήΤο fragmentation μάλλον αφορά καταστάσεις, όπως το aliyun...
ΑπάντησηΔιαγραφή