Η Google έκανε πίσω στο να απαιτεί από τους OEM να υποστηρίζουν εικονικό A/B σε νέες συσκευές Android 11, κάτι που θα είχε ανοίξει το δρόμο για απρόσκοπτες ενημερώσεις.
Ενημέρωση 1 (25/01/2021 @ 2:06 μ.μ. ET): Πριν από την κυκλοφορία του Android 11, η Google φαίνεται να έκανε πίσω στην απαίτηση από συσκευές εκκίνησης να υποστηρίζουν εικονικό A/B. Κάντε κλικ εδώ για περισσότερες πληροφορίες. Το άρθρο όπως δημοσιεύτηκε στις 7 Απριλίου 2021, διατηρείται παρακάτω.
Με το Android 7.0 Nougat, η Google εισήγαγε ένα σχέδιο διαμερισμάτων σχεδιασμένο για να επιταχύνει τις ενημερώσεις λογισμικού. Στο Nougat, η Google πρόσθεσε υποστήριξη για την αντιγραφή ορισμένων κατατμήσεων, έτσι ώστε τα ανενεργά διαμερίσματα να μπορούν να ενημερώνονται στο παρασκήνιο και στη συνέχεια να εναλλάσσονται σε ενεργά με μια γρήγορη επανεκκίνηση. Αυτό Η ρύθμιση "A/B partition" επιτρέπει "αδιάλειπτες ενημερώσεις" να πραγματοποιηθεί σε υποστηριζόμενες συσκευές Android, όπως το Chrome OS της Google. Ωστόσο, η Google δεν έχει επιβάλει ποτέ τη χρήση κατατμήσεων A/B, τόσο πολλές συσκευές εκεί έξω που δεν υποστηρίζουν απρόσκοπτες ενημερώσεις. Αυτό θα μπορούσε να αλλάξει με το Android 11, ωστόσο, καθώς η Google καθιστά υποχρεωτική για τις συσκευές που κυκλοφόρησαν πρόσφατα να υποστηρίζουν εικονικά διαμερίσματα A/B.
Για λίγο φόντο, τα διαμερίσματα A/B αναφέρονται στο σύνολο των κατατμήσεων μόνο για ανάγνωση που είναι διπλότυπα. Τα διπλότυπα διαμερίσματα περιλαμβάνουν συνήθως το σύστημα, τον προμηθευτή, την εκκίνηση και τα διαμερίσματα του προϊόντος. Όταν το τηλέφωνο πραγματοποιεί λήψη μιας ενημέρωσης, το πρόγραμμα ενημέρωσης διορθώνει το ανενεργό σύνολο κατατμήσεων (μία "υποδοχή") στο παρασκήνιο. Μόλις ολοκληρωθεί η εφαρμογή της ενημέρωσης στην ανενεργή υποδοχή, ζητείται από τον χρήστη να επανεκκινήσει τη συσκευή του. Όταν ο χρήστης κάνει επανεκκίνηση της συσκευής του, η ανενεργή υποδοχή αλλάζει τη θέση της με την ενεργή υποδοχή, ολοκληρώνοντας τη διαδικασία ενημέρωσης. Η προηγουμένως ενεργή υποδοχή παραμένει ανέγγιχτη εάν υπάρχει πρόβλημα με την εκκίνηση της πρόσφατα ενημερωμένης υποδοχής. Όταν κυκλοφορήσει η επόμενη ενημέρωση, αυτή η διαδικασία επαναλαμβάνεται. Εάν ενδιαφέρεστε για μια πιο τεχνική εξήγηση, ανατρέξτε στην τεκμηρίωση προγραμματιστών της Google σε κατατμήσεις A/B.
Αντίθετα, συσκευές χωρίς διαμερίσματα A/B, όπως το Samsung Galaxy S20, το OPPO Find X2 και πολλές άλλες, εφαρμόζουν ενημερώσεις μέσω ενός αποκλειστικού προγράμματος ενημέρωσης σε μια διαδικασία ανάκτησης. Αυτό απομακρύνει τον χρήστη από το Android και τον καθιστά ανίκανο να χρησιμοποιήσει τη συσκευή του για αρκετά λεπτά, χάνοντας πιθανώς σημαντικές ειδοποιήσεις, κλήσεις ή μηνύματα κειμένου. Η Google πιστεύει ότι η απλοποίηση της διαδικασίας ενημέρωσης οδηγεί σε περισσότερα άτομα να λαμβάνουν πραγματικά μια ενημέρωση μόλις κυκλοφορήσει. Μάλιστα, τον Μάιο του 2017, Το βρήκε η Google υψηλότερο ποσοστό χρηστών Pixel από τους χρήστες Nexus εκτελούσαν την πιο πρόσφατη ενημέρωση ασφαλείας. Φυσικά, ο χρήστης μπορεί να προγραμματίσει ενημερώσεις για να πραγματοποιηθούν όταν δεν χρησιμοποιεί ενεργά τη συσκευή του, αλλά πολλοί χρήστες απλώς δεν ενημερώνουν τη συσκευή τους ακόμα και όταν τους ζητηθεί. Επιπλέον, επειδή δεν διαθέτει διαμερίσματα A/B, ο χρήστης χάνει ένα από τα εγγενή πλεονεκτήματά του: την προστασία του από εσφαλμένες ενημερώσεις συστήματος.
Για παράδειγμα, όταν η Xiaomi κυκλοφόρησε για πρώτη φορά την ενημέρωση Android 10 για το Mi A2 Lite, πολλοί χρήστες ανακάλυψαν ότι οι συσκευές τους δεν εκκινούσαν. Ευτυχώς για αυτούς, το Mi A2 Lite έχει διαμερίσματα A/B για απρόσκοπτες ενημερώσεις, οπότε βρέθηκαν χρήστες στα φόρουμ μας ότι θα μπορούσαν να χρησιμοποιήσουν μια εντολή fastboot για να ρυθμίσουν το bootloader να εκκινεί το ανέγγιχτο, προηγουμένως ενεργό σύνολο κατατμήσεων. Έτσι, όχι μόνο τα διαμερίσματα A/B παρέχουν στους χρήστες μια πολύ πιο γρήγορη διαδικασία ενημέρωσης, αλλά λειτουργούν και ως ασφαλής για αποτυχημένες ενημερώσεις. Οι ΚΑΕ που δεν έχουν εφαρμόσει κατατμήσεις A/B μπορούν ακόμα να σχεδιάσουν τον δικό τους τρόπο προστασίας από το OTA αποτυχίες, αλλά γιατί να αντιμετωπίσετε αυτό το πρόβλημα όταν αυτή η προστασία είναι μέρος του σχεδιασμού του A/B χωρίσματα; Για την αναφορά σας, εδώ είναι ένα μερικό (και ομολογουμένως ξεπερασμένο) λίστα συσκευών που υποστηρίζουν κατατμήσεις A/B για απρόσκοπτες ενημερώσεις, και εδώ είναι ένα σεμινάριο πώς να ελέγξετε εάν η δική σας συσκευή υποστηρίζει τη λειτουργία.
Μπορεί να φαίνεται περίεργο γιατί αρέσουν σε ορισμένους OEM Η Samsung χρεώνει 1.400 $ για ένα smartphone, αλλά δεν θα προσφέρει μια τόσο έξυπνη λειτουργία. Ο λόγος συνήθως συνοψίζεται στην αποθήκευση: Οι OEM δεν θέλουν να θυσιάσουν μερικά gigabyte αποθηκευτικού χώρου για να υποστηρίξουν απρόσκοπτες ενημερώσεις. Τηλέφωνα όπως το Samsung Galaxy S20 έχουν α τόνος προεγκατεστημένου λογισμικού, επομένως η αντιγραφή κατατμήσεων όπως το /system και το /product θα οδηγήσει σε αντιγραφή πολλών τεράστιων αρχείων και εφαρμογών. Η Google κατάφερε να εφαρμόσει κατατμήσεις A/B χωρίς να θυσιάζει πολύ τον αποθηκευτικό χώρο χάρη σε ένα έξυπνο κόλπο για να επιλύσετε το ζήτημα της αντιγραφής μαζικών αρχείων .odex. Ένας άλλος λόγος για τον οποίο οι OEM μπορεί να έχουν επιλέξει να μην εφαρμόσουν διαμερίσματα A/B είναι το κόστος: Συμμόρφωση με την Google Οι συνεχείς αλλαγές στα συστήματα διαμερισμάτων του Android απαιτούν πολλή προσπάθεια, καθώς ο αναγνωρισμένος προγραμματιστής XDA topjohnwu θα σου πω. Εκτός και αν αναγκαστούν οι OEM, πολλοί δεν θα μπουν στον κόπο να αλλάξουν αυτό που ήδη λειτουργεί για αυτούς.
Τέλος, όμως, η Google φαίνεται να θεσπίζει το νόμο στο Android 11. Αναγκάζοντας την υιοθέτηση εικονικών κατατμήσεων A/B σε συσκευές που κυκλοφόρησαν πρόσφατα, έχουν διαβεβαιώσει ότι οι OEM θα πρέπει να υποστηρίζουν απρόσκοπτες ενημερώσεις για τις συσκευές τους στα τέλη του 2020 και του 2021. Όπως εντοπίστηκε από τον XDA Recognized Developer luca020400, ο Yifan Hong, μηχανικός λογισμικού στην Google στην ομάδα του Project Treble, υπέβαλε μια δέσμευση στο AOSP Gerrit με τίτλο "Απαιτείται Virtual A/B στις εκκινήσεις R." Η δέσμευση ενημερώνει τη σουίτα δοκιμής προμηθευτή ή VTS, η οποία είναι μια αυτοματοποιημένη δοκιμή που πρέπει να περάσουν όλες οι συσκευές για να θεωρηθούν συμβατές με το Project Treble. Η νέα δοκιμή ελέγχει εάν η ιδιότητα συστήματος "ro.virtual_ab.enabled
Το " έχει οριστεί σε true και εάν "ro.virtual_ab.retrofit
Το " έχει οριστεί ως false σε συσκευές με επίπεδο API αποστολής 30 ή υψηλότερο. Με άλλα λόγια, αυτή η δοκιμή ελέγχει εάν μια συσκευή που εκκινείται με Android 11 ή νεότερη έκδοση υποστηρίζει εικονικά διαμερίσματα A/B. Τα "εικονικά" διαμερίσματα A/B εισήχθησαν με το Android 10 μαζί με τα "δυναμικά διαμερίσματα", τα οποία είναι διαμερίσματα με δυνατότητα δυναμικής αλλαγής μεγέθους. Είναι η ίδια ιδέα με τα κανονικά διαμερίσματα A/B, εκτός από το ότι μπορούν να αλλάξουν ελεύθερα το μέγεθός τους.
Εάν μια συσκευή που ξεκινά με Android 11 δεν υποστηρίζει εικονικά διαμερίσματα A/B, τότε θα αποτύχει στο VTS. Εάν η συσκευή αποτύχει VTS, τότε δεν μπορεί να αποσταλεί με τις Υπηρεσίες Google Mobile. Με άλλα λόγια, η Google έχει ουσιαστικά επιβάλει στους OEM να υποστηρίζουν εικονικά διαμερίσματα A/B και κατ' επέκταση, απρόσκοπτες ενημερώσεις.
Ενημέρωση: Το εικονικό A/B δεν απαιτείται για το Android 11
Όταν αναφέραμε για πρώτη φορά τον Απρίλιο ότι η Google απαιτεί από όλες τις συσκευές εκκίνησης Android 11 να το υποστηρίζουν εικονικός μηχανισμός ενημέρωσης A/B, υπήρξε πολύς ενθουσιασμός γιατί τελικά θα έκανε τα τηλέφωνα Samsung να έχουν απρόσκοπτες ενημερώσεις. Δυστυχώς, αποδεικνύεται ότι η Google αποφάσισε να μην καταστήσει απαίτηση την υποστήριξη εικονικού A/B. Android 11 Έγγραφο ορισμού συμβατότητας (CDD) προς το παρόν διαβάζει "Οι υλοποιήσεις συσκευών ΠΡΕΠΕΙ να υποστηρίζουν ενημερώσεις συστήματος A/B" αντί για υποστήριξη "ΠΡΕΠΕΙ". Φαίνεται ότι κάποια στιγμή πριν από την κυκλοφορία του Android 11, η Google αποφάσισε να αποσύρει την απόφασή της να απαιτήσει εικονική υποστήριξη A/B, πιθανότατα στο κατόπιν εντολής αρκετών ΚΑΕ. Αυτό συμβαίνει αρκετά συχνά, αλλά ποτέ δεν μεταφέρεται στο κοινό καθώς δημοσιεύεται μόνο το τελικό προσχέδιο του CDD Σε σύνδεση.