Sungstratum от екип [projekt.] носи всички тематични екстри на RRO-OMS на устройства Samsung Nougat чрез Substratum! Прочетете, за да научите повече!
Темата за Android измина дълъг път, от хакерски редакции до Substratum и сега, Sungstratum. Преди години думата „тема“ в дискусиите за Android често беше замествана от думата „избирач“, намигване към T-Mobile Theme Chooser, намерен в CyanogenMod, който постави основите, които превърнаха Android в тематичен рай. Възможността да променят външния вид на операционната система предостави на потребителите друго измерение на персонализиране, позволявайки им да правят промени, които правят устройствата им много по-персонализирани.
Добрата работа продължи в две различни посоки. Theme Chooser еволюира в CyanogenMod Theme Engine, но въпреки годините на усилия, положени в тематични ресурси, CMTE стана остарял когато се появиха други алтернативи.
RRO и слоеве
Основата на една от алтернативите беше положена, когато кодовият принос на Sony под формата на новата рамка, наречена
Наслагване на ресурси по време на изпълнение (RRO) беше приет в AOSP. Тази рамка предоставя възможност за замяна на ресурсите на приложението по време на изпълнение (оттук и името). „Наслагванията“ сами по себе си присъстват и се поддържат в Android още от Gingerbread (и може би и по-рано), използвани предимно за размяна на ресурси, за да накарат приложенията да работят върху това конкретно устройство. Подходът на Sony към RRO включва модифициране на мениджъра на активи, за да приема apk файлове, които използват ресурси, картографирани към други съответни ресурси, съществуващи на устройството. След това тези нови ресурси от apk бяха насложени върху базовите ресурси само по време на изпълнение, позволявайки на системата да работи така, сякаш тези нови ресурси винаги са били част от нея.Рамката RRO беше обединена в AOSP преди Lollipop 5.0 да бъде публикуван, но първоначалните няколко компилации на 5.0 имаха части от рамката, повредени поради други промени. Прегледите за разработчици на Android 6.0 Marshmallow бяха първите, които добавиха функционална, макар и ограничена RRO рамка, отваряйки вратите на възможностите за персонализиране точно на стандартното ниво на Android. Така че, освен ако OEM умишлено не се е опитал да се отклони от наличните опции за Android теми, определено ниво на последователност може да се запази в подхода за това как ще бъдат внедрени „темите“. Android.
Докато AOSP си играеше с RRO и търсеше най-добрия начин да включи всичко това, екип от разработчици, наречен BitSyko работиха заедно в колективно усилие, наречено "Слоеве". Слоевете разшириха стандартната RRO функционалност в Android 5.1 Lollipop, за да позволят по-сложно превключване на ресурси и да позволят повече контрол на елементи за теми, отколкото е възможно със стандартния RRO. Тъй като слоевете са изградени нагоре върху RRO, създателите на ROM трябваше да добавят допълнителен код, за да активират функционалността на слоевете в своите ROM, тъй като не всички теми на слоевете биха работили на наличен RRO в Marshmallow.
Междувременно Sony продължи със собствените си усилия към темата за Android. Започна работа по OMS (услуга за управление на наслагване), клиент за управление на наслагвания, който ще позволи на доставчиците динамично да контролират приоритетите и да активират и деактивират наслагвания. OMS се слива с AOSP и ще си проправи път към Android O. XDA признат разработчик николашум успя да потвърди чрез своите източници, че Android O ще има „динамични наслагвания“, което се смята за препратка към OMS.
OMS предизвика конфликти със слоевете, тъй като традиционно такива функции бяха под контрола на темата. За да се справят с проблемите, повдигнати от OMS, както и да разширят функционалността на слоевете, BitSyko се обединиха отново (и се преименуваха на [проект.]) да създам Субстрат. Substratum е клиент с OMS функционалност който се опитва да съчетае функционалността на слоевете с OMS и също така заимства други елементи от други минали решения за тематизиране. Наслагванията вече не се припокриваха едно върху друго, за да тематизират отделните елементи, тъй като сега всички необходими елементи бяха инжектирани в едно наслагване. Функции като компилиране на устройство позволяват темите да се прилагат, без да е необходимо рестартиране между промените, което го прави значително по-лесно за крайните потребители да изпробват теми и да експериментират. Substratum е в процес на активно развитие от самото начало и изброява всички свои характеристики и добавената функционалност би била извън обхвата на тази статия, така че ще преминем към истинската тема на това парче.
Субстрат в Sungstratum
Както беше обяснено в предишния раздел, Substratum започна като начин за разширяване на функционалността на стоковия OMS, както и на функционалността на запасния RRO (чрез слоеве). Substratum е предназначен да се използва заедно с базирани на AOSP ROM, тъй като повечето други производители на оригинално оборудване биха направили противоречиви промени което не би позволило на Substratum да съществува съвместно с техните модификации върху редактиран UX скин, като този на Samsung за пример.
Самият Samsung също работеше върху решение за тематизиране за използване на собствените си устройства на Nougat. За разлика от Sony, Samsung не прояви интерес да върне тематичния код към AOSP. Но тъй като решението на Samsung беше доста основно, AOSP всъщност не губеше много. Темистичното решение на Samsung, включено в Touchwiz, се появи реално на Samsung Galaxy S6, но както споменахме, беше доста ограничено в това, което можеше да се опита да постигне. Преди това имаше ограничени експерименти, които започнаха с Galaxy Alpha, въпреки че повечето системни елементи на потребителския интерфейс бяха извън неговия обхват. Темите могат да променят тапети и икони, както и няколко стокови приложения на Samsung, като например набиране, контакти, съобщения и зона за уведомяване.
Както се оказва, тематичният двигател на Samsung се простира RRO, както се намира в AOSP. Samsung също пресъздадоха своя собствена вътрешна версия на OMS след разширяване на RRO, така че техните реализации на RRO и OMS се различават от AOSP. Но изненадващо, с не много голяма сума - аномално поведение, когато се вземе предвид отличителността и сложността на Touchwiz. Тематистите, използващи по-нови флагмани на Samsung, съобщиха, че могат да инсталират RRO наслагвания и да ги накарат да темизират приложения на трети страни.
Това беше репликата, която екипът [projekt.] трябваше да проучи дали официално поддържа устройства на Samsung в Substratum. Екипът преобразува малко количество код от техния RRO/Legacy раздел на тяхното приложение, но вместо изисквайки root и искайки рестартиране, те изстреляха конкретни намерения, така че наслагванията да бъдат инсталирани. След това екипът работи, за да гарантира, че приложенията, засегнати от темите, са принудително затворени във фонов режим, за да се осигури пълно опресняване на активите при следващото стартиране.
Попитахме XDA Recognized Developer николашум за да ни предостави някои прозрения за предизвикателствата, пред които е изправен екипът, когато работи срещу внедряването на RRO-OMS със затворен код на Samsung:
Предизвикателствата, пред които се изправихме, бяха доста неясни и непознати за много хора, които нямат много познания разбиране на системите за тематизиране, независимо дали са с отворен или затворен код - всичко има своя собствена проба и фаза на грешка. В този случай, работейки със Samsung, се натъкнах на много проблеми, но основният беше, че системните намерения не са задействан за наслагвания след завършване на инсталацията - като например използване на излъчващи приемници с “android.intent.action. PACKAGE_ADDED” - Theme Service отказва всичко, което не е част от системния подпис с конкретен Samsung разрешение за тематична услуга от получаването на това, така че най-трудната част са заобиколните решения, които трябваше да намерим начин наоколо.
Начинът, по който използваме Substratum заедно с Theme Engine на Samsung, е като използваме същата система като тях. Те използват силно модифицирана версия на системата Resource Runtime Overlay на Sony, съкратено като RRO или известна като наследство сред потребителите на Substratum. Различното обаче е, че темите на Samsung имат допълнително разрешение, което скрива тези наслагвания от настройките, така че не можете да ги деинсталирате едно по едно ръчно. Ние използваме една и съща система, но използваме внедряването на AOSP/Sony, поради което Темите на Samsung могат изцяло да създават тематична рамка, докато Наслагванията на субстрата не могат да докоснат цел на посредник, която не съществува „fwk“ - както всички знаем, рамката е просто пакет „android“ име.
Изглеждаше странно, че [projekt.] успя да работи заедно с внедряването на RRO на Samsung с относителна лекота. Всеки, който някога е работил с устройства на Samsung, може да потвърди колко трудни Samsung често прави нещата. Потърсихме всеки конкретен блок, който екипът срещна по време на тяхното пренасяне:
Наистина има някакъв механизъм за сигурност, който засегна няколко потребители - където наслагванията се връщат при стартиране. Това се дължи на начина, по който Samsung зарежда устройството си. Тъй като повечето сме на 7.0 на TouchWiz/Samsung Experience, ние използваме нов метод за „Оптимизиране на приложения“ (вие можете да видите това, когато актуализирате телефона си, ще покаже известие с иконата на Android Nougat, което казва, че се надгражда на заден план), така че този начин за оптимизиране на приложения също разтоварва целта пакети, което в крайна сметка прекъсва процеса на idmapping при зареждане (поради несъществуващ целеви пакет) и по този начин няколко души изпитват наслагване на разтоварвания след рестартирайте.
Можете също да видите това да се случва и с няколко теми на Samsung, особено с темата Dark/Black на @envy~ - той прави цвета на лентата за навигация по подразбиране в Дисплей -> Лента за навигация черен, където е действителният цвят по подразбиране бяло. След като го настроите на черно, можете да отворите клавиатурата и лентата за навигация остава черна. Това ще бъде върнато на случаен принцип при рестартиране, както и на много устройства.
С възвръщането на значимостта на тематизирането, какви са плановете на Substratum за страничните клонове като Sungstratum?
Предстои, ние ще обединим малко малко приложение в нашата добавка за настоящите ни потребители, така че те да го направят да могат да спрат Samsung Theme Service, ако всички теми, инсталирани на техните устройства, са инсталирани от XDA. Така че хората, които ще използват теми, форматирани с тема Samsung, от XDA, вие ще можете да използвате добавката, за да предотвратите Услугата на Samsung не я връща обратно към основната тема след всяко рестартиране (защото не е инсталирана от магазина на Samsung официално). Ще изисква безплатен ключ за разработчици на Samsung, наличен за получаване от техния сайт, но ще бъде предварително пакетиран с изтегляне на sungstratum addon.
С последните и предстоящи промени в AOSP и Android O, изглежда, че някога новосъздадената операционна система на Google ще има още повече персонализация, която ще бъде предадена на потребителя. Някои OEM производители дори планират да се отърват от своите персонализирани потребителски интерфейси и UX добавки в полза на AOSP, а други като Samsung се движат достатъчно близо със собствените си тематични решения. Предвиждаме бъдеще, в което темите играят основна роля в потребителското изживяване на още повече хора - операционна система където вие наистина контролирате как изглежда вашето устройство, където естетиката на потребителския интерфейс е пригодена от вас Вие. И ние не бихме могли да постигнем такова бъдеще без колективната сила на тази страхотна общност и проекти като Substratum.
Вижте Substratum Integration за Samsung Nougat в нашите форуми за Substratum!Субстрат в GitHub