Πώς τα διαμερίσματα A/B και οι απρόσκοπτες ενημερώσεις επηρεάζουν την προσαρμοσμένη ανάπτυξη στο XDA

Μπορεί να έχετε ακούσει για τις Απρόσκοπτες ενημερώσεις στο παρελθόν. Περιλαμβάνει κάτι που ονομάζεται "Διαμερίσματα A/B". Τι είναι και πώς επηρεάζει την προσαρμοσμένη ανάπτυξη στο XDA;

Όταν κυκλοφόρησε το Android Nougat, μας έκανε να μιλήσουμε κάθε είδους νέα χαρακτηριστικά. Έχουμε μια πρόσφατα ενημερωμένη διεπαφή χρήστη για αρχάριους μαζί με τις πολυαναμενόμενες δυνατότητες πολλαπλών παραθύρων και την υποστήριξη Vulkan Graphics API. Αλλά μια προσθήκη κάτω από την κουκούλα πέταξε πάνω από τα κεφάλια των περισσότερων χρηστών. Το Android Nougat παρουσίασε τις "Seamless Updates" σε συσκευές που υποστηρίζουν κατατμήσεις A/B. Η συντριπτική πλειονότητα των υπαρχουσών συσκευών Android (εξαιρουμένων των νέων Google Pixel και Google Pixel XL) δεν διέθεταν διαμερίσματα A/B εκείνη τη στιγμή και επομένως δεν μπορούσαν να εκμεταλλευτούν τις απρόσκοπτες ενημερώσεις. Η βασική προϋπόθεση αυτής της δυνατότητας είναι ότι η συσκευή διαθέτει ένα δεύτερο σύνολο συστήματος, εκκίνησης, προμηθευτή και άλλων σημαντικών κατατμήσεων και όταν λαμβάνετε ένα OTA Η ενημέρωση της ενημέρωσης πραγματοποιείται στο παρασκήνιο, ενώ το δεύτερο σύνολο κατατμήσεων διορθώνεται, το οποίο σας επιτρέπει να κάνετε επανεκκίνηση σε μια ενημερωμένη έκδοση λογισμικού χωρίς προβλήματα. Εάν μια ενημέρωση αποτύχει, θα επιστρέψετε σε μια λειτουργική κατασκευή, που σημαίνει ότι οι εταιρείες θα έχουν λιγότερους πονοκεφάλους να αντιμετωπίσουν και οι καταναλωτές θα προστατεύονται καλύτερα.

Η υποστήριξη απρόσκοπτων ενημερώσεων δεν είναι απαίτηση για καμία νέα συσκευή Android, σε αντίθεση με το Project Treble. Ως εκ τούτου, η συντριπτική πλειοψηφία των νέων συσκευών Android δεν υποστηρίζει τη λειτουργία. Διατηρούμε μια λίστα με όλες τις υποστηριζόμενες συσκευές μέχρι στιγμής, και είναι σαφές ότι αυτή η δυνατότητα δεν υποστηρίζεται ευρέως. Αυτό είναι κρίμα γιατί τα διαμερίσματα A/B αποφέρουν πολλά οφέλη τόσο για τους τακτικούς χρήστες όσο και για τους ισχύοντες χρήστες. Ωστόσο, το χαρακτηριστικό έχει λίγο κακή φήμη στην κοινότητα των ενθουσιωδών, επειδή θεωρείται ότι δυσκολεύει την ανάπτυξη Android και τις προσαρμοσμένες τροποποιήσεις που αναβοσβήνουν. Αυτό στην πραγματικότητα δεν συμβαίνει, γι' αυτό θέλαμε να απομυθοποιήσουμε τις απρόσκοπτες ενημερώσεις και να εξηγήσουμε πώς τα διαμερίσματα A/B επηρεάζουν την προσαρμοσμένη ανάπτυξη στο XDA.

Ευχαριστώ πολύ το ανώτερο μέλος του XDA npjohnson, ένα Συνεισφέρων σε LineageOS και συντηρητής του Motorola Moto Z2 Force, που μας βοήθησε να ελέγξουμε αυτό το άρθρο.


Κατατμήσεις σε συσκευή Android

Ένα διαμέρισμα είναι απλώς ένα διακριτό τμήμα στην εσωτερική αποθήκευση του τηλεφώνου όπου διατηρούνται τα δεδομένα. Το είδος των δεδομένων που διατηρείται σε κάθε διαμέρισμα εξαρτάται από το υλικό, το λειτουργικό σύστημα και πολλούς άλλους παράγοντες. Ο bootloader θα έχει ένα, το σύστημα (Android OS) θα έχει ένα, τα δεδομένα χρήστη θα έχουν ένα... Και ούτω καθεξής και ούτω καθεξής. Όταν βλέπετε άτομα να μιλούν για "/system" και "/cache", αναφέρονται στα ονόματα αυτών των κατατμήσεων. Το OnePlus 6, για παράδειγμα, έχει 72 χωρίσματα. Αυτό ακούγεται πολύ, αλλά το OnePlus 6 είναι μία από τις συσκευές που υποστηρίζουν απρόσκοπτες ενημερώσεις, πράγμα που σημαίνει ότι πολλά από αυτά τα διαμερίσματα είναι απλώς αντίγραφα μεταξύ τους.

Μερική έξοδος των κατατμήσεων στο OnePlus 6. Ορισμένα διαμερίσματα A/B είναι υπογραμμισμένα για λόγους επίδειξης.

Υπάρχουν πολλά διαμερίσματα σε μια συσκευή για τα οποία δεν θα χρειαστεί ποτέ να ανησυχείτε ως χρήστης. Πολλά από αυτά τα διαμερίσματα δεν τροποποιούνται ποτέ όταν αναβοσβήνουν προσαρμοσμένες ROM, πυρήνες, ανακτήσεις ή τροποποιήσεις όπως το Magisk ή το Xposed. Πολλά από αυτά τα διαμερίσματα είτε δεν θα χρησιμοποιηθούν για τους σκοπούς μας είτε είναι πολύ επικίνδυνα για να τα αγγίξετε, εκτός αν γνωρίζετε τι κάνετε (XLOADER και OEMINFO στο Huawei/Honor συσκευές έρχονται στο μυαλό.) Για τη συντριπτική πλειοψηφία των χρηστών Android, τα διαμερίσματα με τα οποία ασχολούμαστε κυρίως είναι σύστημα, εκκίνηση, ανάκτηση, δεδομένα χρήστη και πιο πρόσφατα προμηθευτής και vbmeta. Ακολουθεί μια σύντομη εξήγηση του σκοπού κάθε διαμερίσματος:

  • σύστημα - κρατά το λειτουργικό σύστημα Android, τις βιβλιοθήκες συστήματος, τις εφαρμογές συστήματος και άλλα μέσα συστήματος, όπως bootanimations, stock wallpapers, ήχους κλήσης κ.λπ.
  • εκκίνηση - κρατά τον πυρήνα, το ramdisk και σε συσκευές A/B επίσης την ανάκτηση
  • ανάκτηση - κρατά την ανάκτηση, όπου το TWRP αναβοσβήνει πιο συχνά σε συσκευές μόνο A (οι συσκευές A/B δεν διαθέτουν αποκλειστικό διαμέρισμα ανάκτησης)
  • userdata - κρατά όλα τα δεδομένα της εφαρμογής, του συστήματος και του εσωτερικού χώρου αποθήκευσης
  • προμηθευτής - κατέχει HAL για την πλατφόρμα και τη συσκευή, τα αρχεία που είναι απαραίτητα για την επικοινωνία του λειτουργικού συστήματος Android με το υποκείμενο υλικό
  • vbmeta - το διαμέρισμα για το Android Verified Boot 2.0 που επαληθεύει την ακεραιότητα της διαδικασίας εκκίνησης

Οι OEM συσκευών μπορούν να αλλάξουν τα σχήματα διαμερισμάτων τους για να χρησιμοποιούν όποια διάταξη θέλουν. Για παράδειγμα, η Huawei χωρίζει το διαμέρισμα εκκίνησης σε ramdisk_recovery και πυρήνα. Υπάρχουν επίσης πολλά επιπλέον διαμερίσματα που μπορεί να περιέχουν άλλες εφαρμογές συστήματος όπως cust, product και oem, και ενώ Αυτά είναι ασφαλή για τροποποίηση, γενικά δεν συνιστάται εάν θέλετε να διευκολύνετε τον εαυτό σας να επιστρέψει στο απόθεμα. Πού παίζουν λοιπόν ρόλο τα διαμερίσματα A/B;


Το Σχέδιο Διαμέρισης Α/Β

Πώς λειτουργούν οι ενημερώσεις σε συσκευές με απρόσκοπτες ενημερώσεις

Η πολύ απλή εικόνα που έφτιαξα παρακάτω δείχνει πώς γίνεται ο χειρισμός μιας ενημέρωσης σε μια συσκευή με υποστήριξη διαμερισμάτων A/B. Το διαμέρισμα που απεικονίζεται είναι το διαμέρισμα συστήματος, αν και άλλα διαμερίσματα όπως η εκκίνηση και ο προμηθευτής μπορούν επίσης να ενημερωθούν με οποιαδήποτε δεδομένη ενημέρωση OTA από έναν OEM. Αυτή η διαδικασία ενημέρωσης πραγματοποιείται όχι μόνο με σημαντικές ενημερώσεις έκδοσης Android αλλά και με ενημερώσεις ενημερώσεων κώδικα ασφαλείας.

  1. Ξεκινάμε με δύο διαμερίσματα συστήματος, system_a και system_b, και τα δύο στην ίδια έκδοση του Android.
  2. Υποθέτοντας ότι το system_a είναι ενεργό, η ενημέρωση OTA θα επιδιορθώσει το system_b, το ανενεργό διαμέρισμα, στο παρασκήνιο.
  3. Το system_a ορίζεται σε ανενεργό και το system_b στη συνέχεια γίνεται ενεργό μόλις ο χρήστης κάνει επανεκκίνηση.
  4. Το πλέον ανενεργό διαμέρισμα, system_a, θα ενημερωθεί όταν κυκλοφορήσει η επόμενη ενημέρωση OTA.

Ποια είναι τα οφέλη αυτής της διαδικασίας ενημέρωσης;

  1. Εάν αποτύχει μια ενημέρωση, η συσκευή θα επιστρέψει στο λειτουργικό build στην άλλη υποδοχή.
  2. Τα δεδομένα σας διατηρούνται απολύτως άθικτα, ακόμη και αν η ενημέρωση έχει ολοκληρωθεί, καθώς υπάρχει μόνο ένα διαμέρισμα (userdata) που φιλοξενεί τα δεδομένα σας.
  3. Ενημέρωση ροής: Εάν το διαμέρισμα δεδομένων σας είναι πλήρες, τότε η ενημέρωση μπορεί να ληφθεί και να μεταδοθεί σε ροή στην ανενεργή υποδοχή. Είναι μια αρκετά προσεγμένη λειτουργία και σημαίνει ότι δεν χρειάζεται να σπαταλάτε προσωρινό χώρο αποθήκευσης για τις ενημερώσεις σας. Γι' αυτό δεν υπάρχει διαμέρισμα προσωρινής μνήμης στις συσκευές A/B καθώς δεν χρειάζονται πλέον.

Τι αντίκτυπο έχει το σχήμα διαμερισμάτων A/B στην αποθήκευση μιας συσκευής;

Το γεγονός ότι οι απρόσκοπτες ενημερώσεις έχουν ως αποτέλεσμα ένα σωρό διπλότυπα διαμερίσματα σημαίνει ότι χάνετε ένα σωρό αποθηκευτικό χώρο; Καθόλου. Η Google λέει ότι οι συσκευές με υποστήριξη απρόσκοπτης ενημέρωσης θα πρέπει να έχουν μειωθεί μόνο μερικές εκατοντάδες Megabyte χάρη στην κατάργηση των κατατμήσεων /cache και /recovery. Η κατάργηση και των δύο εξισορροπεί το κόστος της προσθήκης ενός δεύτερου συνόλου κατατμήσεων. Σύμφωνα με την Google, η εικόνα συστήματος A/B του Pixel έχει το μισό μέγεθος της εικόνας συστήματος μόνο A. Το μεγαλύτερο μέρος της πρόσθετης χρήσης αποθήκευσης προέρχεται στην πραγματικότητα από την προσθήκη ενός δεύτερου διαμερίσματος προμηθευτή. Αυτό είναι λογικό καθώς το διαμέρισμα προμηθευτή φιλοξενεί όλα τα ιδιόκτητα δυαδικά αρχεία που χρησιμοποιούνται από τους OEM (μέρος του Project Treble), επομένως αναμένεται να καταλαμβάνει αρκετό χώρο. Παρόλο που η Google δεν συνιστά την ύπαρξη διαμερισμάτων A/B σε συσκευές με 4 GB αποθηκευτικού χώρου (καθώς είναι σχεδόν το 10% του συνολικού διαθέσιμου αποθηκευτικού χώρου), το προτείνει σε συσκευές με 8 GB και άνω.

Ακολουθεί μια ανάλυση του αποθηκευτικού χώρου που χρησιμοποιείται σε ένα Google Pixel με και χωρίς διαμερίσματα A/B.

Μεγέθη χωρισμάτων

A/B

Α-μόνο

Bootloader

50MB*2

50 MB

Μπότα

32MB*2

32 MB

Ανάκτηση

32 MB

Κρύπτη

100 MB

Ραδιόφωνο

70MB*2

70 MB

Προμηθευτή

300MB*2

300MB

Σύστημα

2048MB*2

4096 MB

Σύνολο

5000MB

4680 MB

Τι έγινε με το διαμέρισμα ανάκτησης;

Ο υποκείμενος πυρήνας Linux σε συσκευές Android είναι αυτός που επιτρέπει στο Android να αναγνωρίζει και να χρησιμοποιεί σωστά το υλικό σε ένα smartphone. Σε συσκευές Android μόνο με A, έχετε γενικά δύο εκδόσεις του πυρήνα: Η μία είναι συσκευασμένη μέσα στο διαμέρισμα ανάκτησης ενώ η άλλη στο διαμέρισμα εκκίνησης. Σε συσκευές A/B που υποστηρίζουν απρόσκοπτες ενημερώσεις, η ανάκτηση βρίσκεται πλέον μέσα στην εικόνα εκκίνησης μαζί με τον πυρήνα. Η κύρια λειτουργία της ανάκτησης ήταν η εγκατάσταση ενημερώσεων, αλλά δεδομένου ότι αυτό γίνεται από το ίδιο το σύστημα (update_engine) κατά την εκκίνηση του Android, το ειδικό διαμέρισμα ανάκτησης δεν χρειάζεται πλέον.

Για να εγκαταστήσουμε μια προσαρμοσμένη ανάκτηση σε συσκευές A/B, πρέπει επομένως να τροποποιήσουμε το διαμέρισμα εκκίνησης και να αντικαταστήσουμε την ανάκτηση αποθεμάτων με τη δική μας. Αυτός είναι ο λόγος για τον οποίο για να εγκαταστήσετε το TWRP πρέπει να χρησιμοποιήσετε μια εντολή fastboot για να εκκινήσετε πρώτα μια προσαρμοσμένη εικόνα εκκίνησης και έπειτα αναβοσβήνουν το σενάριο εγκατάστασης TWRP, καθώς το fastboot δεν μπορεί να επιδιορθώσει τα διαμερίσματα—μόνο αναβοσβήνει εξ ολοκλήρου από πάνω τους. Θα μπορούσατε τεχνικά να επιδιορθώσετε εκ των προτέρων την υπάρχουσα εικόνα εκκίνησης σας με το TWRP και στη συνέχεια να την αναβοσβήσετε μέσω fastboot, αλλά αυτό είναι μεγαλύτερο πρόβλημα από ό, τι αξίζει. Το σενάριο εγκατάστασης TWRP διορθώνει τόσο τα διαμερίσματα boot_a όσο και boot_b για να εγκαταστήσετε το TWRP.

Διασκεδαστικό γεγονός: Το Android update_engine που χειρίζεται απρόσκοπτες ενημερώσεις ουσιαστικά αφαιρείται απευθείας από το Chrome OS. Μόνο πρόσφατα Οι συμβολοσειρές που περιείχαν το "Chrome OS" αφαιρέθηκαν από το αρχείο καταγραφής του update_engine για να αποφευχθεί η σύγχυση για οποιονδήποτε τυχαίνει να ελέγξει το logcat.

Το smartphone Android μου υποστηρίζει διαμερίσματα A/B για απρόσκοπτες ενημερώσεις;

Ενώ εμείς κρατήστε μια λίστα με όλες τις συσκευές που το υποστηρίζουν, μπορείτε επίσης εύκολα να ελέγξετε τον εαυτό σας.


Πώς επηρεάζουν οι απρόσκοπτες ενημερώσεις την προσαρμοσμένη ανάπτυξη;

Αντίληψη χρήστη για κατατμήσεις A/B

Θεωρούνται εμπόδιο στην ανάπτυξη προσαρμοσμένου λογισμικού από πολλούς χρήστες, οι απρόσκοπτες ενημερώσεις είναι στην πραγματικότητα ένα όφελος για τους προγραμματιστές. Ο λόγος που οι συσκευές A/B θεωρούνται ότι έχουν κακή υποστήριξη ανάπτυξης οφείλεται στην τιμή των πρώτων συσκευών A/B. Εξάλλου, οι συσκευές Google Pixel ήταν μερικές από τις πρώτες που υποστήριξαν απρόσκοπτες ενημερώσεις και σε σύγκριση με τα smartphone Nexus του παρελθόντος ήταν σχετικά ακριβές. Επιπλέον, χάρη στις μυριάδες βελτιώσεις που έχει κάνει η Google στο λειτουργικό σύστημα Android, το οποίο έχει δημιουργήσει προσαρμοσμένες ROM και τροποποιήσεις λιγότερο δημοφιλείς στις συσκευές Google, τα smartphone Google Pixel δεν απογειώθηκαν στα φόρουμ μας σχεδόν όπως το Nexus smartphones. Ένας συνδυασμός εξωτερικών παραγόντων οδήγησε σε μείωση της προσαρμοσμένης ανάπτυξης στα smartphone Google Pixel, αν και οι περισσότεροι χρήστες επέλεξαν να κατηγορήσουν την υποστήριξη διαμερισμάτων A/B. Συγκρίνετε τη διαθεσιμότητα προσαρμοσμένης ανάπτυξης σε συσκευές όπως το Google Pixel με συσκευές όπως το Xiaomi Mi A1 στα φόρουμ μας.

Επιπλέον, η έλλειψη κατανόησης του τρόπου με τον οποίο τα διαμερίσματα A/B άλλαξαν τον τρόπο με τον οποίο οι χρήστες πρέπει να εγκαταστήσουν προσαρμοσμένες ROM, πυρήνες, ανακτήσεις και τροποποιήσεις οδήγησαν στο να μην είναι δημοφιλής η υποστήριξη διαμερισμάτων A/B. Με την ανάκτηση να υφίσταται πλέον μέσα στην εικόνα εκκίνησης, οι τροποποιήσεις που αναβοσβήνουν με λάθος σειρά, όπως το Magisk ή το Xposed, μπορεί να προκαλέσουν διενέξεις και να οδηγήσουν σε bootloop. Η σειρά με την οποία θα αναβοσβήσετε αυτά τα mods μπορεί να είναι σημαντική, αν και στην περίπτωση των προσαρμοσμένων ROM δεν χρειάζεται να ανησυχείτε για την υποδοχή στην οποία αναβοσβήνετε. Σε αντίθεση με την κοινή πεποίθηση, το σενάριο εγκατάστασης για τις περισσότερες προσαρμοσμένες ROM δεν αναβοσβήνει και στις δύο υποδοχές. Ως επί το πλείστον δεν χρειάζεται να ανησυχείτε για αυτό, καθώς δεν χρειάζεται να αλλάζετε κουλοχέρηδες χειροκίνητα.

Πώς οι προγραμματιστές βλέπουν τα διαμερίσματα A/B

Κατά την κατασκευή μιας ROM, οι προγραμματιστές μπορούν να χρησιμοποιήσουν και τις δύο κατατμήσεις για να δοκιμάσουν ξεχωριστές εκδόσεις. Εάν κάποιο δεν λειτουργεί, μπορούν απλώς να επιστρέψουν στο διαμέρισμα εργασίας και να δημιουργήσουν ξανά τη ROM τους. Οι προγραμματιστές μπορούν επίσης να ελέγξουν για παλινδρομήσεις εγκαθιστώντας απλώς μια ενημέρωση, αλλάζοντας το ενεργό διαμέρισμα και συγκρίνοντας τα δύο χωρίς να χρειάζεται να σκουπίσουν δεδομένα. Δείτε πώς βλέπει η ομάδα LineageOS την υποστήριξη διαμερισμάτων A/B:

«Πολλοί στην κοινότητα του Android έχουν χαρακτηρίσει το A/B ως «δύσκολο στην υποστήριξη» και «μη φιλικό προς τους προγραμματιστές», ενώ στην πραγματικότητα έχει εφαρμοστεί σωστά ευκολότερη υποστήριξη και εξίσου φιλικό προς τους προγραμματιστές." - jrizzoli, LineageOS Changelog 19

Η αρχική δυσκολία με την υποστήριξη A/B για προγραμματιστές προήλθε από την τροποποίηση των υπαρχόντων εργαλείων τους για την υποστήριξη αυτών των συσκευών. Ο προγραμματιστής του Magisk, topjohnwu, πρόσθεσε επίσημη υποστήριξη για το Google Pixel ένα χρόνο μετά κυκλοφόρησε—όχι επειδή ήταν δύσκολο, αλλά επειδή του πήρε ένα χρόνο για να αποκτήσει πραγματικά τη συσκευή εργάζομαι πάνω σε. Υποστήριξη TWRP ήρθε αρκετά γρήγορα σε συσκευές A/B αφού ο κύριος προγραμματιστής, Dees_Troy, έκανε μια ρήξη. LineageOS 15.1 τώρα υποστηρίζει Συσκευές A/B αφού εθελοντές βρήκαν χρόνο να διορθώσουν το σενάριο addon.d.

Πώς να ενημερώσετε μια συσκευή A/B που διαθέτει προσαρμοσμένη ανάκτηση, πυρήνα ή άλλα mods

Προσαρμοσμένες ROM

Το να αναβοσβήνει ενημερώσεις σε μια συσκευή με προσαρμοσμένη ROM σημαίνει ότι θα πρέπει να είστε προσεκτικοί σε ποια υποδοχή αναβοσβήνει, σωστά; ΟΧΙ ακριβως. Το TWRP θα χειριστεί πραγματικά πολλά από αυτά για εσάς και έχει ως προεπιλογή την ανενεργή υποδοχή για να αναβοσβήνει μια προσαρμοσμένη ROM. Εάν η ενεργή υποδοχή σας είναι A και αναβοσβήνει μια προσαρμοσμένη ROM, στην πραγματικότητα αναβοσβήνει στην υποδοχή Β. Όταν κάνετε επανεκκίνηση, η ενεργή υποδοχή είναι πλέον B. Οι προγραμματιστές μπορούν να τροποποιήσουν το σενάριο εγκατάστασης και το flash και στις δύο υποδοχές για να διευκολύνουν τον τελικό χρήστη, αν και τα περισσότερα σενάρια εγκατάστασης προσαρμοσμένης ROM προς το παρόν αναβοσβήνουν μόνο σε μία μόνο υποδοχή. Τέλος, οι προσαρμοσμένες ROM μπορούν να εφαρμόσουν ένα πρόγραμμα ενημέρωσης A/B στη ROM τους, έτσι ώστε οι χρήστες να μην χρειάζεται καν να μπλέξουν με ενημερώσεις που αναβοσβήνουν με μη αυτόματο τρόπο—το πιο πρόσφατο LineageOS 15.1 περιλαμβάνει ένα εργαλείο Lineage Updater και XDA Senior Member ΗΠΑ-RedDragon έκανε μια γενικό πρόγραμμα ενημέρωσης A/B που μπορούν να χρησιμοποιήσουν άλλοι προγραμματιστές.

Stock ROM

Αλλά δεν είναι προβληματικό εάν η συσκευή σας τρέχει την stock ROM με διάφορες τροποποιήσεις και θέλετε να εγκαταστήσετε μια ενημέρωση χωρίς να χάσετε όλα αυτά τα mod; Μπορεί να συμβαίνει εάν δεν γνωρίζετε τα σωστά βήματα για να εγκαταστήσετε μια ενημέρωση. Στο OnePlus 6, για παράδειγμα, δεν μπορείτε να αναβοσβήσετε ένα αυξητικό OTA στην τροποποιημένη συσκευή σας, επειδή το αυξητικό OTA θα προσπαθήσει να επιδιορθώσει την τροποποιημένη εικόνα εκκίνησης. Έτσι, πιθανότατα θα καταλήξετε με bootloop και γι' αυτό πρέπει να κάνετε flash την πλήρη ενημέρωση ROM για να αντικαταστήσετε πλήρως την τροποποιημένη εικόνα εκκίνησης. Ακολουθούν τα γενικά βήματα που πρέπει να ακολουθήσετε για να εγκαταστήσετε μια ενημέρωση OxygenOS στο OnePlus 6, διατηρώντας παράλληλα τα TWRP, Magisk και προαιρετικά έναν προσαρμοσμένο πυρήνα.

  1. Κατέβασε το πιο πρόσφατο πλήρης ROM φερμουάρ
  2. Φλακάρετε το πλήρες zip της ROM στην ανάκτηση
  3. (Προαιρετικό) Προσαρμοσμένος πυρήνας Flash
  4. Πρόγραμμα εγκατάστασης Flash TWRP
  5. Κάντε επανεκκίνηση κατευθείαν πίσω στην ανάκτηση
  6. Flash Magisk

Στις συσκευές Google Pixel, μπορείτε αναβοσβήνει την εργοστασιακή εικόνα χωρίς σκούπισμα δεδομένων, μετά εκκινήστε το TWRP, εγκαταστήστε το TWRP μέσω του σεναρίου εγκατάστασης και, στη συνέχεια, εγκαταστήστε το Magisk.

Εξαγωγή ενημέρωσης για να αναβοσβήνουν μεμονωμένες εικόνες διαμερισμάτων

Τα αρχεία ενημέρωσης για πολλές συσκευές A/B είναι λίγο διαφορετικά σε σύγκριση με συσκευές μόνο A. Δεν είναι πλέον απλώς ένα αρχείο zip που περιέχει πολλές εικόνες (εξαιρουμένων των εργοστασιακών εικόνων της Google και της Razer), αντίθετα, έχουν τη μορφή αρχείου payload.bin. Μπορείτε να εξαγάγετε αυτό το αρχείο και να αναβοσβήσετε κάθε μέρος με μη αυτόματο τρόπο, αλλά απαιτεί ένα ειδικό εργαλείο για να γίνει αυτό. Εάν ενδιαφέρεστε να μάθετε πώς να το κάνετε αυτό στο OnePlus 6, το Xiaomi Mi A1 και πολλές άλλες συσκευές A/B, διαβάστε παρακάτω.

Ρύθμιση για εξαγωγή payload.bin

  1. Βεβαιωθείτε ότι έχετε Python 3.6 εγκατασταθεί.
  2. Κάντε λήψη του payload_dumper.py και του update_metadata_pb2.py εδώ.
  3. Εξαγάγετε το OTA zip και τοποθετήστε το payload.bin στον ίδιο φάκελο με αυτά τα αρχεία.
  4. Ανοίξτε PowerShell, Command Prompt ή Terminal ανάλογα με το λειτουργικό σας σύστημα.
  5. Εισαγάγετε την ακόλουθη εντολή: python -m pip install protobuf
  6. Όταν τελειώσει, πληκτρολογήστε αυτήν την εντολή: python payload_dumper.py payload.bin
  7. Αυτό θα αρχίσει να εξάγει τις εικόνες μέσα στο αρχείο payload.bin στον τρέχοντα φάκελο στον οποίο βρίσκεστε.

Μπορείτε να αναβοσβήσετε κάθε μία από αυτές τις εικόνες ξεχωριστά τώρα μέσω του fastboot εάν το επιθυμείτε. Η επόμενη ενότητα σας δείχνει πώς να το κάνετε αυτό.

Χρήση fastboot για φλας εικόνων σε μια συσκευή που υποστηρίζει απρόσκοπτες ενημερώσεις

Υπάρχει ένας αριθμός εντολών που είναι αποκλειστικά για συσκευές συστήματος διαμερισμάτων A/B. Μπορείτε να αλλάξετε την ενεργή υποδοχή και το φλας σε συγκεκριμένες υποδοχές. Εάν έχετε ένα Project Treble-συμβατή συσκευή και θέλουν να μάθουν πώς να flash Γενικές εικόνες συστήματος, θα πρέπει να είστε εξοικειωμένοι με αυτές τις εντολές. Ρίξτε μια ματιά στον παρακάτω πίνακα.

Εντολές Fastboot

Εντολή

Λάβετε την τρέχουσα ενεργή υποδοχή

fastboot getvar all | grep "current-slot"Εάν χρησιμοποιείτε υπολογιστή με Windows, η εντολή "grep" δεν θα λειτουργήσει.

Ορίστε άλλη υποδοχή ως ενεργή

fastboot set_active άλλα

Ορίστε την καθορισμένη υποδοχή ως ενεργή

fastboot set_active $ORfastboot --set-active=_$slot όπου $ είναι είτε a είτε b

Αναλαμπή εικόνας στο καθορισμένο διαμέρισμα στην τρέχουσα υποδοχή

fastboot flash partition partition.img

Αναλαμπή εικόνας στο καθορισμένο διαμέρισμα στην καθορισμένη υποδοχή

fastboot flash partition_a partition.imgfastboot flash partition_b partition.img

(Σημείωση: Σε συσκευές A/B, μπορείτε είτε να καθορίσετε ένα διαμέρισμα σε μια συγκεκριμένη υποδοχή για να αναβοσβήνει ή μπορείτε να αφήσετε έξω το επίθημα υποδοχής και θα αναβοσβήνει στην τρέχουσα ενεργή υποδοχή. Για παράδειγμα, μπορείτε να αντικαταστήσετε το "partition" στην εντολή flash με "system", "system_a" ή "system_b.")

Σε υπολογιστές με Windows, δεν μπορείτε να χρησιμοποιήσετε το grep, οπότε απλώς αφαιρέστε αυτό το τμήμα και αναζητήστε "current-slot".

Λίγα λόγια για το Project Treble και τις απρόσκοπτες ενημερώσεις

Μια κοινή παρανόηση είναι ότι η υποστήριξη Project Treble και η υποστήριξη διαμερισμάτων A/B σχετίζονται μεταξύ τους, αλλά στην πραγματικότητα αυτό δεν συμβαίνει. Το να έχεις το ένα δεν συνεπάγεται και το άλλο. Το Motorola Moto Z2 Force χρησιμοποιεί ένα σχήμα διαμερισμάτων A/B αλλά δεν υποστηρίζει Treble. Από την άλλη πλευρά, το Honor 9 Lite υποστηρίζει το Project Treble, αλλά είναι μια συσκευή μόνο A.

Το Honor 9 Lite υποστηρίζει το Project Treble αλλά δεν υποστηρίζει απρόσκοπτες ενημερώσεις

Συχνές Ερωτήσεις/Περίληψη

  • Ποια είναι τα οφέλη της κατάτμησης A/B;
    • Η κατάτμηση A/B σάς επιτρέπει να ενημερώνετε το Android smartphone σας ενώ το χρησιμοποιείτε, κάνοντας απλώς επανεκκίνηση όταν είστε έτοιμοι να εκκινήσετε στη νέα έκδοση. Λειτουργεί επίσης ως προστασία από τούβλα—αν η ενημέρωση πάει στραβά, θα επιστρέψετε στην εγκατάσταση που λειτουργεί.
  • Η ύπαρξη διαμερισμάτων A/B εμποδίζει την ανάπτυξη;
    • Αν και χρειάστηκε λίγος χρόνος από τους προγραμματιστές για να προσαρμοστούν, η απάντηση είναι σχεδόν όχι. Στην πραγματικότητα, μπορεί να βοηθήσει τους προγραμματιστές καθώς μπορούν να εκκινήσουν δύο φορές την προσαρμοσμένη ROM τους με την παλιά έκδοση και μια νέα δοκιμαστική έκδοση για να ελέγξουν για παλινδρομήσεις.
  • Πώς επηρεάζουν τα διαμερίσματα A/B τα mods όπως οι προσαρμοσμένοι πυρήνες, το Magisk ή το Xposed;
    • Πρέπει να είστε προσεκτικοί κατά την εγκατάστασή τους, αλλά προς το παρόν δεν υπάρχουν προβλήματα. Το Magisk υποστηρίζει επίσημα συσκευές με απρόσκοπτες ενημερώσεις και εφόσον αναβοσβήσετε τα πράγματα με τη σωστή σειρά, δεν θα έχετε κανένα πρόβλημα. Βεβαιωθείτε ότι έχετε αναβοσβήνει τον προσαρμοσμένο πυρήνα πριν αναβοσβήσετε τα άλλα mod σας και θα πρέπει να είστε έτοιμοι.
  • Μπορώ να αναβοσβήσω δύο διαφορετικές ROM σε κάθε διαμέρισμα και διπλή εκκίνηση;
    • Θεωρητικά, ναι. Ωστόσο, τα προβλήματα προκύπτουν λόγω του διαμερίσματος κοινόχρηστων δεδομένων, επομένως δεν συνιστάται.
  • Το να έχω ένα σύστημα διαμερισμάτων A/B σημαίνει ότι έχω μειωμένο χώρο αποθήκευσης;
    • Οχι! Η Google λέει ότι οι συσκευές που υποστηρίζουν απρόσκοπτες ενημερώσεις θυσιάζουν μόνο μερικές εκατοντάδες Megabyte αποθήκευσης για να τις υποστηρίξουν. Τα οφέλη υπερτερούν αυτού του κόστους.
  • Η συσκευή μου υποστηρίζει διαμερίσματα A/B, αυτό σημαίνει ότι μπορώ να χρησιμοποιήσω μια Γενική Εικόνα συστήματος Project Treble;
    • Οχι απαραίτητα. Το Project Treble και η υποστήριξη A/B δεν σχετίζονται. Το Motorola Moto Z2 Force δεν υποστηρίζει το Project Treble, ωστόσο υποστηρίζει το σχήμα διαμερισμάτων A/B.
  • Η συσκευή μου υποστηρίζει Project Treble, αυτό σημαίνει ότι έχω ένα σύστημα διαμερισμάτων A/B;
    • Αυτό δεν συμβαίνει πάντα. Το Honor 9 Lite είναι ένα χαρακτηριστικό παράδειγμα, καθώς υποστηρίζει το Project Treble αλλά δεν έχει σχήμα διαμερισμάτων A/B.
  • Γιατί πρέπει πρώτα να εκκινήσω το TWRP με fastboot και μετά να το αναβοσβήσω;
    • Αυτό οφείλεται στο πώς λειτουργεί το fastboot και στο γεγονός ότι το διαμέρισμα ανάκτησης δεν υπάρχει πλέον. Η ανάκτηση τοποθετείται μέσα στο διαμέρισμα εκκίνησης, επομένως πρέπει να τροποποιήσουμε τόσο το boot_a όσο και το boot_b. Δεν μπορείτε να επιδιορθώσετε ένα διαμέρισμα στο fastboot, μόνο να αναβοσβήσετε από πάνω του. Θα μπορούσατε, θεωρητικά, να δημιουργήσετε μια προεπιλεγμένη εικόνα εκκίνησης και στη συνέχεια να την αναβοσβήσετε.
  • Υπάρχουν κίνδυνοι με τα χωρίσματα A/B; Πώς η προστασία επαναφοράς επηρεάζει τα πράγματα;
    • Η Google έχει καταβάλει κάθε δυνατή προσπάθεια για να μην είναι πρόβλημα, αλλά στην περίπτωση του Motorola Moto Z2 Αναγκαστικά, υπήρξαν γνωστές περιπτώσεις μιας συσκευής που επανενεργοποίησε την παλαιότερη υποδοχή μετά την αναβάθμιση σε Android Oreo. Αυτό σήμαινε ότι η προστασία επαναφοράς ξεκίνησε και οι ιδιοκτήτες συσκευών μπορούσαν να σώσουν το smartphone τους μόνο με ανάκτηση EDL. Ωστόσο, η Google λέει ότι η προστασία επαναφοράς ξεκινά μόνο μετά την πρώτη εκκίνηση, επομένως η υποδοχή πρέπει να λειτουργεί πλήρως μετά από μια ενημέρωση για να μην μπορείτε πλέον να κάνετε υποβάθμιση.