Δυναμικές ενημερώσεις συστήματος στο Android Q: Πώς το Project Treble θα βελτιώσει τις μελλοντικές εκδόσεις Android

Η Google αποκάλυψε το Dynamic System Update, έναν νέο τρόπο εγκατάστασης ενός GSI στο Android Q που δεν απαιτεί ξεκλείδωμα του bootloader.

Παράλληλα με την κυκλοφορία του Android 8.0 Oreo, η Google αποκάλυψε Project Treble: μια σημαντική ανακατασκευή στον τρόπο επικοινωνίας του πλαισίου λειτουργικού συστήματος Android και των HAL του προμηθευτή και του πυρήνα Linux. Το Treble είναι μια σημαντική πρωτοβουλία που έχει σχεδιαστεί για τη μείωση της έκδοσης πλατφόρμας Android και κατακερματισμός ενημερωμένης έκδοσης κώδικα ασφαλείας, και όλες οι συσκευές με επωνυμία Android που κυκλοφορούν με Android Pie απαιτείται να υποστηρίζουν το Project Treble. OEM και προμηθευτές δοκιμάζουν τη συμβατότητα Treble εκκινώντας μια Γενική Εικόνα συστήματος (GSI)—μια καθαρή έκδοση Android από την AOSP—και περνώντας το Σουίτα δοκιμής προμηθευτή (VTS) και Compatibility Test Suite-on-Generic System Image (CTS-on-GSI). Το GSI έχει αποδειχθεί χρήσιμο όχι μόνο επιτρέποντας στους μηχανικούς λογισμικού που εργάζονται για OEM να δοκιμάζουν τη συμβατότητα Treble, αλλά έχει επίσης ανοίξει την πόρτα για

μεγάλη προσαρμοσμένη κοινότητα ROM στο XDA. Για την έκδοση του Android Q, η Google θέλει να κάνει τα GSI χρήσιμα για μια άλλη ομάδα: τους προγραμματιστές εφαρμογών.

Δεδομένου ότι η πρώτη σταθερή έκδοση και η πτώση του πηγαίου κώδικα οποιασδήποτε συγκεκριμένης έκδοσης πλατφόρμας Android συνήθως έρχεται τον Αύγουστο, οι προγραμματιστές που θα ήθελαν να δοκιμάσουν την επόμενη έκδοση Android σε μια πραγματική συσκευή χρειάζονται συνήθως πρόσβαση σε ένα smartphone της Google, εάν δεν θέλουν να περιμένουν να φτάσει η ενημέρωση στο δικό τους υλικό. Ωστόσο, η Google συνεργάστηκε με OEM για να φέρει ένα Android P beta σε πολλές συσκευές πέρυσι, και το συνέχισαν φέτος με ένα Android Q beta. Παράλληλα με μια επίσημη έκδοση Android Q beta, η Google φέτος κυκλοφόρησε επίσης μια επίσημο Q beta GSI Έτσι, οποιοσδήποτε προγραμματιστής με συσκευή συμβατή με Project Treble μπορεί να εγκαταστήσει την πιο πρόσφατη έκδοση Q χωρίς να χρειάζεται να περιμένει μήνες για να φτάσει η έκδοση στις συσκευές του. Αυτός ο νέος τρόπος δοκιμής της επόμενης έκδοσης Android δίνει στους προγραμματιστές περισσότερες ευκαιρίες, και επομένως περισσότερο χρόνο, να δοκιμάσουν τις εφαρμογές τους σημαντικές αλλαγές στο Android.

Δυστυχώς, η τρέχουσα μέθοδος του εγκατάσταση GSI μπορεί να είναι δύσκολο. Απαιτεί ξεκλείδωμα του bootloader—που σημαίνει σκούπισμα όλων των δεδομένων χρήστη ή/και ακύρωση της εγγύησης—και αναβοσβήνει μια εικόνα μέσω του πρωτοκόλλου fastboot. Δεν είναι μια γρήγορη και απλή διαδικασία για έναν προγραμματιστή εφαρμογών, εάν η συσκευή του επιτρέπει ακόμη και το ξεκλείδωμα του bootloader. Γι' αυτό, για την τελευταίους μήνες, η Google εργάστηκε σε έναν νέο τρόπο εκκίνησης GSI. Εισαγάγετε μια νέα δυνατότητα που ονομάζεται Δυναμική ενημέρωση συστήματος ή DSU.

(Αυτή η δυνατότητα αναπτύχθηκε προηγουμένως με τα ονόματα "Live Image", "Dynamic Android" και "Android on Tap", οπότε μην εκπλαγείτε αν η Google την αποκαλεί αλλιώς σε λίγες εβδομάδες ή μήνες.)

Δυναμικές ενημερώσεις συστήματος στο Android Q

Ο στόχος της δυνατότητας DSU είναι να επιτρέψει σε έναν προγραμματιστή να εκκινήσει σε ένα GSI χωρίς να παρεμβαίνει στην τρέχουσα εγκατάσταση. Αυτό σημαίνει ότι ο bootloader δεν χρειάζεται να ξεκλειδωθεί και τα δεδομένα χρήστη δεν χρειάζεται να διαγραφούν. Η διαδικασία εγκατάστασης είναι επίσης πολύ απλοποιημένη καθώς η Google έχει παράσχει μια διεπαφή γραμμής εντολών μέσω ADB και μια εφαρμογή που μπορεί να ελεγχθεί μέσω intents. Δείτε πώς φαίνεται η εκκίνηση ενός GSI χρησιμοποιώντας DSU:

Σε αυτό το βίντεο*, ένα Google Pixel 3 XL με Android Q beta 3 επανεκκινείται σε GSI. Σε αυτό το περιβάλλον, ένας προγραμματιστής εφαρμογών μπορεί να εγκαταστήσει και να δοκιμάσει την εφαρμογή του για συμβατότητα Q API. Όταν τελειώσουν οι δοκιμές, μπορούν απλώς να επανεκκινήσουν ξανά στο κανονικό λογισμικό Q beta 3 της συσκευής. Βασικά κάνετε διπλή εκκίνηση ενός GSI, ώστε να μπορείτε να δοκιμάσετε με ασφάλεια την εφαρμογή σας!

*Καταγράψαμε αυτό το βίντεο στο Google I/O 2019 όταν το DSU δεν ήταν ακόμη διαθέσιμο δημόσια, επομένως η έκδοση Q beta 3 στο κινηματογραφημένο Pixel 3 XL τροποποιήθηκε ελαφρώς από την Google για να συμπεριλάβει υποστήριξη DSU. Οι συσκευές που εκτελούν Q beta 4 και νεότερες εκδόσεις είναι κατάλληλες για υποστήριξη DSU εάν πληρούν τις παρακάτω απαιτήσεις.

Απαιτήσεις για δυναμικές ενημερώσεις συστήματος

Η εκκίνηση και εκτέλεση της ουσιαστικά διπλής εκκίνησης δεν ήταν εύκολη υπόθεση για την Google. Έπρεπε να γίνουν σημαντικές αλλαγές στον τρόπο διαχείρισης των κατατμήσεων στο Pixel 3, το δοκιμαστικό κρεβάτι της Google για το DSU. Έτσι, η πρώτη σημαντική απαίτηση για υποστήριξη DSU είναι ότι η συσκευή υποστηρίζει δυναμικές κατατμήσεις. Τα δυναμικά διαμερίσματα περιλαμβάνουν ένα πραγματικό διαμέρισμα αποθήκευσης που χωρίζεται σε λογικά διαμερίσματα με δυνατότητα αλλαγής μεγέθους όπως σύστημα, προμηθευτής, odm, oem, προϊόν κ.λπ. Κατά την εγκατάσταση ενός GSI, δεσμεύεται χώρος για νέα διαμερίσματα συστήματος και δεδομένων χρήστη, λαμβάνοντας αχρησιμοποίητα μπλοκ από το υπάρχον διαμέρισμα δεδομένων χρήστη. Δεδομένου ότι αυτά τα νέα διαμερίσματα μπορεί να είναι αρκετά gigabyte σε μέγεθος, η υποστήριξη DSU έχει νόημα μόνο με τη λογική κατατμήσεις διαφορετικά μια συσκευή θα έπρεπε να κρατήσει μόνιμα αρκετά gigabyte αποθηκευτικού χώρου για το GSI εγκαταστάσεις.

Άλλες απαιτήσεις περιλαμβάνουν έναν δίσκο ramdisk, ο οποίος αποφασίζει εάν θα εκκινηθεί σε ανάκτηση, σύστημα ή λογικό διαμέρισμα, και ένα διαμέρισμα μεταδεδομένων για την αποθήκευση των μεταδεδομένων του GSI. Γενικά, τα δομικά στοιχεία για την υποστήριξη DSU είναι οι απαιτήσεις εκκίνησης του Android Q, σύμφωνα με τον επικεφαλής του Project Treble, Iliyan Malchev. Δεν είμαστε σίγουροι αν τα παντα αυτό που απαιτείται για την υποστήριξη του DSU είναι μια απαίτηση εκκίνησης του Android Q, αλλά μπορούμε να υποθέσουμε ότι οι περισσότερες, αν όχι όλες οι συσκευές που εκκινούν με Android Q μπορώ υποστηρίζουν το DSU ακόμα κι αν η Google δεν το απαιτεί αυτήν τη στιγμή. Μέχρι στιγμής, μόνο τα Pixel 3, Pixel 3 XL, Pixel 3a και Pixel 3a XL έχουν δυναμικά διαμερίσματα και από αυτές τις συσκευές, μόνο τα Pixel 3 και Pixel 3 XL υποστηρίζουν DSU στο Android Q beta 4. Παρόλο που δεν απαιτείται υποστήριξη DSU, η Google ελπίζει ότι οι OEM ενεργοποιούν τη δυνατότητα ούτως ή άλλως, επειδή απλοποιεί την ασφαλή δοκιμή για συμβατότητα Treble. Για παράδειγμα, ένας μηχανικός λογισμικού OEM μπορεί να βάλει ένα GSI σε μια κάρτα SD ώστε να μπορούν να εκκινήσουν γρήγορα σε πολλές συσκευές για να δοκιμάσουν τη συμβατότητα με το Treble.

Ασφάλεια για δυναμικές ενημερώσεις συστήματος

Δεδομένου ότι η DSU εισάγει ουσιαστικά ένα δεύτερο λειτουργικό σύστημα στο μείγμα, η Google πρέπει να βεβαιωθεί ότι αυτή η νέα εγκατάσταση δεν μπορεί να παραβιαστεί για να σπάσει την ακεραιότητα της συσκευής. Έτσι, το Οι ίδιες βασικές προστασίες ασφαλείας για την αρχική εγκατάσταση υπάρχουν για την εγκατάσταση GSI: Πολιτικές Android Verified Boot και SELinux. Επιπλέον, μόνο οι εφαρμογές με το προνομιακό δικαίωμα υπογραφής INSTALL_DYNAMIC_SYSTEM μπορούν να ξεκινήσουν ένα GSI εγκατάσταση, ενώ οι εφαρμογές με άδεια υπογραφής MANAGE_DYNAMIC_SYSTEM μπορούν να ενεργοποιήσουν/απενεργοποιήσουν ή να διαγράψουν ένα GSI εγκατάσταση. Αυτό σημαίνει ότι μόνο αξιόπιστες εφαρμογές σε επίπεδο συστήματος μπορούν να λειτουργήσουν με DSU.

Για να διασφαλίσει ότι τα αρχικά δεδομένα χρήστη προστατεύονται, η Google έχει προσθέσει ένα επιπλέον μηχανισμός προστασίας στο Android Q. Που ονομάζεται "Σημείο ελέγχου," η δυνατότητα προστατεύει από την καταστροφή δεδομένων χρήστη επαναφέροντας τα διαμερίσματα με σημεία ελέγχου στην αρχική τους κατάσταση. Ωστόσο, τα σημεία ελέγχου είναι χρήσιμα όχι μόνο για το DSU. Χρησιμοποιούνται επίσης για την προστασία από κακοήθεια Project Mainline Μονάδα APEX και A/B Ενημερώσεις OTA. (Συσκευές με χωρίσματα A/B διαθέτουν ήδη προστασία επαναφοράς, αλλά αυτές οι επαναφορές απαιτούν επαναφορά εργοστασιακών ρυθμίσεων, ενώ τα σημεία ελέγχου δεδομένων χρήστη όχι.)

Εγκατάσταση GSI

Εάν η συσκευή σας υποστηρίζει DSU όπως η σειρά Pixel 3, τότε είναι εύκολο να εγκαταστήσετε ένα GSI. Πρώτα πρέπει να βεβαιωθείτε ότι η σημαία δυνατότητας Dynamic System είναι ενεργοποιημένη με έναν από τους δύο τρόπους:

  1. Εάν χρησιμοποιείτε έκδοση σφαλμάτων χρήστη, ενεργοποιήστε τη σημαία settings_dynamic_android στις Ρυθμίσεις > Σύστημα > Επιλογές προγραμματιστή > Σημαίες λειτουργιών.
  2. Εάν χρησιμοποιείτε έκδοση χρήστη, εκτελέστε την ακόλουθη εντολή κελύφους adb:
    setproppersist.sys.fflag.override.settings_dynamic_system 1

Στη συνέχεια, κατεβάστε το πιο πρόσφατο Android Q beta GSI από Google ή τον OEM της συσκευής σας. (Το DSU επιτρέπει μόνο την εγκατάσταση GSI υπογεγραμμένων από την Google ή έναν OEM.) Μετά τη λήψη, χρησιμοποιήστε το simg2img για να μετατρέψετε την αραιή εικόνα σε ακατέργαστη εικόνα. Χρησιμοποιήστε το gzip για να συσκευάσετε την ακατέργαστη εικόνα και, στη συνέχεια, αντιγράψτε το αρχείο που προκύπτει σε μια τοποθεσία στη συσκευή σας εξωτερικός χώρος αποθήκευσης (π.χ. /data/media/0/Download) ή ένα πραγματικό εξωτερικό μέσο αποθήκευσης (όπως ένα φυσικό SD κάρτα). Τέλος, εκκινήστε την εφαρμογή DynamicSystemInstallationService με τη σωστή πρόθεση για να ξεκινήσετε την εγκατάσταση:

adb shell am start-activity \ -n com.android.dynsystem/com.android.dynsystem.VerificationActivity \ -a android.os.image.action.START_INSTALL \ -d file:///storage/emulated/0/Download/system_raw.gz \ --el KEY_SYSTEM_SIZE $(du -b system_raw.img|cut -f1) \ --el KEY_USERDATA_SIZE 8589934592

Μόλις κάνετε κλικ στην επανεκκίνηση, θα εκκινήσετε στο GSI. Η χρηστικότητα της συσκευής στο GSI εξαρτάται από το πόσο καλά ο OEM της συσκευής σας εφάρμοσε το Treble (ή μάλλον, πόσο λίγο παραβίασε το Treble συμβατότητα.) Ορισμένες συσκευές θα λειτουργούν καλύτερα με GSI από άλλες, αλλά γενικά, μην περιμένετε να χρησιμοποιήσετε αυτήν την εγκατάσταση ως καθημερινή οδηγός. Προορίζεται να δοκιμάσετε την εφαρμογή σας και να βγείτε έξω κάνοντας επανεκκίνηση. Εάν θέλετε να παραμείνετε στην εγκατάσταση GSI για περαιτέρω δοκιμές, τότε μπορείτε να χρησιμοποιήσετε το gsi_tool εντολή κελύφους.

Μπορείτε να βρείτε τις πλήρεις οδηγίες εγκατάστασης GSI για DSU εδώ. Σφάλματα μπορούν να αρχειοθετηθούν στο Google Issue Tracker,Reddit, ή Υπερχείλιση στοίβας.

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

Όταν μίλησα με τον Iliyan Malchev στο Google I/O, επανέλαβε όσα είπε ο Hung-ying Tyan από την ομάδα των Treble σχετικά με την πρώιμη πρόσβαση στο GSI στο Android Dev Summit του Νοεμβρίου. Η Google έκανε το DSU να ζητήστε σχόλια από όσο το δυνατόν ευρύτερο κοινό. Στόχος είναι η βελτίωση της ποιότητας του GSI, το οποίο με τη σειρά του βελτιώνει την ποιότητα της μελλοντικής έκδοσης Android αφού το GSI είναι η πιο αγνή μορφή Android. Η Google είναι αυτή τη στιγμή η μόνη εταιρεία που δοκιμάζει τη συμβατότητα GSI επόμενης έκδοσης (για παράδειγμα, πόσο καλά λειτουργεί η εικόνα του συστήματος Android Q πάνω από το Android P υλοποίηση προμηθευτή), αλλά καθώς περισσότεροι άνθρωποι αναβοσβήνουν τα GSI και δίνουν σχόλια, οι OEM μπορούν να διορθώσουν παραβιάσεις συμβατότητας Treble, ώστε τα GSI να λειτουργούν ακόμη καλύτερα στο μελλοντικός. Ο Iliyan λέει ότι υπάρχει έντονο ενδιαφέρον από OEM και προμηθευτές όπως η Qualcomm για την επαναχρησιμοποίηση εικόνων προμηθευτών από την προηγούμενη έκδοση Android με την εικόνα συστήματος της επόμενης έκδοσης. Πρωτοβουλίες όπως το DSU βοηθούν την Google και τους OEM να καλύψουν το κενό στην κάλυψη από αυτοματοποιημένες δοκιμές όπως το VTS και το CTS-on-GSI. Έτσι, η Google λαμβάνει περισσότερους δοκιμαστές beta για να δώσουν σχόλια για την επόμενη έκδοση Android, ενώ ακούει επίσης για παραβιάσεις συμβατότητας Treble, ώστε οι OEM να μπορούν να βελτιώσουν τη δουλειά τους.

Η προσθήκη δυναμικών ενημερώσεων συστήματος στο Android Q είναι ευπρόσδεκτη, αλλά δεν πρόκειται να είναι η λύση διπλής εκκίνησης που ελπίζετε ορισμένοι από εσάς. Όπως αναφέρθηκε προηγουμένως, μπορούν να εγκατασταθούν μόνο εικόνες συστήματος υπογεγραμμένες από την Google ή OEM. Όταν ρώτησα τον Iliyan σχετικά με τη δυνατότητα επέκτασης του DSU για την υποστήριξη ενός οικοσυστήματος εναλλακτικού Android συστήματα, είπε ότι είναι τεχνικά δυνατό να γίνει αυτό, καθώς το DSU είναι απλώς ένα κανάλι για την παράδοση του συστήματος εικόνες. Οποιοσδήποτε OEM μπορεί να το χρησιμοποιήσει όπως θέλει εφόσον το τελικό αποτέλεσμα είναι συμβατό με Android. Η Google δεν έχει δημιουργήσει μια εναλλακτική λύση στο σύστημα OTA εδώ και το DSU δεν προορίζεται να χρησιμοποιηθεί για πραγματική διπλή εκκίνηση. Ανεξάρτητα, η δουλειά που έχει κάνει η Google στο Treble κάνει το Android πιο αρθρωτό, οπότε δεν θα εκπλαγώ αν η εγγενής διπλή εκκίνηση γίνει πραγματικότητα στην πορεία.