Δημιουργούμε τη δική μας ROM για όποια συσκευή θέλουμε με ελάχιστες γνώσεις! Μέρος 3ο: Δημιουργία εικονιδίων και μετάφραση
Συνεχίζουμε τη βόλτα μας στο μαγικό κόσμο των custom ROM και σήμερα θα δούμε πώς μπορούμε να καλλωπίσουμε τη ROM μας φτιάχνοντας τα δικά μας εικονίδια, αλλάζοντας τους χρωματισμούς αλλά και μεταφράζοντάς την. Είναι θεωρητικά το πιο δύσκολο κομμάτι στην κατασκευή μιας ROM καθώς θα χρησιμοποιήσουμε λιγάκι το τερματικό, αλλά ευτυχώς είναι προαιρετικό.
Μη χάσετε τα δύο πρώτα μέρη της σειράς με θέμα:
Προσοχή!: Η χρήση των οδηγιών που θα διαβάσετε παρακάτω, όπως και στα επόμενα άρθρα για την κατασκευή μιας custom ROM είναι αποκλειστικά δική σας ευθύνη. Καμία ευθύνη δε φέρει η ιστοσελίδα ή ο συντάκτης για οποιοδήποτε πρόβλημα δημιουργηθεί σε οποιαδήποτε συσκευή, χρησιμοποιώντας τις παρακάτω οδηγίες.
APK
Όπως ήδη γνωρίζουμε, όλες οι εφαρμογές και τα παιχνίδια στο Android είναι πακεταρισμένα σε αρχεία με κατάληξη .apk. Το .apk είναι στην ουσία ένας συμπιεσμένος φάκελος (όπως τα .zip και τα .rar) και έχει αυτή την κατάληξη για να "καταλαβαίνει" το σύστημα του Android ότι πρόκειται για εγκαταστάσιμο αρχείο. Μέσα του θα βρούμε υποφακέλους στους οποίους περιέχονται όλες οι πληροφορίες εγκατάστασης, ο κώδικας, οι βιβλιοθήκες και φυσικά τα εικονίδια που μας ενδιαφέρουν στην προκειμένη περίπτωση.
Κάθε .apk λοιπόν κρύβει και το εικονίδιό του, τα εικονίδια του συστήματος όμως βρίσκονται όλα στο "SystemUI.apk" (διαδρομή "/system/app") και το "framework-res.apk" (διαδρομή "/system/framework"). Αν το δεύτερο δεν υπάρχει στη δική σας ROM, ψάξτε για .apk αρχεία που στην ονομασία τους έχουν τις λέξεις "res" ή "resources", για παράδειγμα στις ROM που περιέχουν το HTC Sense UI το αρχείο είναι το "com.htc.resources.apk".
Αλλαγή εικονιδίων χειροκίνητα
Για να αλλάξουμε λοιπόν τα εικονίδιά μας θα πρέπει να ανοίξουμε το "framework-res.apk" με το APK Tool που θα δούμε παρακάτω. Μπαίνουμε στο φάκελο "res" και ψάχνουμε για υποφακέλους που στην ονομασία τους έχουν τη λέξη "drawable". Μέσα σε αυτούς θα δούμε ότι υπάρχουν όλα τα εικονίδια και τα φόντο των εφαρμογών συστήματος, τα οποία μπορούμε να φορτώσουμε σε ένα πρόγραμμα επεξεργασίας εικόνων και να τα διαμορφώσουμε όπως μας αρέσει. Μόλις τελειώσουμε την επεξεργασία, θα πρέπει να αποθηκεύσουμε το εικονίδιο που φτιάξαμε αντικαθιστώντας το πρωτότυπο:
- στον ίδιο φάκελο
- με την ίδια ακριβώς ονομασία,
- με τις ίδιες διαστάσεις της εικόνας
- και τον ίδιο τύπο (π.χ. από png σε png)
Θα προσέξετε ότι υπάρχουν πολλά ίδια εικονίδια σε διαφόρους φακέλους. Αυτό συμβαίνει γιατί η κάθε συσκευή, ανάλογα με την ανάλυση οθόνης, τραβάει τα εικονίδια από διαφορετικό φάκελο. Για παράδειγμα, ο φάκελος "drawable-hdpi" εξυπηρετεί συσκευές με ανάλυση οθόνης 480x800p (hdpi), ενώ ο φάκελος "drawable-nodpi" είναι κοινός για όλες. Αλλάξτε τα λοιπόν όλα για να είστε σίγουροι και προσοχή στις ονομασίες. Μην ξεχάσετε επίσης να τσεκάρετε και το "SystemUI.apk" το οποίο περιέχει εικονίδια κυρίως από τη notification bar του Android.
Μερικά από τα περιεχόμενα του "framework-res.apk":
Αλλαγή εικονιδίων μέσω της UOT Kitchen
Ο παραπάνω τρόπος μπορεί να είναι ο καλύτερος γιατί μας δίνει πλήρη ελευθερία να δημιουργήσουμε τα δικά μας εικονίδια, είναι όμως χρονοβόρος. Για όσους θέλουν αλλά βαριούνται, υπάρχει η UOT Kitchen, μία σελίδα στην οποία μπορούμε να ανεβάσουμε το "framework-res.apk" της ROM μας και να επιλέξουμε μέσα από μία πολύ μεγάλη γκάμα εικονιδίων. Η UOT θα αναλάβει να τα ενσωματώσει αυτόματα και θα μας επιστρέψει το αρχείο, έτοιμο για εγκατάσταση. Περισσότερες πληροφορίες.
Μετάφραση της ROM
Τι γίνεται όμως αν η ROM που έχουμε επιλέξει ως βάση, δεν έχει την ελληνική γλώσσα; Θα την παρατήσουμε; Όχι βέβαια! Τα αρχεία μετάφρασης του συστήματος βρίσκονται όλα στο "Settings.apk". Το ανοίγουμε με τον ίδιο τρόπο και μέσα στο φάκελο "res" θα βρούμε ένα σωρό φακέλους με ονομασία "values-**". Θα προσέξετε ότι ο κάθε ένας έχει δύο γράμματα μετά τη λέξη "values", τα οποία είναι η συντομογραφία της γλώσσας που αντιπροσωπεύουν, για παράδειγμα it = italia, bg = bulgaria και πάει λέγοντας (ο ελληνικός φάκελος είναι ο "values-el").
Μέσα σε αυτούς τους φακέλους θα βρούμε μερικά .xml αρχεία τα οποία περιέχουν τις μεταφράσεις, με σημαντικότερο το "strings.xml". Το ανοίγουμε με το Notepad++ και αρχίζουμε τη μετάφραση αλλάζοντας μόνο τα μαύρα γράμματα:
Για να αποφύγουμε τη δημιουργία νέων φακέλων και αρχείων, μπορούμε να επεξεργαστούμε μία άλλη γλώσσα που δεν τη χρειαζόμαστε και να επιλέγουμε αυτή μέσα από τις ρυθμίσεις συστήματος. Δεν ξεχνάμε επίσης να μεταφράσουμε και άλλα περιεχόμενα φακέλων που αναφέρονται σε γλώσσες όπως το "values-**-nokeys" και το "xml-**".
APK Tool & Sign APK
Ας δούμε τώρα πώς λειτουργούν τα προγράμματα που θα χρειαστούμε για να επεξεργαστούμε με επιτυχία τα .apk μας. Μπορεί τα .apk να μοιάζουν με .zip αρχεία αλλά χρειάζονται ειδική μεταχείριση στην αποσυμπίεση και τη συμπίεση. Για αυτό το λόγο θα χρησιμοποιήσουμε το APK Tool και το Sign APK. Η χρήση και η εγκατάστασή τους είναι πανεύκολη, το πρόβλημά όμως είναι ότι εξαρτώνται από τη Java την οποία αν δε στήσουμε σωστά θα έχουμε σφάλματα.
Για να τα εγκαταστήσουμε:
1. Κατεβάζουμε και εγκαθιστούμε την τελευταία έκδοση της Java Runtime Environment (JRE) από την επίσημη σελίδα της.
2. Κατεβάζουμε και εγκαθιστούμε το APK Tool από την επίσημη σελίδα του εκτελώντας τα εξής, ανάλογα με το λειτουργικό μας σύστημα:
Windows:
- Κατεβάζουμε το "apktool-install-windows-***"
- Κατεβάζουμε το "apktool-***"
- Αποσυμπιέζουμε και αποθηκεύουμε τα περιεχόμενά τους (apktool, aapt και apktool.jar) στη διαδρομή "C:\WINDOWS"
Linux:
- Κατεβάζουμε το "apktool-install-linux-***"
- Κατεβάζουμε το "apktool-***"
- Αποσυμπιέζουμε και αποθηκεύουμε τα περιεχόμενά τους (apktool, aapt και apktool.jar) στη διαδρομή "/usr/local/bin" (θα πρέπει φυσικά να έχουμε πρώτα δικαιώματα root)
Mac:
- Κατεβάζουμε το "apktool-install-macos-***"
- Κατεβάζουμε το "apktool-***"
- Αποσυμπιέζουμε και αποθηκεύουμε τα περιεχόμενά τους (apktool, aapt και apktool.jar) στη διαδρομή "/usr/local/bin" (θα πρέπει φυσικά να έχουμε πρώτα δικαιώματα root)
3. Ανοίγουμε ένα τερματικό και πληκτρολογούμε τη λέξη "apktool". Αν όλα έχουν γίνει σωστά, θα μας εμφανίσει τη λίστα εντολών της εφαρμογής.
4. Κατεβάζουμε το Sign APK Tool από το Gοogle και αποσυμπιέζουμε τα περιεχόμενά του (signapk.jar, certificate.pem, key.pk8) σε έναν οποιοδήποτε φάκελο.
Χρήση του APK Tool
Για να ξεκινήσουμε να χρησιμοποιήσουμε το APK Tool θα χρειαστούμε το αρχείο framework της ROM μας αλλά και το .apk που θέλουμε να πειράξουμε. Το framework θα πρέπει να εγκατασταθεί στο APK Tool πριν αρχίσουμε να αποσυμπιέζουμε τα .apk μας, εκτός και αν πρόκειται για το "framework-res.apk" το οποίο είναι ήδη προεγκατεστημένο. Για παράδειγμα αν θέλουμε να πειράξουμε το αρχείο "Mms.apk" μίας ROM που περιέχει το HTC Sense θα πρέπει να το εξάγουμε στον υπολογιστή μας μαζί με το "com.htc.resources.apk" το οποίο είναι το framework αρχείο αυτής της ROM.
Για να το εγκαταστήσουμε στο APK Tool, ανοίγουμε ένα τερματικό, μπαίνουμε στο φάκελο που βρίσκονται τα αρχεία και δίνουμε την εντολή:
Windows & Linux & Mac:
apktool if framework-res.apk
Ως απάντηση θα μας δώσει κάτι παρόμοιο με το παρακάτω:
Decompile
Για να ανοίξουμε το Mms.apk δίνουμε την εντολή:
Windows & Linux & Mac:
apktool d Mms.apk
και θα μας εμφανίσει κάτι τέτοιο:
Μόλις τελειώσει το decompile, στον ίδιο φάκελο με το "Mms.apk" θα έχει δημιουργηθεί ένας ακόμα με το όνομα "Mms" και με όλα τα αρχεία που χρειαζόμαστε. Τώρα μπορούμε να αρχίσουμε το theming.
Compile
Αφού τελειώσουμε με τις αλλαγές μας, για να κλείσουμε τα περιεχόμενα του φακέλου "Mms" σε .apk δίνουμε την εντολή:
Windows & Linux & Mac:
apktool b Mms
και αν όλα πάνε καλά θα μας εμφανίσει το εξής:
Μόλις τελειώσει η διαδικασία, θα βρούμε το νέο "Mms.apk" στη διαδρομή "/Mms/dist".
Χρήση του Sign APK Tool
Το αρχείο μας όμως δεν είναι ακόμα έτοιμο καθώς θα πρέπει να προσθέσουμε και μια "ψηφιακή υπογραφή" για να εγκατασταθεί με επιτυχία στη συσκευή μας. Για να τα καταφέρουμε τοποθετούμε το νέο .apk στον ίδιο φάκελο με το Sign APK, ανοίγουμε ένα τερματικό, μπαίνουμε στο φάκελο και δίνουμε την εντολή:
Windows:
java -jar signapk.jar certificate.pem key.pk8 Mms.apk Mms-signed.apk
Θα δημιουργηθεί λοιπόν το αρχείο "Mms-signed.apk" το οποίο μπορούμε πλέον να εγκαταστήσουμε στη συσκευή μας.
Κλείσιμο
Είδαμε λοιπόν μερικά απλά πράγματα που μπορούμε να κάνουμε σε μία ROM σε επίπεδο καλλωπισμού, αλλά και τις βασικές λειτουργίες των απαιτούμενων προγραμμάτων. Μπορούμε φυσικά να πειράξουμε και να μεταφράσουμε οποιοδήποτε .apk έχουμε στη διάθεσή μας, ακολουθώντας την ίδια διαδικασία. Με λίγο ψάξιμο επίσης μπορούμε να βρούμε και άλλα .xml αρχεία τα οποία εκτελούν βασικές λειτουργίες και να τα διαμορφώσουμε όπως θέλουμε με τον πολύ απλό τρόπο που είδαμε.
Στο επόμενο και τελευταίο μέρος της σειράς, θα δούμε πώς πακετάρουμε με επιτυχία μία ROM και θα πούμε λίγα πράγματα για τη σημασία του φακέλου "META-INF".
Αν έχετε εντοπίσει και άλλες χρήσιμες λειτουργίες που μπορούμε να πειράξουμε, προτείνετέ τις στα σχόλια παρακάτω.
Εγώ που θέλω το "Stock AOSP Full Black" με ρολόι μαζί από εδώ http://forum.xda-developers.com/showthread.php?t=1840580
ΑπάντησηΔιαγραφήμπορώ να επεξεργαστώ το systemui.apk όπως λέει και στον οδηγό ώστε να εμφανίζεται και το ρολόι;
Αυτό που αναφέρεις δεν είναι ROM, είναι ένα mod. Το ξεπακεταρεις και το προσθετεις στη ROM σου. Εννοείται ότι μπορείς να το επεξεργαστεις με τον ίδιο τρόπο.
ΔιαγραφήΜπράβο και για το 3ο μέρος!! Super ;)
ΑπάντησηΔιαγραφή(Περί μετάφρασης: στην CM7.2 είχε το "Used Space" ως "Μεταχειρισμένος Χώρος"... εχμ! )
Πλέον μπορείς να το διορθώσεις. :)
ΔιαγραφήΚαλησπέρα, πολύ χρήσιμο όμως έχω ένα προβληματάκι. Άρχισα να μεταφράσω το "Settings.apk" με τον παραπάνω ακριβώς τρόπο, όλα καλά, μέχρι το σημείο που πρέπει να εγκαταστήσω την εφαρμογή στο κινητό μου, βγάζει το μήνυμα "Application not installed"
ΑπάντησηΔιαγραφήΓειά σου Αλέξη. Πες μου λίγο, πώς προσπαθείς να το εγκαταστήσεις;
ΔιαγραφήΛοιπόν, έβαλα το Settings.apk στο /system/app/ με επιβεβαίωση αντικατάστασης, άλλαξα τα permissions (rw-r--r--). Ύστερα το ανοίγω για να κάνω install...
ΔιαγραφήΔε χρειάζεται να το κάνεις install. Αφού το αντιγράψεις στο system απλά κάνεις επανεκκίνηση. Πρόσεξε όμως γιατί προσπαθείς να το βάλεις στη συσκευή σου και όχι σε κάποια ROM που θα φλασάρεις αργότερα, οπότε δεν ξέρω αν θα σου δουλέψει.
ΔιαγραφήΤο δοκίμασα και αυτό, δυστυχώς τίποτα. Επίσης δοκίμασα να το βάλω στην ROM και να ξαναφλασάρω, και πάλι τίποτα...
ΑπάντησηΔιαγραφήΆρα κάτι συμβαίνει με το apk. Κάπου έχει γίνει λάθος στο compile ή στην υπογραφή του. Να σου πω την αλήθεια έκανα 100 δοκιμές για να μπορέσω να στήσω με επιτυχία το APK Tool. Αυτή η Java μου έσπασε τα νεύρα.
ΔιαγραφήΧμμ, να προσπαθήσω να το ξανακάνω ακόμη μια φορά...Ευχαριστώ πολύ...
ΑπάντησηΔιαγραφήΝα σαι καλά. Απλά δεν μπορώ να σε βοηθήσω περισσότερο μιας και εγώ τώρα το μαθαίνω και έχω παρόμοια προβλήματα.
ΔιαγραφήΚαλησπέρα Chris K, θα ήθελα να κάνω μια ερώτηση μπορεί να είναι και χαζή. Για να επεξεργαστώ το Settings.apk, έχει σημασία εάν είναι από επίσημη ή custom ROM;
ΑπάντησηΔιαγραφήΔεν έχει σημασία αλλά θα πρέπει να φλασάρεις αυτή τη ROM μετά. Δεν μπορείς να το πάρεις δηλαδή από μια ROM και να το βάλεις σε άλλη.
ΔιαγραφήΜάλιστα, δοκίμασα χθες να μεταφράσω την εφαρμογή Mms.apk κι έγινε κανονικότατα...επίσης ξαναπροσπάθησα το Settings.apk όμως και πάλι τίποτα...
ΔιαγραφήΠω! Ειλικρινά σε ευχαριστούμε που μοιράζεσαι τις γνώσεις σου και μας παρουσιάζεις αυτήν την υπέροχη "σειρά μαθημάτων" για να φτιάξουμε μια προσωπική μας ROM για το smartphone μας !!!
ΑπάντησηΔιαγραφήΕγώ να ρωτήσω κάτι που θα ακουστεί χαζό μάλλον. :P
Στον καλλωπισμό μια custom ROM δεν συμπεριλαμβάνεται και το bootanimation; Το ξέρω πως δεν βρίσκεται στην εκτίμηση πολλών γιατί αργεί την εκκίνηση της συσκευής, όμως θα ήταν ωραίο να μας πεις πως γίνεται να το περάσουμε στην ROM μας. Για όποιον ενδιαφέρεται.
Επίσης γίνεται να πειραξουμε την Notification bar (ή αλλιώς Status bar); Να την παραμετροποίουμε όπως θέλουμε και μας αρέσει πχ να βγάλουμε το εικονίδιο για Ενεργοποίηση/Απενεργοποίηση του GPS ή να προσθέσουμε κι άλλα πχ Ενεργοποίηση/Απενεργοποίηση του 3G.
Για όσους βρίσκονται στην 4.2 έκδοση μπορεί να μην λέει πολλά γιατί έχουν το Quick Settings, για εμάς με λίγο παλαιότερη έκδοση είναι σημαντικό. :)
(Είπα κι εγώ μερικές προτάσεις...)
Γειά σου Παναγιώτη, σχετικά με τη status bar, γίνεται να την πειράξεις και να προσθέσεις ότι θέλεις αλλά θα πρέπει να συμπληρώσεις κάποιες γραμμές στο xml αρχείο της. Δεν τη συμπεριέλαβα στα μαθήματα διότι υποσχέθηκα να είναι ιδιαίτερα απλά και εύκολα.
ΔιαγραφήΌσον αφορά το bootanimation είναι επίσης εύκολο να φτιάξεις το δικό σου. Θα ετοιμάσω ένα αρθράκι. Ευχαριστώ για την ιδέα.
Ωραία! Χαίρομαι που συνέβαλα στην προσπάθειά σου!
ΔιαγραφήΠφ... Κρίμα! Θα ήταν πολύ καλό να πειραζαμε και την status bar... Είναι τόσο περίπλοκο που θεωρείς πως έστω και μικρά παραδειγματάκια, θα ήταν απαγορευτικά;
Και κάτι τελευταίο πόσα ακόμα μαθήματα πιστεύεις πως θα γράψεις; Έχω ξεκινήσει, φυσικά, μερικά βήματα για να φτιάξω την ταπεινή μου ROM, αλλά θέλω να περιμένω να ολοκληρώσεις τα μαθήματα, για να έχω καλύτερη εικόνα για τα βήματα που θα κάνω και να μην έχω τυχόν πισωγυρίσματα. (Πιστεύω θα υπάρχουν κι άλλοι που θα κάνουν το ίδιο γι αυτό ρωτάω δημόσια και όχι σε e-mail.)
Ρίξε μια ματιά εδώ για το τι χρειάζεται να φτιάξεις Quick Toggles :
Διαγραφήhttp://forum.xda-developers.com/showthread.php?t=1992084
Ουπς κατάλαβα... Χαχα!
ΔιαγραφήΤέλος πάντων ευχαριστώ πολύ που βοήθησες!! :)
Επίσης θα ήταν πολύ καλό αν θα μπορούσες να μας πεις πως μπορούμε να "μετατρέψουμε" μία ROM από κατασκευαστή σε AOSP.Δηλαδή ποιες εφαρμογές θα μπορούσαμε να διώξουμε/προσθέσουμε ώστε η ROM να είναι σαν αυτή των Nexus.Επίσης πως θα μπορούσαμε μέσω της Dsixda Kitchen να ανεβάσουμε τα CPU Frequencies του Kernel ώστε να μπορούμε να κάνουμε Overclock.Επίσης συγχαρητήρια για την σειρά.Με έχει βοηθήσει πάρα πολύ.
ΑπάντησηΔιαγραφήΤο πρώτο που λες δεν γίνεται καθώς οι αλλαγές είναι βαθιά μέσα στα framework files και δεν αφαιρούνται έτσι εύκολα. Μόνο στο HTC Hero μπορούσε κάποιος να το κάνει.
ΔιαγραφήΤώρα η dsixda kitchen είναι πιο προχωρημένη για το σκοπό αυτών των άρθρων.
ΟΚ τότε.Μήπως ξέρεις πότε έρχεται το επόμενο μέρος?
ΔιαγραφήΜέχρι την Παρασκευή νομίζω.
ΔιαγραφήΚαλησπέρα...μετά από πολύ κόπο κατάφερα να μεταφράσω το Settings.apk της ROM μου...αυτό που θέλω τώρα είναι να δημιουργήσω μια δικιά μου γλώσσα, τα ελληνικά...ποιος είναι ο τρόπος; (Εννοώ πως τώρα για να έχω ελληνικά στο κινητό, έχω επεξεργαστεί τα τούρκικα, και αυτά επιλέγω για να έχω ελληνικά...)
ΑπάντησηΔιαγραφήΓια να πας ένα βήμα παραπέρα πρέπει να προγραμματίσεις μέσω του ADT. Κατέβασε τα εργαλεία από εδώ:
Διαγραφήhttp://developer.android.com/sdk/index.html
Καλησπερα , ισως σχολιαζω λιγο αργα στο συγκεκριμενο αρθρο αλλα σε ολες τις εφαρμογες που εψαξα δεν υπαρχει φακελος values με αρχεια για να μεταφρασω. Καμια εφαμογη μ δεν το εχει αυτο. ακομα και το settings?
ΑπάντησηΔιαγραφήΧρησιμοποιω cm9 για το lg e400
ΥΓ : εβαλα καποια apks και init scripts ( οπως τα λενε )
τα apks με ενα fix permissions απο το recovery μετα το flash δεν θα εχουν προβλημα σωστα?
Ψάχνεις μέσα στο φάκελο "res" σωστά; Εκεί πρέπει να είναι.
ΔιαγραφήΌσον αφορά τα permissions λογικά δε θα έχουν πρόβλημα αλλά προσωπικά θα τα έφτιαχνα με το χέρι.