Abbiamo contattato SultanXDA per chiedere informazioni su come funzionano la sua ROM e il suo kernel unificati per OnePlus 3/3T. Continua a leggere mentre lo scopriamo!
Ai tempi in cui abbiamo parlato dello sviluppatore riconosciuto XDA Sultanxda ha rilasciato il suo ROM e kernel CyanogenMod 13 personalizzati per OnePlus 3T, molte persone sono rimaste sorprese nel vedere la "stessa" build ROM rilasciata per OnePlus 3T arrivare su OnePlus 3 (o viceversa!).
Sultanxda ha adottato l'approccio unificato alla distribuzione delle ROM per i OnePlus 3 e il OnePlus 3T a causa del loro hardware in gran parte simile e del software di basso livello. Ciò significava che la ROM offriva compatibilità incrociata tra entrambi i dispositivi, dove lo stesso zip ROM poteva essere distribuito al duo. Gli zip compatibili tra loro hanno consentito agli utenti (e anche allo sviluppatore) di non preoccuparsi di eseguire accidentalmente il flashing dello zip sbagliato e di ottenere un dispositivo in muratura. Questo non vuol dire che OnePlus 3/3T siano facili da montare, ma comporta solo meno grattacapi nel complesso per tutte le parti coinvolte.
Abbiamo contattato lo sviluppatore riconosciuto XDA Sultanxda di fare maggiore luce sull'intera procedura, in modo da incentivare l'adozione del suo metodo. Ecco i principali punti salienti della conversazione con maggiore enfasi:
Cosa c'è di diverso su OnePlus 3/3T che consente ROM unificate?
Il motivo per cui è possibile una ROM unificata è perché OnePlus ha unificato le BSP (le librerie proprietarie) [Board Support Package]. Sebbene unificare un kernel sia semplice, unificare una ROM è normalmente impossibile per gli sviluppatori [ROM] a causa di incoerenze nel BSP che solo l'OEM può risolvere. Da parte mia, tutto quello che dovevo fare era unificare il kernel e separare alcune immagini del firmware della GPU. Le immagini del firmware della GPU sono diverse tra Snapdragon 820 e 821, quindi non sono compatibili. Ho modificato il kernel per realizzarlo caricare il firmware GPU corretto per ciascun dispositivo per risolvere questo problema. io poi aggiunte le immagini del firmware corrispondenti alla ROM in questo commit. Il resto delle immagini firmware specifiche del dispositivo (come le immagini del modem) si trovano in una partizione firmware su ciascun dispositivo, quindi il problema della GPU è stato l'unico problema relativo al firmware che ho riscontrato.
Come fanno la ROM e il kernel a capire di quale dispositivo si tratta?
Il kernel sa su quale dispositivo è in esecuzione grazie al bootloader. Il bootloader seleziona la configurazione dell'albero dei dispositivi (compresa nell'immagine del kernel) che corrisponde al suo ID della scheda e la passa configurazione sul kernel Ciò offre al kernel la flessibilità di caricare le configurazioni appropriate sia per OnePlus 3 che per OnePlus 3T. Puoi trovare l'ID della scheda per OnePlus 3 e il OnePlus 3T seguendo i collegamenti ipertestuali.
Hai solo bisogno di un kernel modificato per supportare le build unificate?
No, anche la ROM deve essere unificata. OnePlus ha unificato il BSP a partire dalle Open Beta per OP3, e lo ha mantenuto unificato nella versione ufficiale OP3T OxygenOS. Ciò significa che le ROM devono utilizzare librerie proprietarie delle build Open Beta di OP3 o della versione ufficiale OxygenOS di OP3T per essere unificate. C'è anche il requisito dell'immagine del firmware GPU che ho descritto sopra e il touchscreen dell'OP3T anche il firmware deve essere incluso nella ROM (questo è stato aggiunto nel commit del firmware della GPU a cui mi sono collegato Sopra).
Inoltre, c'è un avvertimento sul kernel unificato: gli sviluppatori devono utilizzare il mio kernel (che è già unificato) oppure devono aggiungere il supporto OP3 al kernel OxygenOS di OP3T. Il supporto per OP3T non può essere semplicemente aggiunto al kernel di OP3 a causa del supporto incompleto di Snapdragon 821, quindi l'unificazione potrebbe richiedere molto lavoro da parte degli sviluppatori OP3 disponibili. Il mio kernel aveva già il supporto completo per Snapdragon 821 quando ho ricevuto OP3T (poiché il mio kernel è basato sul ramo Snapdragon 821 di CAF), quindi il processo di unificazione è stato piuttosto indolore per me.
Sono sicuro che molti sviluppatori preferirebbero utilizzare il kernel OxygenOS di OP3T piuttosto che il mio kernel, il che richiederebbe l'aggiunta del supporto per OP3. Non ho pensato di creare un kernel unificato per le ROM OxygenOS, quindi potrebbe essere necessario ulteriore lavoro per realizzarlo.
Altri sviluppatori possono dare un'occhiata al codice e vedere come è fatto?
SÌ. Sultanxda afferma che tutto il suo lavoro è pubblicamente disponibile sul suo sito Conto GitHub, quindi chiunque abbia il know-how necessario può vedere come è stata intrapresa l'unificazione ROM. Certo, la procedura è un po' complicata e richiede un certo livello di esperienza, ma è un processo molto "imposta e dimentica". con vantaggi derivanti sotto forma di minore manutenzione, minore duplicazione del lavoro e miglioramento senso di sicurezza che le persone non confonderanno i file dei due dispositivi poiché un solo zip funziona per entrambi. Una volta che una ROM o un kernel sono unificati e confermati che sono perfettamente funzionanti sia su OnePlus 3 che su OnePlus 3T, è necessario pochissimo lavoro aggiuntivo.
Ci auguriamo di aver portato alla luce nuove informazioni che dovrebbero aiutare più sviluppatori a optare per build unificate per i dispositivi. Lo sviluppo su OnePlus 3T è in crescitae le build unificate rappresentano il futuro per entrambi i dispositivi in futuro.