Oslovili sme SultanXDA, aby sme sa spýtali, ako funguje jeho jednotná ROM a jadro pre OnePlus 3/3T. Čítajte ďalej, ako sa to dozvieme!
Keď sme sa zaoberali týmto uznávaným vývojárom XDA Sultanxda prepustil jeho vlastný CyanogenMod 13 ROM a jadro pre OnePlus 3T, veľa ľudí bolo prekvapených, keď videli, ako sa „rovnaká“ zostava ROM, ktorá bola vydaná pre OnePlus 3T, dostala do OnePlus 3 (alebo naopak!).
Sultanxda prijala jednotný prístup k distribúcii ROM pre OnePlus 3 a OnePlus 3T kvôli ich do značnej miery podobnému hardvéru a softvéru nízkej úrovne. To znamenalo, že ROM ponúkala krížovú kompatibilitu medzi oboma zariadeniami, pričom rovnaký zips ROM mohol byť distribuovaný do dua. Krížovo kompatibilné zipsy umožnili používateľom (a tiež vývojárom) nestarať sa o náhodné blikanie nesprávneho zipsu a získanie zablokovaného zariadenia. To neznamená, že OnePlus 3/3T sa dá ľahko postaviť – znamená to len celkovo menšie bolesti hlavy pre všetky zúčastnené strany.
Oslovili sme XDA Recognized Developer
Čo sa líši na OnePlus 3/3T, ktorý umožňuje jednotné ROM?
Dôvodom, prečo je možná jednotná ROM, je to, že OnePlus zjednotil BSP (proprietárne knižnice) [Board Support Package]. Aj keď je zjednotenie jadra jednoduché, zjednotenie ROM je zvyčajne pre vývojárov [ROM] nemožné kvôli nezrovnalostiam v BSP, ktoré môže vyriešiť iba OEM. Všetko, čo som musel urobiť, bolo zjednotiť jadro a oddeliť niektoré obrázky firmvéru GPU. Obrázky firmvéru GPU sa medzi Snapdragonom 820 a 821 líšia, takže nie sú vzájomne kompatibilné. Upravil som jadro, aby to bolo načítať správny firmvér GPU pre každé zariadenie, aby to vyriešilo. ja potom pridali príslušné obrázky firmvéru do ROM v tomto potvrdení. Zvyšok obrazov firmvéru špecifických pre zariadenie (ako napríklad obrazy modemu) sa nachádza v oblasti firmvéru na každom zariadení, takže problém s GPU bol jediný problém súvisiaci s firmvérom, ktorému som čelil.
Ako ROM a jadro zistia, o ktoré zariadenie ide?
Jadro vďaka bootloaderu vie, na ktorom zariadení beží. Bootloader vyberie konfiguráciu stromu zariadení (zabalenú do obrazu jadra), ktorá sa zhoduje s jeho ID dosky a odovzdá to konfigurácia do jadra To dáva jadru flexibilitu na načítanie vhodných konfigurácií pre OnePlus 3 a OnePlus 3T. Môžete nájsť ID dosky pre OnePlus 3 a OnePlus 3T sledovaním hypertextových odkazov.
Potrebujete iba upravené jadro na podporu unifikovaných zostavení?
Nie, ROM musí byť tiež zjednotená. OnePlus zjednotil BSP od Open Betas pre OP3 a zachoval ho zjednotený v oficiálnom vydaní OP3T OxygenOS. To znamená, že ROM musia používať proprietárne knižnice buď z Open Beta zostavy OP3 alebo z oficiálneho vydania OP3T OxygenOS, aby boli zjednotené. Existuje tiež požiadavka na obrázok firmvéru GPU, ktorú som opísal vyššie, a dotykový displej OP3T Firmvér musí byť tiež zahrnutý v ROM (toto bolo pridané v potvrdení firmvéru GPU, na ktorý som odkazoval vyššie).
Existuje tiež výhrada k zjednotenému jadru: vývojári musia buď použiť moje jadro (ktoré je už zjednotené), alebo musia pridať podporu OP3 do jadra OxygenOS OP3T. Podpora pre OP3T nemôže byť jednoducho pridaná do jadra OP3 kvôli neúplnej podpore Snapdragon 821, takže zjednotenie môže vyžadovať veľa práce od ochotných vývojárov OP3. Moje jadro už malo úplnú podporu Snapdragon 821, keď som dostal OP3T (keďže moje jadro je založené na vetve Snapdragon 821 od CAF), takže proces zjednotenia bol pre mňa pomerne bezbolestný.
Som si istý, že veľa vývojárov by radšej použilo jadro OxygenOS od OP3T ako moje jadro, čo by si vyžadovalo pridanie podpory pre OP3. Nepozeral som sa na vytvorenie jednotného jadra pre OxygenOS ROM, takže na to môže byť potrebná ďalšia práca.
Môžu sa ostatní vývojári pozrieť na kód a zistiť, ako sa to robí?
Áno. Sultanxda spomína, že všetky jeho práce sú verejne dostupné na jeho účet GitHub, takže každý, kto má potrebné know-how, môže vidieť, ako prebiehalo zjednotenie ROM. Je pravda, že postup je trochu komplikovaný a vyžaduje určitú úroveň odbornosti, ale je to veľmi náročný proces s výhodami vo forme menšej údržby, menšej duplicitnej práce a vylepšenia pocit istoty, že si ľudia nebudú zamieňať súbory týchto dvoch zariadení, pretože iba jeden zip funguje pre obe zariadenia. Po zjednotení ROM alebo jadra a potvrdení, že sú plne funkčné na OnePlus 3 aj OnePlus 3T, je potrebných len veľmi málo ďalšej práce.
Dúfame, že sme priniesli na svetlo nové informácie, ktoré by mali pomôcť viacerým vývojárom rozhodnúť sa pre jednotné zostavy pre zariadenia. Vývoj na OnePlus 3T rastiea zjednotené zostavy sú budúcnosťou oboch zariadení.