SultanXDA selgitab OnePlus 3/3T ühtset ROM-i lähenemisviisi

Pöördusime SultanXDA poole, et uurida, kuidas tema ühendatud ROM ja kernel OnePlus 3/3T jaoks töötavad. Lugege edasi, kui saame teada!

Siis, kui me seda XDA tunnustatud arendajat käsitlesime Sultanxda vabastas oma kohandatud CyanogenMod 13 ROM ja kernel OnePlus 3T jaoks, olid paljud inimesed üllatunud, nähes, et OnePlus 3T jaoks välja antud "sama" ROM-i ehitamine jõudis OnePlus 3-sse (või vastupidi!).

Sultanxda võttis ROMide levitamisel kasutusele ühtse lähenemisviisi OnePlus 3 ja OnePlus 3T nende suures osas sarnase riistvara ja madala taseme tarkvara tõttu. See tähendas, et ROM pakkus ristühilduvust mõlema seadme vahel, kus sama ROM-i zip sai jaotada duole. Ristühilduvad tõmblukud võimaldasid kasutajatel (ja ka arendajal) mitte muretseda vale tõmbluku kogemata vilkumise ja seadme tellise saamise pärast. See ei tähenda, et OnePlus 3/3T oleks hõlpsasti paigaldatav – see tekitab kõigile asjaosalistele üldiselt vähem peavalu.

Pöördusime XDA tunnustatud arendaja poole Sultanxda heita rohkem valgust kogu menetlusele, et julgustada oma meetodit omaks võtma. Siin on vestluse peamised väljavõtted, millele on lisatud rõhk:

Mis erineb OnePlus 3/3T-st, mis võimaldab ühtseid ROM-e?

Põhjus, miks ühtne ROM on võimalik, on see, et OnePlus ühendas BSP-d (varalised teegid) [plaadi tugipakett]. Kuigi kerneli ühendamine on lihtne, on ROM-i ühendamine [ROM] arendajate jaoks tavaliselt võimatu BSP ebakõlade tõttu, mida saab lahendada ainult OEM. Minu jaoks ei jäänud mul muud üle kui ühendada kernel ja eraldada mõned GPU püsivara kujutised. GPU püsivara kujutised erinevad Snapdragon 820 ja 821 vahel, seega ei ühildu need omavahel. Muutsin kernelit selle tegemiseks laadige õige GPU püsivara iga seadme jaoks seda parandada. Mina siis lisas vastavad püsivara pildid ROM-ile selles sissekandes. Ülejäänud seadmepõhised püsivara kujutised (nt modemi kujutised) asuvad iga seadme püsivara partitsioonis, nii et GPU probleem oli ainus püsivaraga seotud probleem, millega silmitsi seisin.

Kuidas ROM ja kernel aru saavad, mis seadmega on tegu?

Kernel teab tänu alglaadurile, millises seadmes see töötab. Alglaadur valib seadmepuu konfiguratsiooni (pakitud kerneli kujutisele), mis sobib selle plaadi ID-ga ja edastab selle konfiguratsioon kernelisse See annab kernelile paindlikkuse sobivate konfiguratsioonide laadimisel nii OnePlus 3 kui ka OnePlus 3T. Leiate tahvli ID OnePlus 3 ja OnePlus 3T järgides hüperlinke.

Kas teil on vaja ainult muudetud kernelit, et toetada ühtseid ehitusi?

Ei, ka ROM peab olema ühtne. OnePlus ühendas BSP alates avatud beetaversioonidest OP3 jaoks ja hoidis seda ühtsena ametlikus OP3T OxygenOS-i versioonis. See tähendab, et ROM-id peavad ühtseks kasutamiseks kasutama patenteeritud teeke kas OP3 avatud beetaversioonist või OP3T ametlikust OxygenOS-i väljalasest. Samuti on olemas GPU püsivara kujutise nõue, mida ma eespool kirjeldasin, ja OP3T puuteekraan püsivara tuleb lisada ka ROM-i (see lisati GPU püsivara sisseostu, mille linkisin eespool).

Ühtse tuuma puhul on ka hoiatus: arendajad peavad kas kasutama minu kernelit (mis on juba ühendatud) või lisama OP3T OxygenOS-i tuumale OP3 toe. OP3T tuge ei saa Snapdragon 821 mittetäieliku toe tõttu lihtsalt OP3 tuumale lisada, nii et ühendamine võib nõuda tahtlikelt OP3 arendajatelt palju tööd. Minu kernelil oli juba täielik Snapdragon 821 tugi, kui sain OP3T (kuna mu kernel põhineb CAF-i Snapdragon 821 harul), seega oli ühendamisprotsess minu jaoks üsna valutu.

Olen kindel, et paljud arendajad kasutaksid pigem OP3T OxygenOS-i tuuma, mitte minu kernelit, mis nõuaks sellele OP3 toe lisamist. Ma ei uurinud OxygenOS-i ROMide jaoks ühtse kerneli loomist, seega võib selle teoks tegemiseks vaja minna täiendavat tööd.

Kas teised arendajad saavad koodi vaadata ja näha, kuidas seda tehakse?

Jah. Sultanxda mainib, et kõik tema tööd on tema lehel avalikult saadaval GitHubi konto, nii et igaüks, kellel on vajalik oskusteave, näeb, kuidas ROM-i ühendamine ette võeti. Tõsi, protseduur on pisut seotud ja nõuab teatud teadmiste taset, kuid see on väga palju seadmise ja unustamise protsess eelistega, mis tulenevad väiksemast hooldusest, väiksemast töö dubleerimisest ja paremast kindlustunne, et inimesed ei aja kahe seadme faile segamini, kuna mõlema jaoks töötab ainult üks zip. Kui ROM või kernel on ühendatud ja nii OnePlus 3 kui ka OnePlus 3T puhul täielikult töökorras, on vaja väga vähe lisatööd.


Loodame, et tõime päevavalgele uut teavet, mis peaks aitama rohkematel arendajatel valida seadmete jaoks ühtse versiooni. OnePlus 3T arendus kasvab, ja ühtsed järgud on mõlema seadme tulevik.