Vi kontaktede SultanXDA for at høre om, hvordan hans forenede ROM og kerne fungerer til OnePlus 3/3T. Læs videre, når vi finder ud af det!
Dengang vi dækkede den XDA-anerkendte udvikler Sultanxda frigivet sin brugerdefineret CyanogenMod 13 ROM og kerne til OnePlus 3T, var mange mennesker overraskede over at se den "samme" ROM-bygning, der blev udgivet til OnePlus 3T, finde vej til OnePlus 3 (eller omvendt!).
Sultanxda vedtog den forenede tilgang til distribution af ROM'er til OnePlus 3 og OnePlus 3T på grund af deres stort set ens hardware og lavt niveau software. Det betød, at ROM'en tilbød krydskompatibilitet mellem begge enheder, hvor den samme ROM-zip kunne distribueres til duoen. Krydskompatible lynlåse gjorde det muligt for brugere (og også udvikleren) ikke at bekymre sig om at blinke den forkerte lynlås ved et uheld og få en muret enhed. Dette betyder ikke, at OnePlus 3/3T er let at bygge - det medfører bare mindre hovedpine generelt for alle de involverede parter.
Vi kontaktede XDA Recognized Developer
Sultanxda at kaste noget mere lys over hele proceduren for at tilskynde til adoption af hans metode. Her er de vigtigste ting fra samtalen med ekstra vægt:Hvad er anderledes på OnePlus 3/3T, der giver mulighed for forenede ROM'er?
Grunden til, at en samlet ROM er mulig, er fordi OnePlus forenede BSP (de proprietære biblioteker) [Board Support Package]. Selvom det er let at forene en kerne, er det normalt umuligt at forene en ROM for [ROM]-udviklere på grund af uoverensstemmelser i BSP'en, som kun OEM kan adressere. På min side var alt, hvad jeg skulle gøre, at forene kernen og adskille nogle GPU-firmwarebilleder. GPU'ens firmwarebilleder er forskellige mellem Snapdragon 820 og 821, så de er ikke krydskompatible. Jeg ændrede kernen for at lave den indlæs den korrekte GPU-firmware for hver enhed for at rette dette. jeg da tilføjede de tilsvarende firmwarebilleder til ROM'en i denne commit. Resten af de enhedsspecifikke firmwarebilleder (såsom modembillederne) er placeret i en firmwarepartition på hver enhed, så GPU-problemet var det eneste firmware-relaterede problem, jeg stod over for.
Hvordan finder ROM'en og kernen ud af, hvilken enhed det er?
Kernen ved, hvilken enhed den kører på takket være bootloaderen. Bootloaderen vælger Device Tree-konfigurationen (pakket ind i kernebilledet), der matcher dets board-id og sender dette konfiguration på kernen Dette giver kernen fleksibilitet til at indlæse de passende konfigurationer til både OnePlus 3 og OnePlus 3T. Du kan finde bestyrelsens ID for OnePlus 3 og OnePlus 3T ved at følge hyperlinkene.
Har du kun brug for en modificeret kerne for at understøtte unified builds?
Nej, ROM'en skal også forenes. OnePlus forenede BSP'en fra Open Betas til OP3 og holdt den samlet i den officielle OP3T OxygenOS-udgivelse. Dette betyder, at ROM'er skal bruge proprietære biblioteker fra enten OP3's Open Beta-builds eller OP3T's officielle OxygenOS-udgivelse for at blive forenet. Der er også kravet til GPU-firmwarebilledet, som jeg beskrev ovenfor, og OP3T'ens berøringsskærm Firmware skal også inkluderes i ROM'en (dette blev tilføjet i GPU firmware commit, jeg linkede til over).
Der er også en advarsel til den forenede kerne: Udviklere skal enten bruge min kerne (som allerede er forenet), eller de skal tilføje OP3-understøttelse til OP3T's OxygenOS-kerne. Understøttelse af OP3T kan ikke blot tilføjes til OP3's kerne på grund af ufuldstændig Snapdragon 821-understøttelse, så forening kan kræve meget arbejde fra villige OP3-udviklere. Min kerne havde allerede komplet Snapdragon 821-understøttelse, da jeg modtog OP3T (da min kerne er baseret på Snapdragon 821-grenen fra CAF), så foreningsprocessen var ret smertefri for mig.
Jeg er sikker på, at mange udviklere hellere vil bruge OP3T's OxygenOS-kerne frem for min kerne, hvilket ville kræve at tilføje understøttelse af OP3 til den. Jeg undersøgte ikke at lave en samlet kerne til OxygenOS ROM'er, så der kan være behov for yderligere arbejde for at få det til at ske.
Kan andre udviklere tage et kig på koden og se, hvordan dette gøres?
Ja. Sultanxda nævner, at alt hans arbejde er offentligt tilgængeligt på hans GitHub-konto, så alle med den nødvendige know-how kan se, hvordan ROM-sammenføringen blev foretaget. Indrømmet, proceduren er lidt involveret og kræver et niveau af ekspertise, men det er en meget sæt-og-glem proces med fordele, der opstår i form af mindre vedligeholdelse, mindre dobbeltarbejde og en forbedret følelse af sikkerhed for, at folk ikke vil forveksle filer på de to enheder, da kun én zip fungerer for begge. Når en ROM eller kerne er samlet og bekræftet at være fuldt funktionsdygtig på både OnePlus 3 og OnePlus 3T, kræves der meget lidt ekstra arbejde.
Vi håber, at vi har frembragt ny information, som skulle hjælpe flere udviklere med at vælge ensartede builds til enhederne. Udviklingen på OnePlus 3T vokser, og forenede builds er fremtiden for begge enheder fremover.