.

Δημιουργούμε τη δική μας ROM για όποια συσκευή θέλουμε με ελάχιστες γνώσεις! Μέρος 4ο: Εγκατάσταση & αναβαθμίσεις


 

Φτάσαμε λοιπόν στο τελευταίο βήμα της κατασκευής μιας ROM και το μόνο που μας μένει είναι να πακετάρουμε τους φακέλους της σε ένα .zip αρχείο το οποίο και θα εγκαθίσταται μέσω της κονσόλας recovery.

Μη χάσετε τα προηγούμενα μέρη της σειράς με θέμα:

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

Η δομή του .zip
Το αρχείο .zip που θα δημιουργήσουμε πρέπει να περιλαμβάνει πολύ συγκεκριμένα πράγματα αν θέλουμε η εγκατάσταση να γίνει με επιτυχία. Ξεκινώντας από τη δομή του, μέσα στο .zip θα πρέπει να έχουμε οπωσδήποτε τους φακέλους / αρχεία:
  • META-INF
  • system
  • boot.img

Αυτά είναι μόνο τα απαραίτητα καθώς στην πραγματικότητα, μπορούμε να βάλουμε ότι θέλουμε μέσα στο .zip και να το εγκαταστήσουμε, αρκεί να ενημερώσουμε το αρχείο που δίνει τις οδηγίες εγκατάστασης στη recovery. Το system το αναλύσαμε εκτενέστατα στα προηγούμενα άρθρα, το boot.img περιέχει απλά τον πυρήνα της ROM, άρα τι μας μένει; Το "META-INF".

Φάκελος META-INF
Ο φάκελος "META-INF" περιέχει αρχεία πληροφοριών τα οποία δεν εγκαθίστανται στη συσκευή μας. Τις πληροφορίες αυτές "διαβάζει" η recovery κατά την εγκατάσταση και εκτελεί αναλόγως. Για να το πούμε πιο απλά, ότι βλέπετε να αναγράφεται στη recovery την ώρα της εγκατάστασης, περιέχεται στο αρχείο "updater-script".

Για παράδειγμα αν το script γράφει με τη σειρά:
  • κάνε mount το system partition
  • διέγραψε τα περιεχόμενά του
  • εγκατάστησε στη θέση του τα περιεχόμενα του φακέλου system που είναι στο zip
  • κάνε unmount
  • κάνε επανεκκίνηση

τότε η recovery θα εκτελέσει με τη σειρά όλα τα παραπάνω βήματα.


Μάλιστα ακόμα και η μπάρα ολοκλήρωσης που βλέπουμε να γεμίζει στην οθόνη μας, έρχεται από το ίδιο αρχείο. Με αυτό τον τρόπο μπορούμε να εγκαταστήσουμε εφαρμογές, βιβλιοθήκες και άλλα αρχεία σε όποιο partition θέλουμε, όπως επίσης να τρέξουμε και άλλα script!

Ας πούμε ότι εκτός από τις εφαρμογές συστήματος (system), θέλουμε η ROM μας να περιέχει και κάποιες επιπλέον εφαρμογές στο data partition, τις οποίες αν θέλει ο χρήστης θα έχει τη δυνατότητα να τις απεγκαταστήσει χωρίς να χρειαστεί να κάνει root. Το μόνο που χρειάζεται είναι:
  • Να δημιουργήσουμε ένα φάκελο με ονομασία "data" μέσα στο .zip μας και να βάλουμε μέσα του τα .apk που θέλουμε
  • Να ενημερώσουμε μέσω του "updater-script" τη recovery, να κάνει mount το data partition και μετά copy τα περιεχόμενα του φακέλου "data", στη ίδια διαδρομή.

Παραδείγματα εντολών
Παρακάτω θα δούμε μερικές χρήσιμες εντολές που μπορούμε να χρησιμοποιήσουμε στο "updater-script". Ανοίξτε το αρχείο με τον επεξεργαστή κειμένου σας (στα Windows με Notepad++), ρίξτε μια ματιά και προσπαθήστε να εντοπίσετε μερικές από τις παρακάτω εντολές:

1. Για να κάνουμε format σε ένα partition δίνουμε
format <το όνoμα του partition>

Παράδειγμα στο system partition
format SYSTEM:

2. Για να αντιγράψουμε στη συσκευή τα περιεχόμενα ενός φακέλου δίνουμε
copy_dir <το φάκελο που θέλουμε> <το φάκελο προορισμού>

Παράδειγμα τα περιεχόμενα του system φακέλου στο system partition
copy_dir PACKAGE:system SYSTEM:

3. Για να διαγράψουμε ένα αρχείο δίνουμε
delete <τη διαδρομή του αρχείου>

Παράδειγμα την εφαρμογή Books από το system partition
delete SYSTEM:app/Books.apk

4. Για να διαγράψουμε ένα φάκελο δίνουμε
delete_recursive <τη διαδρομή του φακέλου>

Παράδειγμα τo φάκελο "app" από το data partition
delete DATA:app

5. Για να τρέξουμε ένα script το οποίο έχουμε βάλει στο .zip μας δίνουμε
run_program <το όνομα του αρχείου>

Παράδειγμα για να τρέξουμε το script "install_initd.sh" το οποίο ενεργοποιεί το init.d support δίνουμε
run_program <PACKAGE:install_initd.sh>

Σημείωση: Θα προσέξατε ότι τα partition τα γράφουμε με κεφαλαία, ενώ τους φακέλους με μικρά. Προσοχή όμως γιατί το "updater-script" όπως και όλα τα script, λειτουργεί σαν τερματικό, είναι δηλαδή case sensitive. Όταν δε, αναφερόμαστε σε αρχεία και όχι σε φακέλους, βάζουμε μπροστά τη λέξη "PACKAGE".

Update.zip
Με τη βοήθεια του "updater-script" και των εντολών του, μπορούμε να φτιάξουμε τα δικά μας "update.zip" για να κάνουμε αλλαγές σε μία ROM την οποία έχουμε ήδη φλασάρει στη συσκευή μας (όπως ακριβώς κάνουν οι εταιρίες και η ίδια η Google με το Gapps.zip). Η διαφορά των zip αναβαθμίσεων (update.zip) με τα zip αρχεία των ROM είναι ότι περιέχουν μόνο αλλαγές και όχι ολόκληρο το λειτουργικό σύστημα.

Για παράδειγμα αν θέλουμε να βγάλουμε μία αναβάθμιση για τη ROM μας στην οποία θέλουμε να προσθέσουμε μια νέα εφαρμογή συστήματος θα χρειαστούμε απλά το φάκελο "system" με το .apk που θέλουμε να προσθέσουμε, το φάκελο "ΜΕΤΑ-INF" με τις ανάλογες εντολές στο "updater-script" και είμαστε έτοιμοι για φλασάρισμα.

Μπορούμε επίσης να διορθώσουμε κάτι που κάναμε λάθος στην αρχική μας ROM. Για παράδειγμα στο παρελθόν μου έχει τύχει να διαγράψω το launcher της συσκευής μου. Αφού δημιούργησα ένα "update.zip" με τον παραπάνω τρόπο προσθέτοντας μόνο το "launcher.apk" στο "system", το φλάσαρα και κατάφερα να επαναφέρω τη συσκευή μου. Οι λειτουργίες είναι πραγματικά απεριόριστες.


Sign
Όπως τα .apk έτσι και το .zip αρχείο της ROM μας πρέπει να υπογραφεί κατάλληλα για να περάσει τον έλεγχο ασφαλείας στη recovery. Αυτό γίνεται μέσω του APK Tool με τον ίδιο τρόπο που είδαμε στο προηγούμενο μέρος, δίνοντας την εντολή:
java -jar signapk.jar certificate.pem key.pk8 <το όνομα του αρχικού zip> <το όνομα του τελικού zip>
Για παράδειγμα, κάνουμε sign το "update.zip" και ονομάζουμε το τελικό αρχείο, "update-signed.zip" δίνοντας
java -jar signapk.jar certificate.pem key.pk8 update.zip update-signed.zip

Προσωπικά χρησιμοποιώ το πρόγραμμα Αutosigner στα Windows και με έχει βγάλει ασπροπρόσωπο.

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

THE END, κλαψ, σνιαρφ και τα λοιπά.

Υ.Γ. Ένα μεγάλο ευχαριστώ στο XDA Developers και στη Google, που χωρίς τη βοήθειά τους δε θα μπορούσαμε να γράψουμε αυτή τη σειρά.

 
© 2012-2015 Dr. Android | Original theme design by Main-Blogger - Blogger Template and Blogging Stuff | Material design by Chris K.