Свързахме се със SultanXDA, за да попитаме как работят неговият унифициран ROM и ядрото за OnePlus 3/3T. Прочетете, докато разберем!
Назад, когато разгледахме този XDA Recognized Developer Султанджа пусна своя персонализиран CyanogenMod 13 ROM и ядро за OnePlus 3T, много хора бяха изненадани да видят „същата“ версия на ROM, която беше пусната за OnePlus 3T, да си проправи път към OnePlus 3 (или обратното!).
Sultanxda прие единния подход за разпространение на ROM за OnePlus 3 и на OnePlus 3T поради техния до голяма степен сходен хардуер и софтуер на ниско ниво. Това означаваше, че ROM предлага кръстосана съвместимост между двете устройства, където един и същ ROM zip може да бъде разпространен на дуото. Кръстосано съвместимите ципове позволиха на потребителите (и на разработчика също) да не се притесняват от мигане на грешен цип случайно и получаване на блокирано устройство. Това не означава, че OnePlus 3/3T са лесни за сглобяване - това просто води до по-малко главоболия като цяло за всички участващи страни.
Свързахме се с XDA Recognized Developer Султанджа да хвърли малко повече светлина върху цялата процедура, за да насърчи приемането на неговия метод. Ето основните изводи от разговора с допълнителен акцент:
Какво е различното на OnePlus 3/3T, което позволява унифицирани ROM?
Причината, поради която унифициран ROM е възможен е, че OnePlus обедини BSP (собствените библиотеки) [Board Support Package]. Въпреки че обединяването на ядрото е лесно, обединяването на ROM обикновено е невъзможно за [ROM] разработчиците поради несъответствия в BSP, които само OEM може да адресира. От моя страна всичко, което трябваше да направя, беше да обединя ядрото и да отделя някои изображения на фърмуера на GPU. Изображенията на фърмуера на графичния процесор са различни между Snapdragon 820 и 821, така че не са кръстосано съвместими. Модифицирах ядрото, за да го направя заредете правилния фърмуер на GPU за всяко устройство, за да поправите това. аз тогава добави съответните изображения на фърмуера към ROM в този ангажимент. Останалите изображения на фърмуера, специфични за устройството (като изображенията на модема) се намират в дял на фърмуера на всяко устройство, така че проблемът с GPU беше единственият проблем, свързан с фърмуера, с който се сблъсках.
Как ROM и ядрото определят кое устройство е?
Ядрото знае на кое устройство работи благодарение на буутлоудъра. Буутлоудърът избира конфигурацията на дървото на устройствата (опакована в изображението на ядрото), която съответства на неговия ID на борда и предава това конфигурация върху ядрото Това дава на ядрото гъвкавост да зарежда подходящите конфигурации както за OnePlus 3, така и за OnePlus 3T. Можете да намерите ID на борда за OnePlus 3 и на OnePlus 3T като следвате хипервръзките.
Имате ли нужда само от модифицирано ядро, за да поддържате унифицирани компилации?
Не, ROM също трябва да бъде унифициран. OnePlus обедини BSP, започвайки от Open Betas за OP3, и го запази унифициран в официалното издание на OP3T OxygenOS. Това означава, че ROM трябва да използват собствени библиотеки или от Open Beta версиите на OP3, или от официалното издание на OxygenOS на OP3T, за да бъдат унифицирани. Има и изискване за изображението на фърмуера на GPU, което описах по-горе, и сензорния екран на OP3T фърмуерът също трябва да бъде включен в ROM (това беше добавено в ангажимента за фърмуер на GPU, към който свързах по-горе).
Освен това има предупреждение към унифицираното ядро: разработчиците трябва или да използват моето ядро (което вече е унифицирано), или трябва да добавят поддръжка на OP3 към ядрото OxygenOS на OP3T. Поддръжката за OP3T не може просто да бъде добавена към ядрото на OP3 поради непълна поддръжка на Snapdragon 821, така че обединяването може да изисква много работа от желаещите разработчици на OP3. Моето ядро вече имаше пълна поддръжка на Snapdragon 821, когато получих OP3T (тъй като моето ядро е базирано на клона на Snapdragon 821 от CAF), така че процесът на обединяване беше доста безболезнен за мен.
Сигурен съм, че много разработчици биха предпочели да използват ядрото OxygenOS на OP3T, а не моето ядро, което ще изисква добавяне на поддръжка за OP3 към него. Не съм търсил да направя унифицирано ядро за OxygenOS ROM, така че може да е необходима допълнителна работа, за да се случи това.
Могат ли други разработчици да погледнат кода и да видят как се прави това?
да Sultanxda споменава, че цялата му работа е публично достъпна на неговия GitHub акаунт, така че всеки с необходимото ноу-хау може да види как е извършено обединяването на ROM. Разбира се, процедурата е малко натоварена и изисква ниво на опит, но това е процес на задаване и забравяне с ползи, произтичащи от формата на по-малка поддръжка, по-малко дублиране на работа и подобрена чувство на сигурност, че хората няма да объркат файловете на двете устройства, тъй като само един zip работи и за двете. След като ROM или ядрото бъдат обединени и потвърдено, че са напълно функционални както на OnePlus 3, така и на OnePlus 3T, е необходима много малко допълнителна работа.
Надяваме се, че сме разкрили нова информация, която трябва да помогне на повече разработчици да изберат унифицирани компилации за устройствата. Развитието на OnePlus 3T расте, а унифицираните компилации са бъдещето и за двете устройства.