Android SDK

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

Το λειτουργικό της Google, κακά τα ψέμματα, είναι αρκετά ενδιαφέρον. Μπορεί να στηρίζουμε iOS με τα κόκκαλα, αλλά πρέπει να ομολογήσω ότι το ρομποτάκι είναι αρκετά φιλόδοξη προσπάθεια. Το λειτουργικό έχει μερικές έξυπνες ιδέες (hotspot creation στην 2.2, έξυπνο notification system, διάφορα ωραία κολπάκια εδώ κι εκεί), αλλά υστερεί σε αρκετούς τομείς υποδομής. Όλο το interface είναι συμπαθητικό, αλλά… χάνει κάπως. Είναι σα να συγκρίνεις το Aqua με τα βασικά θέματα των window managers του Linux: απόλυτα λειτουργικοί αλλά χοντροκομμένοι, αραφινάριστοι. Και αυτό φαίνεται παντού, στο σκρολάρισμα των οθονών, στις φόρμες, στα popups, παντού. Ένας tech-minded χρήστης ίσως να μη δώσει ιδιαίτερη προσοχή, ένας μέσος άνθρωπος όμως θα νιώσει τη διαφορά σε σχέση με τη ρευστότητα και τη στίλβη του iPhone και του λειτουργικού του.

Still, πολύ καλή και αρκετά χρηστική προσπάθεια. Δεν είναι χάλι μαύρο όπως ήταν τα Windows Mobile (θα τα δούμε και αυτά όταν βγουν τα καινούργια), του λείπει όμως και ο ενθουσιασμός του webOS. Μπορώ να καταλάβω γιατί κάποιοι χρήστες που αντιπαθούν το iOS στρέφονται σε συσκευές με Android – σεβαστή η επιλογή τους. Εγώ δεν πρόκειται να το κάνω πάντως:)

Αλλά στο θέμα μας: coding για το ρομπότ.

Η όλη διαδικασία με το SDK πάει ως εξής: κατεβάζουμε το βασικό πακέτο από το developer portal, το οποίο είναι γραμμένο σε Java και διατίθεται και για τις τρεις μεγάλες αρχιτεκτονικές (Mac, Linux, Windows). Το αποσυμπιέζουμε, και τρέχουμε το κατάλληλο configuration πρόγραμμα μέσα από τον φάκελο του SDK. Πλέον από εκεί φτιάχνουμε τα virtual machines μας, και επίσης από εκεί εγκαθιστούμε και αναβαθμίζουμε platforms και λοιπά addons για το σύστημα. Το SDK προαπαιτεί JDK 1.5 ή 1.6 εγκατεστημένο, Python 2.2 και προτείνει Eclipse για πρότυπο περιβάλλον ανάπτυξης… γιατί τα προγράμματα για Android γράφονται σε Java! Θα ακολουθήσει συνέχεια στο σκάλισμα, σίγουρα, αλλά οπωσδήποτε δεν εντυπωσιάζομαι από το όλο στήσιμο.  Δεν είναι ότι έχω κάποια τρελή κόντρα με την Java, απλώς δε νιώθω αυτό το απόλυτο integration των APIs με το IDE και όλα τα υπόλοιπα εργαλεία που χρησιμοποιεί η Apple μέσω του Xcode όταν γράφει κάποιος προγράμματα για το iOS. My point is, ακόμη και στο πώς γράφονται τα προγράμματα για το Android διαφέρει η φιλοσοφία της Google.

Επίσης, ένα μικρό τελευταίο rant: το UI των προγραμμάτων το στήνεις είτε προγραμματιστικά at runtime, είτε ορίζοντας τα επιμέρους στοιχεία σε XML εκ των προτέρων. Δηλαδή, μηδέν graphic UI design! Έλα ρε Google, σοβαρέψου λίγο:/

Πάντως σίγουρα αξίζει να ασχοληθεί κάποιος. Θα επανέλθω όταν έχω νεώτερα επί του θέματος. Πάντως η μεταφορά προγραμμάτων που είναι native σε άλλες κινητές πλατφόρμες πρέπει να μην είναι ιδιαίτερα βολική ή εύκολη. Θα δείξει:)

11 Responses to “Android SDK”


  1. 1 gtg 19 Ιουλίου 2010 στο 12:50 πμ

    Σπύρο όσον αφορά το UΙ έχει ενσωματωμένο designer το eclipse και επίσης υπάρχει και το DroidDraw που σχεδιάζεις και σου βγάζει έτοιμο το xml. Επειδή έχω προγραμματίσει και για Android και για IOs έχω να πω ότι στο πρώτο μπορεί να κάνεις τα πάντα και έχει πολύ καλύτερο documentantion αλλά το δεύτερο είναι σαφώς πιο όμορφο.

  2. 2 Flareman 19 Ιουλίου 2010 στο 1:14 πμ

    @gtg: Από περιορισμούς σε σύγκριση μεταξύ Android και iOS, τι άποψη έχεις;

  3. 3 Ventrix 19 Ιουλίου 2010 στο 11:13 πμ

    Επίσης, ένα μικρό τελευταίο rant: το UI των προγραμμάτων το στήνεις είτε προγραμματιστικά at runtime, είτε ορίζοντας τα επιμέρους στοιχεία σε XML εκ των προτέρων. Δηλαδή, μηδέν graphic UI design! Έλα ρε Google, σοβαρέψου λίγο:/

    Χμ… Είμαι σίγουρος οτι είσαι πολύ λάθος σε αυτή την πρόταση.
    Υπάρχουν πλεονεκτήματα για να προτιμήσεις την χρήση των αρχείων XML.

    Πρόχειρα να σου αναφέρω δυο απο αυτά:
    Έχεις ξεχωριστά XML αρχεία (δηλαδή διαφορετικές παρουσιάσεις του GUI) για διαφορετικές συνθήκες (όπως διαφορετικές οθόνες, διαφορετικό orientation κλπ) ενώ ο κώδικας απο πίσω είναι κοινός.

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

    Τέλος εαν το να σου δίνεται η δυνατότητα να επιλέξεις δυο διαφορετικούς τρόπους να σχεδιάσεις το GUI της εφαρμογής σου το λες «μηδέν graphic UI design» τότε σίγουρα μπορώ να φανταστώ οτι δεν έχεις διαβάσει αυτό: http://developer.android.com/guide/topics/ui/index.html που αποδικνύει με τον καλύτερο τρόπο την δύναμη και τις επιλογές που έχεις στον σχεδιασμό του GUI σου ώστε να υπόστηρίζεις ταυτόχρονα πλήθος συσκευών.

    Θα ήταν θεμιτό πριν ξεστομίσουμε ειρωνείες, να σκεφτούμε οτι 5-10 προγραμματιστές που δουλεύουν στην Google, σίγουρα θα είχαν κάποιο πολύ καλό λόγο για να κάνουν αυτό που έκαναν με τον τρόπο που το έκαναν🙂

  4. 4 Flareman 20 Ιουλίου 2010 στο 12:10 πμ

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

    Πάμε από την αρχή: εγώ δε μίλησα για μονολιθικό UI, προσδεδεμένο στον πηγαίο κώδικα και οριζόμενο εκεί – αν κι αυτό ακόμα γίνεται, κι ακόμη κι έτσι μπορείς να πετύχεις ανεξαρτησία από προσανατολισμούς, διαστάσεις, ιστορίες. Εγώ μιλάω για την έλλειψη περιβάλλοντος γραφικού σχεδιασμού του UI – όπως είναι τα αντίστοιχα modules του VS (και της VBA, ήμαρτον Κύριε), το Interface Builder, το QtDesigner στο KDE, και πάει λέγοντας. Ο gtg από πάνω λέει κάτι χρήσιμο: ότι το Eclipse (που εγώ δε δοκίμασα γιατί το απεχθάνομαι θανάσιμα) έχει ενσωματωμένο UI editor για το Android, κάτι που είναι καλό. Επίσης μιλάει για το DroidDraw, το οποίο έβαλα για ελάχιστο χρόνο και έβγαλα αμέσως μετά, σόρι παιδιά αλλά δε με καλύπτει καθόλου, too primitive. Δεν ξέρω το Eclipse plugin τι κάνει αλλά την ούτως ειπείν ευκολία των εργαλείων που αναφέρω για τις άλλες πλατφόρμες δεν τη διακρίνω στο UI design για Android.

    Ένα άλλο λάθος που κάνεις στο σχόλιό σου: πού είδες να κατακρίνω το modular interface design; Ή την απομόνωση μοντέλου – όψης – ελεγκτή; Δεν κατέκρινα τίποτε απ’ όλα αυτά – εξ’ άλλου και στο iOS και στο OS X τα .nib και .xib files αυτή τη δουλειά κάνουν και αυτό το σκοπό εξυπηρετούν, την απομόνωση του προγραμματιστικού μέρους από την εμφάνιση (και δεν είναι τυχαίο που το μισό και βάλε localization γίνεται μέσω αυτών, ούτε που τα Universal applications στο iOS χρησιμοποιούν ακριβώς αυτό το «διχασμό» αρχείων). Και πάλι, αυτό που λέω είναι απλούστατο: θέλουμε modularity στο σχεδιασμό του UI μας, θέλουμε όμως και καλά εργαλεία για το σχεδιασμό του UI αυτού. Το να κατέβουμε σε επίπεδο XML για να το επιτύχουμε αυτό είναι καννιβαλίκια και επιστροφή στα πέτρινα χρόνια. Για να το θέσω απλούστερα (πόσο πιο απλά; υποτίθεται το post απευθύνεται σε developers, υποτίθεται πως όσοι συμμετέχουμε στον σχολιασμό ξέρουμε από development και μιλάμε την ίδια γλώσσα), το ψωμί κομμένο σε φέτες είναι εξαιρετικό και το θέλουμε όλοι, αλλά αν είναι να το κόψω με το δάχτυλο αντί με μαχαίρι να μου λείπει το βύσσινο.

    Συμπέρασμα: αντί να χαρακτηρίζουμε τις ειλικρινείς και εποικοδομητικές απόψεις κάποιου που δε γνωρίζουμε καν ως ειρωνείες και να εκφέρουμε γνώμη για το τι έχει ή δεν έχει διαβάσει αυτός, καλό είναι να κοιτάμε λίγο πιο προσεκτικά και συγκεντρωμένα τι έχουν πει οι προλαλήσαντες και να σκεφτόμαστε και λίγο παραπάνω τι ετοιμαζόμαστε να πούμε, ναι;:)

    … παρ’ εκτός κι αν έχεις μετοχές στη Google ή κάτι τέτοιο στην οποία περίπτωση, ντέφι να γίνει, χαλάλι σου το σχόλιο:P

    Update: Μια διευκρίνιση γιατί θα με παρερμηνεύσεις πάλι: μη νομίσεις ότι απαξιώνω την XML ως UI description language. Εξ’ άλλου προσπάθειες όπως τα Qt style sheets και η XMLGUI υπάρχουν εδώ και καιρό π.χ. στο KDE και στο Qt. Αλλά αυτό δεν αναιρεί την ανάγκη για έναν καλό visual editor.

  5. 5 Ventrix 20 Ιουλίου 2010 στο 6:53 πμ

    Όντως δεν πήγε το μυαλό μου εκεί, μάλλον παρερμήνευσα τις λέξεις «graphic UI design» καθώς (όπως αναφέρεις) υπάρχει ενας βασικός XML Builder. Ο λόγος που είναι «βασικός» είναι οτι δεν υπάρχει εύκολος τρόπος να σχεδιάσεις με την χρήση GUI τα διάφορα Layouts του Android χρησιμοποιώντας τον συγκεκριμένο builder παρα μόνο στο absolute layout που όμως συνιστάται ρητά η αποφυγή της χρήσης του για ευνόητους λόγους.

    Για εναν αρχάριο είναι οτι πρέπει, για κάποιον που θέλει να φτιάξει ενα ρεαλιστικό και χρηστικό layout είναι εντελώς άχρηστο.

    Πάντως, όπως αναφέρθηκε και στο Google IO 2010 υπάρχει ομάδα που δουλεύει πάνω στο συγκεκριμένο plugin και πραγματικά περιμένω να δω τι θα καταφέρουν🙂

    Τώρα τα αρχεία XML που περιγράφουν το GUI είναι εξαιρετικά απλά και ακίνδυνα και ο χρόνος εξοικείωσης είναι το πολύ μια εβδομάδα για εναν μέτριο developer. Για τους υπόλοιπους έχουμε το App Inventor για το οποίο έχω εκφράσει άποψη εδώ: http://www.kospol.gr/147/thoughts-on-app-inventor-for-android/ .

    «Το να κατέβουμε σε επίπεδο XML για να το επιτύχουμε αυτό είναι καννιβαλίκια και επιστροφή στα πέτρινα χρόνια.»
    Τι εναλλακτική έχεις να προτείνεις για την αντικατάσταση των XML files;

    Το προηγούμενο σχόλιο έγινε μεν επικριτικά αλλά σε καμία περίπτωση δεν είχε «κακό» χαρακτήρα. Συγνώμη εαν φάνηκε έτσι.

  6. 6 Flareman 20 Ιουλίου 2010 στο 2:27 μμ

    @Ventrix: Συγχωρεμένος για τα προηγούμενα, όλοι έχουμε ξεφύγει κατά καιρούς.

    Μπορεί να μην είναι ιδιαίτερος μπελάς για έναν εξοικειωμένο developer η μαυρομύτα και τα «χειροκίνητα» XML αλλά η ευκολία του drag’n’drop, της αυτόματης προσαρμογής στα HIGs της εκάστοτε πλατφόρμας και λοιπά απλά δεν παίζονται. Μακάρι να δώσουν κάτι καλύτερο, είναι μεγάλο turnoff και είναι και μεγάλο κρίμα.

    Ως προς την XML… ξανα(μανα)διάβασε τα προηγούμενα:) Δεν έχω πρόβλημα με το XML format για τη δομή και την αποθήκευση του interface – εξ’ άλλου το ίδιο το OS X παίζει απίστευτα με .plists και XML – αλλά έχω μεγάλο πρόβλημα με το να μπορώ να τα φτιάξω μόνο με το χέρι, χωρίς σοβαρά εργαλεία που να μου λύνουν τα χέρια.

  7. 7 kostis 20 Ιουλίου 2010 στο 2:52 μμ

    Και η Microsoft χρησιμοποιεί την XAML στο Silverlight και το WPF – η χρήση XML για την περιγραφή του UI δεν είναι κάτι θεμελιωδώς λάθος, κάθε άλλο. Ο σχεδιασμός σε XAML π.χ. δε διαφέρει και πολύ από το να γράφεις HTML – το περιβάλλον βοηθάει με το code completion και το split view. Μάλιστα πολλοί web designers εξοικειωμένοι με αυτό το σύστημα δυσκολεύονται με το γραφικό τρόπο σχεδιασμού, προτιμούν ένα ενιαίο τρόπο να σχεδιάζουν interfaces! Όσον αφορά τους graphic designers ουτοί ούτως ή άλλως το Photoshop χρησιμοποιούν, για αυτά τα τεχνικά δεν τους καίγεται καρφάκι🙂

  8. 8 Flareman 20 Ιουλίου 2010 στο 3:36 μμ

    @k: Πρόσεξε όμως, μιλάς κυρίως για web design:) Δεκτόν, και οι εφαρμογές σε webOS που πατάνε κυρίως σε JS και CSS έτσι πάνε, αλλά μιλούσα περισσότερο για native εφαρμογές. Σε web περιβάλλον πρακτικά αν δεν… βρέξεις κώλο (sic) δεν τρως ψάρια, μέχρι σήμερα. Εκεί παρατηρείται το αντίθετο: ενώ υπάρχουν προγράμματα και βοηθήματα τύπου Dreamweaver, CSSEdit, Coda, CSS Magic/Inspector/, για να κάνεις σωστή δουλειά επιβάλλεται να πέσεις σε επίπεδο κώδικα.

  9. 9 kostis 20 Ιουλίου 2010 στο 4:00 μμ

    Γενικά συμφωνούμε, απλά μη θεωρείς την HTML/XML/XAML κλπ σαν «κώδικα» -δεν είναι τυχαίο που λέγεται «markup»- και απαιτεί τελείως διαφορετικά skills (π.χ. άνθρωποι που δε μπορούν με τίποτα να προγραματίσουν τα καταφέρνουν άριστα στην HTML). Σε ένα εταιρικό περιβάλλον βολεύει να έχεις ένα unified τρόπο να σχεδιάζεις interfaces – διευκολύνει την κατανομή καθηκόντων! Ίσως γι’ αυτό και το WPF που είναι το επόμενης γεννιάς framework της Microsoft για native εφαρμογές βασίζεται στη XAML, αλλά φυσικά όποιος θέλει μπορεί να σχεδιάζει και με το γραφικό τρόπο που υποστηρίζει το Visual Studio. Συμφωνούμε πάντως ότι το να έχεις επιλογές είναι καλό και κάθε βελτίωση των εργαλείων είναι επιθυμητή – απλά στο Android υπάρχει μεγάλο diversity στις συσκευές και πολλές διαφορετικές αναλύσεις άρα λογικό είναι να θέλει και μεγαλύτερη προσπάθεια ώστε μια εφαρμογή να παίζει παντού.

  10. 10 Flareman 20 Ιουλίου 2010 στο 4:33 μμ

    @k: Μπορώ να πω ότι επειδή προέρχομαι κυρίως από τον native χώρο, αν και τα πάω σχετικά καλούτσικα με το web σύμπαν των εφαρμογών, νιώθω άλλη άνεση με τα native interfaces – ίσως να είμαι λίγο προκατειλημμένος:D Πάντως δε νομίζω ότι είναι σοβαρό πρόβλημα οι πολλαπλές αναλύσεις (γιατί εκεί θα έχεις το μεγαλύτερο πρόβλημα με τα UIs). Πάρε για παράδειγμα το iOS: πέραν του ότι έχεις τρεις διαφορετικές συσκευές (κλασικά iPhones/iPod Touches, συσκευές με Retina Display, και iPads), υπάρχει και το ζήτημα του orientation – και είναι εξαιρετικά άκομψο να κλειδώνεις τον χρήστη σου σε ένα συγκεκριμένο προσανατολισμό. Πώς το λύνουν; Ελαστικές τοποθετήσεις και μεγέθη, αυτόματη ευθυγράμμιση κατά το σχεδιαστικό χρόνο με βάση τα HIGs, και για το iPad ειδικά που είναι εντελώς άλλη φάση, διαφορετικό .xib. Και μην ξεχνάμε, ο κώδικας πάντα μπορεί να βοηθήσει λίγο αν υπάρχει πρόβλημα.


  1. 1 Tweets that mention Android SDK « Νυστέρι -- Topsy.com Παράθεση σε 19 Ιουλίου 2010 στο 12:47 πμ

Σχολιάστε

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s




Κατηγορίες

ΗΜΕΡΟΛΟΓΙΟ

Ιουλίου 2010
Δ T Τ T Π S S
« Jun   Σεπτ. »
 1234
567891011
12131415161718
19202122232425
262728293031  

ΠΑΛΑΙΟΤΕΡΕΣ ΣΕΖΟΝ…

del.icio.us

Twitter

ASK2USE

ΔΙΑΦΟΡΑ

Μας διαβάζουν τακτικά:

Counter free

Αρέσει σε %d bloggers: