A SultanXDA elmagyarázza az egységes ROM-megközelítést a OnePlus 3/3T-n

Megkerestük a SultanXDA-t, hogy érdeklődjünk az egységes ROM és a kernel működéséről a OnePlus 3/3T esetében. Olvass tovább, ahogy megtudjuk!

Még akkor, amikor foglalkoztunk ezzel az XDA elismert fejlesztővel Sultanxda elengedte az övét egyéni CyanogenMod 13 ROM és kernel a OnePlus 3T-hez, sokan meglepődtek, amikor látták, hogy a OnePlus 3T-hez kiadott "ugyanaz" ROM-felépítés eljut a OnePlus 3-hoz (vagy fordítva!).

A Sultanxda egységes megközelítést alkalmazott a ROM-ok terjesztésére vonatkozóan OnePlus 3 és a OnePlus 3T nagyrészt hasonló hardverüknek és alacsony szintű szoftvereiknek köszönhetően. Ez azt jelentette, hogy a ROM keresztkompatibilitást kínált mindkét eszköz között, ahol ugyanazt a ROM zip-et lehetett kiosztani a duónak. A keresztkompatibilis zip-ek lehetővé tették a felhasználóknak (és a fejlesztőnek is), hogy ne aggódjanak amiatt, hogy véletlenül rossz zip-t villogtatnak, és tönkreteszik az eszközt. Ez nem azt jelenti, hogy a OnePlus 3/3T könnyen összerakható – csak összességében kisebb fejfájással jár az összes érintett fél számára.

Megkerestük az XDA Recognized Developert Sultanxda hogy jobban megvilágítsa az egész eljárást, hogy ösztönözze módszerének elfogadását. Íme a beszélgetés főbb kivonatai, kiemelt hangsúllyal:

Miben különbözik a OnePlus 3/3T, amely lehetővé teszi az egyesített ROM-okat?

Az egyesített ROM azért lehetséges, mert a OnePlus egyesítette a BSP-t (a szabadalmaztatott könyvtárakat) [Board Support Package]. Bár a kernel egyesítése egyszerű, a ROM egyesítése általában lehetetlen a [ROM] fejlesztők számára a BSP olyan inkonzisztenciái miatt, amelyeket csak az OEM tud kezelni. A magam részéről mindössze annyit kellett tennem, hogy egységesítsem a kernelt, és különítsen el néhány GPU firmware-képet. A GPU firmware képei eltérnek a Snapdragon 820 és 821 között, ezért nem keresztkompatibilisek. Módosítottam a kernelt, hogy ez legyen töltse be a megfelelő GPU firmware-t minden egyes eszköznek meg kell oldania ezt. én akkor hozzáadta a megfelelő firmware képeket a ROM-ra ebben a véglegesítésben. Az eszközspecifikus firmware-képek többi része (például a modemképek) az egyes eszközök firmware-partíciójában található, így a GPU probléma volt az egyetlen firmware-rel kapcsolatos probléma, amellyel szembesültem.

Hogyan találja ki a ROM és a kernel, hogy melyik eszközről van szó?

A rendszermag a rendszerbetöltőnek köszönhetően tudja, hogy melyik eszközön fut. A rendszerbetöltő kiválasztja azt a Device Tree konfigurációt (amely a kernel image-be van csomagolva), amely megegyezik a kártya azonosítójával, és átadja ezt konfiguráció a kernelre Ez rugalmasságot biztosít a kernel számára a megfelelő konfigurációk betöltéséhez mind a OnePlus 3, mind a OnePlus 3T. Megtalálhatja a tábla azonosítóját OnePlus 3 és a OnePlus 3T a hiperhivatkozások követésével.

Csak módosított kernelre van szüksége az egyesített buildek támogatásához?

Nem, a ROM-nak is egységesnek kell lennie. A OnePlus az OP3 nyílt béta verzióitól kezdve egységesítette a BSP-t, és egységesítette a hivatalos OP3T OxygenOS kiadásban. Ez azt jelenti, hogy a ROM-oknak az OP3 Open Beta buildjéből vagy az OP3T hivatalos OxygenOS kiadásából származó szabadalmaztatott könyvtárakat kell használniuk ahhoz, hogy egységesek legyenek. Van még a fentebb leírt GPU firmware képigénye és az OP3T érintőképernyője firmware-t is bele kell foglalni a ROM-ba (ezt a GPU firmware commit-be adták hozzá amit linkeltem felett).

Ezenkívül van egy figyelmeztetés az egyesített kernellel kapcsolatban: a fejlesztőknek vagy az én kernellemet kell használniuk (amely már egységes), vagy OP3 támogatást kell hozzáadniuk az OP3T OxygenOS kerneléhez. Az OP3T támogatása a hiányos Snapdragon 821 támogatás miatt nem egyszerűen hozzáadható az OP3 kerneléhez, így az egységesítés sok munkát igényelhet a hajlandó OP3 fejlesztőktől. A kernelem már teljes Snapdragon 821 támogatással rendelkezett, amikor megkaptam az OP3T-t (mivel a kernelem a CAF Snapdragon 821 ágán alapul), így az egyesítési folyamat számomra meglehetősen fájdalommentes volt.

Biztos vagyok benne, hogy sok fejlesztő szívesebben használja az OP3T OxygenOS rendszermagját, nem pedig az én kernelemet, amihez az OP3 támogatását kellene hozzá adni. Nem foglalkoztam az OxygenOS ROM-ok egységes kernelének létrehozásával, így további munkára lehet szükség ennek megvalósításához.

Más fejlesztők megnézhetik a kódot, és megnézhetik, hogyan történik ez?

Igen. Sultanxda megemlíti, hogy minden munkája nyilvánosan elérhető az övén GitHub-fiók, így bárki, aki rendelkezik a szükséges know-how-val, láthatja, hogyan történt a ROM-egyesítés. Igaz, az eljárás egy kicsit bonyolult, és bizonyos szintű szakértelmet igényel, de ez egy nagyon beállított és elfelejtett folyamat kevesebb karbantartásból, kevesebb párhuzamos munkavégzésből és fokozottabb előnyökből fakad biztos lehet benne, hogy az emberek nem fogják összekeverni a két eszköz fájljait, mivel csak egy zip működik mindkettőnél. Miután a ROM vagy a kernel egyesült, és megbizonyosodott arról, hogy teljesen működőképes a OnePlus 3 és a OnePlus 3T esetében is, nagyon kevés további munkára van szükség.


Reméljük, hogy olyan új információkat hoztunk napvilágra, amelyek segíthetnek majd több fejlesztőnek abban, hogy az eszközök egységes verzióját válasszák. Egyre növekszik a OnePlus 3T fejlesztése, és az egyesített buildek jelentik a jövőt mindkét eszköz számára.