Παρασκευή, 4 Ιανουαρίου 2013

Δημιουργούμε τη δική μας ROM για όποια συσκευή θέλουμε με ελάχιστες γνώσεις! - Μέρος 1ο: Προσθαφαίρεση αρχείων


Ο όρος "custom ROM" είναι λίγο πολύ γνωστός στους ιδιοκτήτες Android συσκευών. Οι περισσότεροι έχουμε δοκιμάσει πολλές, αρκετοί έχουμε καταλήξει στην αγαπημένη μας και άλλοι ψαχνόμαστε ακόμα, όμως όλοι συμφωνούμε ότι οι custom ROM είναι ένα τεράστιο και ιδιαίτερα σημαντικό κεφάλαιο για το Android και τους χρήστες του (αν δεν ξέρετε για τι πράγμα μιλάμε, ενημερωθείτε εδώ).

Στην περίπτωση λοιπόν που δοκιμάσατε διάφορες ROM αλλά με καμία δε μείνατε 100% ευχαριστημένοι, ελάτε να δούμε πώς θα φτιάξουμε τη δική μας custom ROM για τη συσκευή μας, χωρίς να χρειαστεί να γράψουμε ούτε μία γραμμή κώδικα! Το μόνο που χρειάζεται για να τα καταφέρουμε είναι να είμαστε εξπέρ στην τέχνη:
  • του διπλού κλικ και
  • της αντιγραφής και επικόλλησης.

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

Ο σωστός δρόμος...
Αν γνωρίζαμε τη "γλώσσα" του Android, θα έπρεπε να κατεβάσουμε τον κώδικά του, να τον κάνουμε compile για τη συσκευή μας και να διορθώσουμε τα προβλήματα που θα προκύψουν, όπως η λειτουργία της κάμερας που είναι σύνηθες. Αυτό που θα προέκυπτε είναι μία καθαρή ROM σαν αυτή που "φοράνε" οι Nexus συσκευές την οποία αργότερα θα έπρεπε να διαμορφώσουμε ανάλογα με τα γούστα μας.

Επειδή έχω δοκιμάσει πολλές φορές να κάνω compile, θα πρέπει να σας πω ότι τις μισές φορές δε θα γίνει με επιτυχία και τις άλλες μισές θα είναι τέτοια τα προβλήματα της ROM που δεν ξέρεις από πού να αρχίσεις για να τα διορθώσεις. Οπότε ο κλασικός τρόπος απορρίπτεται μιας και δεν έχουμε τέτοιες γνώσεις, αν θέλετε όμως να δοκιμάσετε διαβάστε τα απαραίτητα για το στήσιμο στον υπολογιστή σας, ή δοκιμάστε το CM Compiler.

... και ο παράδρομος!
Για να αποφύγουμε λοιπόν το compile, μας αρκεί να βρούμε μία έτοιμη custom ROM στο ίντερνετ για να τη χρησιμοποιήσουμε ως βάση. Η ROM που θα διαλέξουμε θα πρέπει:
  • να είναι κατασκευασμένη για τη συσκευή μας
  • να λειτουργεί σωστά, δηλαδή αν σε αυτή που θα επιλέξουμε δεν λειτουργεί η κάμερα, τότε ούτε στη ROM μας θα λειτουργεί.
  • να περιέχει το περιβάλλον που θέλουμε να έχουμε (Sense, Touchwiz κλπ.)

Προσωπικά θα επέλεγα:
  • μία "καθαρή" ROM κατασκευασμένη απευθείας από τον κώδικα του Android (AOSP) 
  • ή μία stock ROM από τον κατασκευαστή της συσκευής μου 
  • ή μία ROM εγνωσμένης αξίας όπως η CyanogenMod ή η AOKP.

Μπορείτε για παράδειγμα να βρείτε μία ωραία βάση για το Nexus S εδώ, για το Galaxy Nexus εδώ και για πολλές ακόμα συσκευές στο XDA, για να ξεκινήσετε.


Ξεκινάμε!

Προσοχή!: Η χρήση των οδηγιών που θα διαβάσετε παρακάτω, όπως και στα επόμενα άρθρα για την κατασκευή μιας custom ROM είναι αποκλειστικά δική σας ευθύνη. Καμία ευθύνη δε φέρει η ιστοσελίδα ή ο συντάκτης για οποιοδήποτε πρόβλημα δημιουργηθεί σε οποιαδήποτε συσκευή, χρησιμοποιώντας τις παρακάτω οδηγίες.

Αφού επιλέξαμε τη ROM που θέλουμε να χρησιμοποιήσουμε και κατεβάσαμε το .zip της στον υπολογιστή μας, την αποσυμπιέζουμε σε ένα φάκελο. Εκεί μέσα θα βρούμε:
  • το φάκελο "META-INF"
  • το φάκελο "system"
  • και το αρχείο "boot.img"


Αυτό που μας ενδιαφέρει είναι ο φάκελος "system" και μέσα σε αυτόν βρίσκονται όλα τα αρχεία που θέλουμε να προσθέσουμε, να αφαιρέσουμε αλλά και οι ρυθμίσεις που θα βελτιώσουμε, οπότε αγνοούμε τα υπόλοιπα και δεν τα πειράζουμε.

Αρχικά θα πρέπει να αποφασίσουμε τι θέλουμε να κάνουμε στη ROM μας για να τη φέρουμε στα μέτρα μας. Έχουμε τη δυνατότητα:
  • να προσθέσουμε και να αφαιρέσουμε εφαρμογές, ήχους και γραμματοσειρές
  • να κάνουμε root
  • να δημιουργήσουμε το δικό μας theme
  • να κάνουμε κάποιες διορθώσεις ή βελτιώσεις
  • να δώσουμε όνομα στη ROM μας
  • και πολλά ακόμη

Βήμα πρώτο: Προσθαφαίρεση εφαρμογών
Αφού αποφασίσουμε ποιες εφαρμογές θέλουμε να περιέχει η ROM μας και ποιες όχι, πηγαίνουμε στη διαδρομή "system/app" και τις αφαιρούμε διαγράφοντας τα αντίστοιχα .apk μαζί με τα ομώνυμα .odex τους, αν υπάρχουν.


Για να προσθέσουμε μια εφαρμογή στη ROM μας θα πρέπει να βάλουμε το .apk της μέσα στο φάκελο "app", σε αυτή την περίπτωση όμως υπάρχει μια μικρή διαφορά. Οι εφαρμογές που περιέχει ο φάκελος αυτός, λειτουργούν με ανώτερα δικαιώματα από ότι αυτές που εγκαθιστούμε μόνοι μας με την κλασική μέθοδο. Πρέπει λοιπόν να αλλάξουμε τα δικαιώματα των εφαρμογών αυτών με τα σωστά. Αυτό γίνεται άμεσα με ένα τερματικό ή cmd (ανάλογα το λειτουργικό που χρησιμοποιούμε) μπαίνοντας στο φάκελο "app" και δίνοντας την εντολή "chmod 644 xxxxxx.apk".

Μπορούμε όμως να τα αλλάξουμε και αφού εγκαταστήσουμε τη ROM στη συσκευή μας. Μόλις ελέγξουμε ποιες εφαρμογές δε λειτουργούν, ανοίγουμε έναν file explorer όπως τον ES, πηγαίνουμε στη διαδρομή "system/app" της συσκευής μας, βρίσκουμε την εφαρμογή που θέλουμε και πατάμε παρατεταμένα πάνω στο εικονίδιό της, επιλέγουμε "Ιδιότητες", "Αλλαγή" και ρυθμίζουμε τις επιλογές μας όπως φαίνονται στην εικόνα παρακάτω. Μετά από μία επανεκκίνηση ξαναδοκιμάζουμε και αν ακόμα δε λειτουργούν θα πρέπει να τις αφαιρέσουμε.


Φυσικά θα αναρωτιέστε ποιες εφαρμογές μπορούμε να διαγράψουμε από τη ROM μας, χωρίς να έχουμε πρόβλημα. Παρακάτω σας παρουσιάζουμε μια λίστα με αυτές που έχουμε αφαιρέσει κατά καιρούς χωρίς να έχει συμβεί κάτι απρόοπτο (πάντα με επιφύλαξη).
Βrowser.apk
BrowserGoogle.apk
Books.apk
Calculator.apk
CarHomeGoogle.apk
Currents.apk
DCSStock.apk
DebugTool.apk
DMS.apk
DockMode.apk
DSPManager.apk
EmailGoogle.apk
EReader.apk
Flickr.apk
FriendStream.apk
GenieWidget.apk
GoogleEars.apk
GoogleEarth.apk
GoogleVoice.apk
GoogleQuickSearchBox.apk
HtcCarPanel.apk
HtcConnectedMedia.apk
HtcDirect.apk
HtcFacebook.apk
HtcFMRadio.apk
HtcGreader.apk
HtcHubSyncProvider.apk
HtcLivewallpaperStreak.apk
HtcMusic.apk
HtcMusicEnhancer.apk
HtcMusicMarkedItems.apk
HtcRecommends.apk
HtcRingtoneTrimmer.apk
HtcSoundRecorder.apk
HtcStreamPlayer.apk
HtcTwitter.apk
HTMLViewer.apk
HoloSpiralWallpaper.apk
JETCET_PRINT.apk
JETCET_PRINT_Resources.apk
LiveWallpapers.apk
LiveWallpapersPicker.apk
LMW.apk
Magazines.apk
MagicSmokeWallpapers.apk
Mail.apk
Mode10Wallpapers.apk
MyHTC.apk
NoiseField.apk
PhaseBeam.apk
Picasapryramid.apk
PolarisOffice.apk
QuickLookup.apk
SetupWizrd.apk
SoundRecorder.apk
SprintZoneNC.apk
Street.apk
TrimIt.apk
Velvet.apk
VideoEditorGoogle.apk
Videos.apk
VisualizationWallpapers.apk
VoiceDialer.apk
VpnServices.apk
Weather.apk
WeatherAgentService.apk
WeatherProvider.apk
WeatherSyncProvider.apk
WorldClock.apk
YouTube.apk
Συμβουλή: Για κάθε .apk που διαγράφετε, αφαιρέστε επίσης και το ανάλογο .odex αρχείο, αν υπάρχει, καθώς είναι πλέον άχρηστο.

Βήμα δεύτερο: Προσθαφαίρεση λοιπών αρχείων
Με τον ίδιο τρόπο αφαιρούμε και προσθέτουμε εικόνες, ήχους και άλλα αρχεία χωρίς την ιδιαιτερότητα των δικαιωμάτων. Στο φάκελο "media" υπάρχουν όλα όσα αφορούν τα πολυμέσα, έτσι λοιπόν:
  • στη διαδρομή "system/media/audio" θα βρείτε τα αρχεία ήχου χωρισμένα σε ήχους ρολογιού (alarms), ειδοποιήσεων (notifications), κλήσεων (ringtones) και συστήματος (ui),
  • στη διαδρομή "system/media/video" θα βρείτε μερικά βίντεο τα οποία δε χρησιμεύουν σε τίποτα ιδιαίτερο και μπορούν να διαγραφούν όλα,
  • ενώ οι γραμματοσειρές βρίσκονται στο φάκελο "fonts" και το bootanimation στο φάκελο "media" αλλά για αυτά θα μιλήσουμε σε επόμενο άρθρο με θέμα το Theming.



Συμβουλή: Μην ξεχάσετε να αφήσετε τουλάχιστον έναν ήχο σε κάθε κατηγορία για την ομαλή λειτουργία του συστήματος.

Στο επόμενο μέρος
Είδαμε λοιπόν πόσο εύκολο είναι να προσθέτουμε και να αφαιρούμε αρχεία και εφαρμογές στη ROM μας, είδαμε επίσης και την ιδιαιτερότητα με τα δικαιώματα (permissions) των εφαρμογών που βάζουμε στο system. Αφού τελειώσαμε με τις προσθήκες λοιπόν, στο επόμενο μέρος θα δούμε πώς μπορούμε να φτιάξουμε τα δικά μας εικονίδια και γενικότερα να δημιουργήσουμε το προσωπικό μας theme για τη ROM.

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

Υ.Γ. Περιμένουμε τις προτάσεις και τα σχόλιά σας για να ολοκληρώσουμε όσο πιο σφαιρικά μπορούμε αυτή τη σειρά άρθρων.

38 στο: "Δημιουργούμε τη δική μας ROM για όποια συσκευή θέλουμε με ελάχιστες γνώσεις! - Μέρος 1ο: Προσθαφαίρεση αρχείων"
  1. Πολυ σημαντικο αρθρο.Εαν ηταν σε χαρτι,θα το πλαστικοποιουσα και θα το εβαζα σε κορνιζα.

    ΑπάντησηΔιαγραφή
  2. Η μ@λ@κι@ ειναι πως μας αφησε με την ... στο χερι.Ποτε θα δουμε τη συνεχεια???

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Αα Χαχαχαχαχα θα συμφωνήσω σε όλα στο έπακρον!!! Ζημιά σε περίοδο εξεταστικής!!

      Υ. Γ. Καλή χρονιά με υγεία πάνω από όλα και περισσότερα άρθρα!!!

      Διαγραφή
    2. Χαχαχα, σύντομα θα έρθει το δεύτερο μέρος.

      Διαγραφή
  3. Απο που μπορω να βρω για το κινητο μου μια "καθαρη" ρομ σαν αυτες που φορανε τα Nexus...?!

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Θα ψάξεις στο XDA και γενικά στο Google για AOSP ROM που να αφορά τη συσκευή σου.

      Διαγραφή
    2. Βασικα το αρθρο σου ειναι ο τελειος οδηγος...!! Περιμενουμε με ανυπομονισια και τα επομενα σου αρθρα..! Θα ηθελα να πειραματιστω αλλα δεν πρεπει να εχει AOSP ROM για το (xperia x10 mini pro) με ενα ψαχτηρι που εκανα.. :P

      Διαγραφή
    3. Μπορείς να κατεβάσεις ότι ROM θέλεις για να πειραματιστεις. Προτείνω CyanogenMod που έχει για πολλές συσκευές και είναι και AOSP.

      Διαγραφή
  4. Να σαι καλα ειμαι πλεο ετιμος να φτιαξω την δικη μου custom rom

    ΑπάντησηΔιαγραφή
  5. Δοκιμάσα μια custom rom για το τηλεφωνο μου και εχει πρόβλημα με το bluetooth. Δηλαδή στις 15-20 προσπάθειες να συνδεθεί στο ακουστικο μία φορά. Υπάρχει δυνατότητα να αντιγραφεί κάποιο κομματι απο μια αλλη συμβατη ROM σε αυτή; (CM7 ειναι αυτή που δουλεύει ρολόϊ και CM 10.1 αυτή που εχει "πρόβλημα").

    Σε ευχαριστώ προκαταβολικά :)

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Αυτά τα προβλήματα ανήκουν στον πυρήνα Νικήτα. Ίσως αν βρεις και εγκαταστησεις έναν άλλο που λειτουργεί σωστά να σου λύσει το πρόβλημα.

      Διαγραφή
  6. Χρήστο δυστυχώς η "google swapped out 4.1's bluetooth stack for a totally different stack in 4.2. there's no way to mix and match". :)

    ΑπάντησηΔιαγραφή
  7. Δεν υπάρχει τρόπος για να διορθωθεί το πρόβλημα :(

    Η 4.2 έχει πρόβλημα που το έχει αναγνωρίσει η Google και ΘΑ το φτιάξει σε επόμενη εκδοση...

    ΑπάντησηΔιαγραφή
  8. Εγώ απορώ ρε παιδιά έχω το vero 9724 και θέλω να φτιάξω μια 4.2...

    Απο τί εξαρτάται αν η rom αναγνωρίσει την συσκευη μου γενικά την κάμερα τα ηχεια τα bluetooth και όλα τα άλλα; Μπορώ να πάρω το radio και όλα τα άλλα απο την 4.1.1 που έχει και να τα περάσω με κάποιο τρόπο;

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Όλοι οι driver περιέχονται στο boot.img. Σε μερικές συσκευές γίνεται και σε άλλες όχι να κάνεις compile την 4.2 και να βάλεις απλά το boot.img σου στο zip που θα φλασάρεις.

      Ψάξε στο google για το πώς να κάνεις port τη CynogenMod. Είναι ο πιο εύκολος δρόμος (αν μπορείς να τον πεις εύκολο).

      Διαγραφή
    2. Αυτό το σχόλιο αφαιρέθηκε από τον συντάκτη.

      Διαγραφή
    3. Και υπάρχει κανένας κίνδυνος αν πάρώ απλά απο μια παρόμοια συσκευή και τραβήξω το boot image και το ρίξω στην 4.2 απλά για να δοκιμάσω;

      Διαγραφή
  9. chris K ΣΕ ΠΑΡΑΚΑΛΩ SOS:ΦΛΑΣΑΡΑ ΚΑΤΙ ΡΥΘΜΙΣΕΙΣ ΣΤΟ XPERIA ΜΟΥ ΚΑΙ ΕΓΕΙΝΕ BRICK ΣΕ ΠΑΡΑΚΑΛΩ ΜΗΠΩς ΜΠΟΡΕΙς ΝΑ ΒΟΗΘΗΣΕΙς????ΗΗΗΗΗ ΠΕς ΜΟΥ ΕΑΝ ΤΟ ΠΑΩ ΣΤΟ ΜΑΓΑΖΙ ΠΟΥ ΤΟ ΠΗΡΑ ΦΤΙΑΧΝΕΤΑΙ???????ΠΑΡΑΚΑΛΩ ΑΠΑΝΤΗΣΕ ΑΜΕΣΑ.ΕΥΧΑΡΙΣΤΩ

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Πρέπει να κάνεις backup πριν φλασάρεις οτιδήποτε. Αν μπορούν να στο φτιάξουν στο κατάστημα, θα στο πουν αυτοί.

      Διαγραφή
  10. Καλησπέρα chris πως μπορώ να αφαιρέσω από μια εφαρμογή της διαφημίσεις. Έχω το adaway αλλά δεν λειτουργεί η εφαρμογή όταν είναι ενεργοποιημένο.

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Γεια σου Τάσο. Στο δεύτερο μέρος λέει πως θα το κάνεις.

      Διαγραφή
    2. Περίμενα ότι θα με παραπέμψεις σε άρθο για τα apk και δεν κοίταξα :-)

      Διαγραφή
  11. μπορείς να πάρεις την custom rom απο άλλο ταβλετ με ίδια βασικά χαρακτηριστικά ,soc, οθόνη , κτλ και τον kernel του δικού σου tablet και να την κάνεις να δουλέψει σωστά και χωρίς να μπρικάρει :P ?? ή ζητάω πολλά ??

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Γίνεται σε κάποιες περιπτώσεις. Δεν είναι τόσο απλό αλλά γίνεται.

      Διαγραφή
  12. chris K εχω το xperia x10 mini,εχω δοκιμασει παρα πολλους οδηγους για να κανω porting μια pac-rom και σαν base rom την τελευταια nightly του nAa που ειναι η πιο δυνατη. Παντα κολλαει η συσκευη στο boot animation.Μπορεις σε παρακαλω να με βοηθησεις? Σου εστειλα να με κανεις add στο skype γιατι θελω να σου πω καποια πικαντικα νεα σχετικα με τα wifi και τα android.

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Φίλε δεν μπορώ να σε βοηθήσω σε αυτό. Κάποια πράγματα απλά δε γίνονται. Δεν είναι εύκολο το port.

      Όσο για το Skype, δεν το χρησιμοποιώ.

      Διαγραφή
  13. Σε περίπτωση που το Tablet είναι κινέζικο τι γίνεται; Δεν υπάρχει ποικιλία απο Rom. Η μόνη λύση είναι αν επικοινωνήσω με την εταιρία, άλλα και πάλι δεν ξέρω άμα το πάρω σίγουρα.

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Έχω μιλήσει πολλές φορές με τους εκάστοτε πωλητές και τις περισσότερες φορές με εξυπηρέτησαν. Μίλα μαζί του.

      Διαγραφή
    2. Μην το λες. Εξαρτάται την εταιρία πάντα. Εγώ μίλησα με κάνα δύο (για δοκιμή) και μερικές απάντησαν.

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

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

      Διαγραφή
  14. H εντολη "chmod 644 xxxxxx.apk" ειναι μονο για linux..?! Για Windows 8.1 ποια ειναι η αντιστοιχη...?!

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

      Διαγραφή
  15. Doctor πως κανουμε port ενα app για android 2.3.7

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Θα σε γελάσω. Δεν έχω ασχοληθεί και πολύ με app porting.

      Διαγραφή