Το SultanXDA εξηγεί την ενοποιημένη προσέγγιση ROM στο OnePlus 3/3T

Απευθυνθήκαμε στο SultanXDA για να ρωτήσουμε πώς λειτουργεί η ενοποιημένη ROM και ο πυρήνας του για το OnePlus 3/3T. Διαβάστε τη συνέχεια καθώς μαθαίνουμε!

Τότε που καλύψαμε αυτόν τον αναγνωρισμένο προγραμματιστή XDA Sultanxda κυκλοφόρησε το δικό του προσαρμοσμένη ROM και πυρήνας CyanogenMod 13 για το OnePlus 3T, πολλοί άνθρωποι έμειναν έκπληκτοι βλέποντας την «ίδια» έκδοση ROM που κυκλοφόρησε για το OnePlus 3T να φτάνει στο OnePlus 3 (ή το αντίστροφο!).

Η Sultanxda υιοθέτησε την ενιαία προσέγγιση για τη διανομή ROM για το OnePlus 3 και το OnePlus 3T λόγω του σε μεγάλο βαθμό παρόμοιου υλικού και λογισμικού χαμηλού επιπέδου. Αυτό σήμαινε ότι η ROM προσέφερε πολλαπλή συμβατότητα μεταξύ των δύο συσκευών, όπου το ίδιο zip ROM μπορούσε να διανεμηθεί στο duo. Τα πολλαπλά συμβατά φερμουάρ επέτρεψαν στους χρήστες (και στον προγραμματιστή επίσης) να μην ανησυχούν μήπως αναβοσβήσουν λάθος το φερμουάρ κατά λάθος και πάρουν μια συσκευή με τούβλα. Αυτό δεν σημαίνει ότι το OnePlus 3/3T είναι εύκολο στην κατασκευή -- απλώς συνεπάγεται λιγότερους πονοκεφάλους συνολικά για όλα τα εμπλεκόμενα μέρη.

Επικοινωνήσαμε με τον αναγνωρισμένο προγραμματιστή XDA Sultanxda να ρίξει λίγο περισσότερο φως στην όλη διαδικασία, ώστε να ενθαρρύνει την υιοθέτηση της μεθόδου του. Ακολουθούν τα κύρια σημεία από τη συζήτηση με πρόσθετη έμφαση:

Τι είναι διαφορετικό στο OnePlus 3/3T που επιτρέπει ενοποιημένες ROM;

Ο λόγος για τον οποίο είναι δυνατή μια ενοποιημένη ROM είναι επειδή η OnePlus ενοποίησε το BSP (τις ιδιόκτητες βιβλιοθήκες) [Πακέτο Υποστήριξης Πίνακα]. Αν και η ενοποίηση ενός πυρήνα είναι εύκολη, η ενοποίηση μιας ROM είναι συνήθως αδύνατη για τους προγραμματιστές [ROM] λόγω ασυνεπειών στο BSP που μόνο ο OEM μπορεί να αντιμετωπίσει. Στο τέλος, το μόνο που έπρεπε να κάνω ήταν να ενοποιήσω τον πυρήνα και να διαχωρίσω μερικές εικόνες υλικολογισμικού GPU. Οι εικόνες υλικολογισμικού της GPU διαφέρουν μεταξύ του Snapdragon 820 και του 821, επομένως δεν είναι συμβατές μεταξύ τους. Τροποποίησα τον πυρήνα για να τον φτιάξω φορτώστε το σωστό υλικολογισμικό GPU για κάθε συσκευή για να το διορθώσετε αυτό. μετά εγώ πρόσθεσε τις αντίστοιχες εικόνες υλικολογισμικού στη ROM σε αυτό το commit. Οι υπόλοιπες εικόνες υλικολογισμικού για τη συγκεκριμένη συσκευή (όπως οι εικόνες του μόντεμ) βρίσκονται σε ένα διαμέρισμα υλικολογισμικού σε κάθε συσκευή. το πρόβλημα της GPU ήταν το μόνο πρόβλημα που αντιμετώπισα σχετικά με το υλικολογισμικό.

Πώς η ROM και ο πυρήνας καταλαβαίνουν ποια συσκευή είναι;

Ο πυρήνας γνωρίζει σε ποια συσκευή εκτελείται χάρη στον bootloader. Ο bootloader επιλέγει τη διαμόρφωση Device Tree (συσκευασμένη στην εικόνα του πυρήνα) που ταιριάζει με το ID της πλακέτας του και μεταβιβάζει αυτό ρύθμιση παραμέτρων στον πυρήνα Αυτό δίνει στον πυρήνα την ευελιξία να φορτώνει τις κατάλληλες διαμορφώσεις τόσο για το OnePlus 3 όσο και για το OnePlus 3T. Μπορείτε να βρείτε το αναγνωριστικό πίνακα για το OnePlus 3 και το OnePlus 3T ακολουθώντας τους υπερσυνδέσμους.

Χρειάζεστε μόνο έναν τροποποιημένο πυρήνα για την υποστήριξη ενοποιημένων εκδόσεων;

Όχι, πρέπει να ενοποιηθεί και η ROM. Η OnePlus ενοποίησε το BSP ξεκινώντας από το Open Beta για το OP3 και το διατήρησε ενοποιημένο στην επίσημη κυκλοφορία του OP3T OxygenOS. Αυτό σημαίνει ότι οι ROM πρέπει να χρησιμοποιούν ιδιόκτητες βιβλιοθήκες είτε από τις εκδόσεις Open Beta του OP3 είτε από την επίσημη έκδοση OxygenOS του OP3T προκειμένου να ενοποιηθούν. Υπάρχει επίσης η απαίτηση εικόνας υλικολογισμικού GPU που περιέγραψα παραπάνω, και η οθόνη αφής του OP3T Το υλικολογισμικό πρέπει επίσης να συμπεριληφθεί στη ROM (αυτό προστέθηκε στη δέσμευση υλικολογισμικού της GPU με την οποία συνδέθηκα πάνω από).

Επίσης, υπάρχει μια προειδοποίηση για τον ενοποιημένο πυρήνα: οι προγραμματιστές πρέπει είτε να χρησιμοποιήσουν τον πυρήνα μου (που είναι ήδη ενοποιημένος) είτε πρέπει να προσθέσουν υποστήριξη OP3 στον πυρήνα OxygenOS του OP3T. Η υποστήριξη για το OP3T δεν μπορεί απλώς να προστεθεί στον πυρήνα του OP3 λόγω ελλιπούς υποστήριξης Snapdragon 821, επομένως η ενοποίηση μπορεί να απαιτεί πολλή δουλειά από πρόθυμους προγραμματιστές OP3. Ο πυρήνας μου είχε ήδη πλήρη υποστήριξη Snapdragon 821 όταν έλαβα το OP3T (καθώς ο πυρήνας μου βασίζεται στον κλάδο Snapdragon 821 από το CAF), επομένως η διαδικασία ενοποίησης ήταν μάλλον ανώδυνη για μένα.

Είμαι βέβαιος ότι πολλοί προγραμματιστές θα προτιμούσαν να χρησιμοποιήσουν τον πυρήνα OxygenOS του OP3T παρά τον πυρήνα μου, κάτι που θα απαιτούσε την προσθήκη υποστήριξης για το OP3 σε αυτόν. Δεν έψαξα να δημιουργήσω έναν ενοποιημένο πυρήνα για τις ROM OxygenOS, οπότε ενδέχεται να απαιτηθεί πρόσθετη δουλειά για να συμβεί αυτό.

Μπορούν άλλοι προγραμματιστές να ρίξουν μια ματιά στον κώδικα και να δουν πώς γίνεται αυτό;

Ναί. Ο Sultanxda αναφέρει ότι όλο το έργο του είναι δημοσίως διαθέσιμο στο δικό του Λογαριασμός GitHub, ώστε όποιος διαθέτει την απαιτούμενη τεχνογνωσία να μπορεί να δει πώς έγινε η ενοποίηση της ROM. Ομολογουμένως, η διαδικασία είναι λίγο περίπλοκη και απαιτεί ένα επίπεδο τεχνογνωσίας, αλλά είναι μια διαδικασία που ρυθμίζεται και ξεχνά με πλεονεκτήματα που προέρχονται από τη μορφή μικρότερης συντήρησης, μικρότερης επανάληψης εργασιών και ενισχυμένης αίσθημα σιγουριάς ότι οι άνθρωποι δεν θα μπερδέψουν τα αρχεία των δύο συσκευών καθώς μόνο ένα zip λειτουργεί και για τις δύο. Μόλις μια ROM ή ένας πυρήνας ενοποιηθεί και επιβεβαιωθεί ότι είναι πλήρως λειτουργικός τόσο στο OnePlus 3 όσο και στο OnePlus 3T, απαιτείται πολύ λίγη πρόσθετη εργασία.


Ελπίζουμε ότι φέραμε στο φως νέες πληροφορίες που θα βοηθήσουν περισσότερους προγραμματιστές να επιλέξουν ενοποιημένες εκδόσεις για τις συσκευές. Η ανάπτυξη στο OnePlus 3T αυξάνεται, και οι ενοποιημένες εκδόσεις είναι το μέλλον και για τις δύο συσκευές στο μέλλον.