Vi tok kontakt med SultanXDA for å spørre om hvordan hans enhetlige ROM og kjerne fungerer for OnePlus 3/3T. Les videre når vi finner ut!
Tilbake da vi dekket den XDA-anerkjente utvikleren Sultanxda løslatt sin tilpasset CyanogenMod 13 ROM og kjerne for OnePlus 3T, ble mange overrasket over å se den "samme" ROM-bygningen som ble utgitt for OnePlus 3T komme til OnePlus 3 (eller omvendt!).
Sultanxda tok i bruk den enhetlige tilnærmingen til distribusjon av ROM-er for OnePlus 3 og OnePlus 3T på grunn av deres stort sett like maskinvare og programvare på lavt nivå. Dette betydde at ROM-en tilbød krysskompatibilitet mellom begge enhetene, der samme ROM-zip kunne distribueres til duoen. Krysskompatible zips tillot brukere (og utvikleren også) å ikke bekymre seg for å blinke feil zip ved et uhell og få en mursteinsenhet. Dette er ikke å si at OnePlus 3/3T er lett å bygge - det medfører bare mindre hodepine totalt sett for alle involverte parter.
Vi tok kontakt med XDA Recognized Developer Sultanxda
Hva er annerledes på OnePlus 3/3T som tillater enhetlige ROM-er?
Grunnen til at en enhetlig ROM er mulig er fordi OnePlus forenet BSP (de proprietære bibliotekene) [Board Support Package]. Selv om det er enkelt å forene en kjerne, er det normalt umulig å forene en ROM for [ROM]-utviklere på grunn av inkonsekvenser i BSP som bare OEM kan adressere. Alt jeg måtte gjøre var å forene kjernen og skille noen GPU-fastvarebilder. GPUens fastvarebilder er forskjellige mellom Snapdragon 820 og 821, så de er ikke krysskompatible. Jeg modifiserte kjernen for å lage den last inn riktig GPU-fastvare for hver enhet for å fikse dette. Jeg da lagt til de tilsvarende fastvarebildene til ROM-en i denne forpliktelsen. Resten av de enhetsspesifikke fastvarebildene (som modembildene) er plassert i en fastvarepartisjon på hver enhet, så GPU-problemet var det eneste firmware-relaterte problemet jeg møtte.
Hvordan finner ROM og kjerne ut hvilken enhet det er?
Kjernen vet hvilken enhet den kjører på takket være bootloaderen. Oppstartslasteren velger enhetstre-konfigurasjonen (pakket inn i kjernebildet) som samsvarer med styre-ID-en og sender denne konfigurasjon på kjernen Dette gir kjernen fleksibilitet til å laste de riktige konfigurasjonene for både OnePlus 3 og OnePlus 3T. Du kan finne styre-ID for OnePlus 3 og OnePlus 3T ved å følge hyperkoblingene.
Trenger du bare en modifisert kjerne for å støtte enhetlige bygg?
Nei, ROM-en må også være enhetlig. OnePlus forenet BSP fra Open Betas for OP3, og holdt den enhetlig i den offisielle OP3T OxygenOS-utgivelsen. Dette betyr at ROM-er må bruke proprietære biblioteker fra enten OP3s Open Beta-bygg eller OP3Ts offisielle OxygenOS-utgivelse for å bli enhetlig. Det er også GPU-fastvarebildekravet som jeg beskrev ovenfor, og OP3Ts berøringsskjerm fastvare må også inkluderes i ROM-en (dette ble lagt til i GPU-firmware-commit-en jeg koblet til ovenfor).
Det er også en advarsel til den enhetlige kjernen: utviklere må enten bruke kjernen min (som allerede er enhetlig), eller de må legge til OP3-støtte til OP3Ts OxygenOS-kjernen. Støtte for OP3T kan ikke bare legges til OP3s kjerne på grunn av ufullstendig Snapdragon 821-støtte, så forening kan kreve mye arbeid fra villige OP3-utviklere. Kjernen min hadde allerede fullstendig Snapdragon 821-støtte da jeg mottok OP3T (siden min kjerne er basert på Snapdragon 821-grenen fra CAF), så foreningsprosessen var ganske smertefri for meg.
Jeg er sikker på at mange utviklere heller vil bruke OP3Ts OxygenOS-kjernen i stedet for kjernen min, noe som vil kreve å legge til støtte for OP3 til den. Jeg så ikke på å lage en enhetlig kjerne for OxygenOS ROM-er, så det kan kreves ekstra arbeid for å få det til.
Kan andre utviklere ta en titt på koden og se hvordan dette gjøres?
Ja. Sultanxda nevner at alt arbeidet hans er offentlig tilgjengelig på hans GitHub-konto, slik at alle med den nødvendige kunnskapen kan se hvordan ROM-foreningen ble utført. Riktignok er prosedyren litt involvert og krever et nivå av ekspertise, men det er en veldig sett-og-glem-prosess med fordeler som oppstår i form av mindre vedlikehold, mindre dobbeltarbeid og en forbedret følelse av sikkerhet for at folk ikke vil forveksle filer på de to enhetene, da bare én zip fungerer for begge. Når en ROM eller kjerne er forenet og bekreftet å være fullt funksjonell på både OnePlus 3 og OnePlus 3T, kreves det svært lite ekstra arbeid.
Vi håper vi har fått frem ny informasjon som bør hjelpe flere utviklere med å velge enhetlige bygg for enhetene. Utviklingen på OnePlus 3T vokser, og enhetlige bygg er fremtiden for begge enhetene fremover.