Hvordan Substratum ga flere valgmuligheter til en ufleksibel TouchWiz

Sungstratum fra team [prosjekt.] bringer alle temagodbitene til RRO-OMS til Samsung Nougat-enheter gjennom Substratum! Les videre for å vite mer!

Android-tema har kommet langt, fra hacky redigeringer til Substratum og nå, Sungstratum. For år tilbake ble ordet "tema" i Android-diskusjoner ofte erstattet av ordet "velger", et nikk til T-Mobile Theme Chooser funnet i CyanogenMod som la grunnlaget som gjorde Android til et tema paradis. Muligheten til å endre utseendet til operativsystemet ga brukerne en annen dimensjon av tilpasning, slik at de kunne gjøre endringer som gjør enhetene deres mye mer personlig.

Det gode arbeidet fortsatte i to forskjellige retninger. Theme Chooser utviklet seg til CyanogenMod Theme Engine, men til tross for mange år med innsats i temaressurser, ble CMTE foreldet når andre alternativer dukket opp.


RRO og lag

Grunnlaget for et av alternativene ble lagt da Sonys kodebidrag i form av det nye rammeverket ringte Runtime Resource Overlay (RRO) ble akseptert i AOSP. Dette rammeverket gir muligheten til å erstatte applikasjonsressurser under kjøring (derav navnet). "Overlegg" i seg selv har vært til stede og støttet i Android fra så tidlig som Gingerbread (og kanskje tidligere også), brukes først og fremst til å bytte ut ressurser for å få applikasjoner til å fungere på det spesifikke enhet. Sonys tilnærming til RRO innebar å endre kapitalforvalteren til å akseptere apks som brukte ressurser kartlagt til andre tilsvarende ressurser som eksisterer på enheten. Disse nye ressursene fra apk ble deretter lagt på toppen av basisressursene kun under kjøring, slik at systemet kunne jobbe sammen som om disse nye ressursene alltid hadde vært en del av det.

RRO-rammeverket ble slått sammen til AOSP før Lollipop 5.0 ble offentliggjort, men de første få byggene av 5.0 hadde deler av rammeverket ødelagt på grunn av andre endringer. Android 6.0 Marshmallows utviklerforhåndsvisninger var de første som la til et funksjonelt, men begrenset RRO-rammeverk, åpne dørene for tilpasning rett på lager Android-nivå. Så med mindre en OEM bevisst forsøkte å avvike fra aksjealternativene for Android-tema, er det en viss nivå av konsistens kan beholdes i tilnærmingen til hvordan "temaer" vil bli implementert i Android.

Mens AOSP lekte med RRO og så på den beste måten å inkorporere alt på, kalte et team av utviklere BitSyko jobbet sammen om en kollektiv innsats kalt "Lag". Lag utvidet på lager RRO-funksjonaliteten i Android 5.1 Lollipop for å muliggjøre mer kompleks ressursbytte og tillate mer elementkontroll for temaer enn mulig med lager RRO. Fordi Layers bygget oppover på RRO, måtte ROM-produsenter legge til ekstra kode for å aktivere Layers-funksjonalitet i ROM-ene sine, da ikke alle Layers-temaene ville fungere på lager-RRO i Marshmallow.

I mellomtiden marsjerte Sony videre med sin egen innsats mot Android-tema. Det begynte å jobbe på OMS (Overlay Manager Service), en klient for å administrere overlegg som vil tillate leverandører å dynamisk kontrollere prioriteringer og aktivere og deaktivere overlegg. OMS blir slått sammen til AOSP og vil finne veien til Android O. XDA anerkjent utvikler nicholaschum kunne bekrefte gjennom sine kilder at Android O vil ha "dynamiske overlegg", som antas å være en referanse til OMS.

OMS forårsaket konflikter med Layers, da slike funksjoner tradisjonelt var under kontroll av temaet. For å håndtere problemene tatt opp av OMS samt for å utvide funksjonaliteten til Layers, slo BitSyko seg sammen igjen (og ga nytt navn til [prosjekt.]) å lage Underlag. Substratum er en klient med OMS-funksjonalitet som prøver å forene Layers-funksjonaliteten med OMS, og også låner andre elementer fra andre tidligere temaløsninger. Overlegg ble ikke lenger overlappet over hverandre for å tematisere individuelle elementer, som nå ble alle nødvendige elementer injisert i et enkelt overlegg. Funksjoner som kompiler-på-enhet tillot temaer å bli brukt uten å trenge en omstart mellom endringene, noe som gjør det betydelig enklere for sluttbrukere å prøve ut temaer og eksperimentere. Substratum har vært under aktiv utvikling siden starten, og viser alle funksjonene og ekstra funksjonalitet vil være utenfor omfanget av denne artikkelen, så vi går videre til det virkelige emnet for denne stykke.


Substratum inn i Sungstratum

Som forklart i forrige seksjon begynte Substratum som en måte å utvide lager OMS-funksjonalitet så vel som lager RRO-funksjonalitet (gjennom lag). Substratum var ment å brukes sammen med AOSP-baserte ROM-er, da de fleste andre OEM-er ville ha gjort motstridende endringer som ikke ville tillate Substratum å eksistere sammen med deres modifikasjoner på en redigert UX-skin, slik som Samsungs for eksempel.

Samsung jobbet i seg selv med en temaløsning for bruk på tvers av sine egne enheter på Nougat. I motsetning til Sony, viste Samsung ingen interesse for å bidra tilbake temakoden til AOSP. Men siden Samsungs løsning var ganske grunnleggende, tapte AOSP egentlig ikke mye. Samsungs temaløsning bakt inn i Touchwiz dukket opp på Samsung Galaxy S6, men som nevnt var den ganske begrenset i hva den kunne prøve å oppnå. Før det var det begrenset eksperimentering som begynte med Galaxy Alpha, selv om de fleste systemgrensesnittelementer var utenfor omfanget. Temaer kan endre bakgrunnsbilder og ikoner samt noen få Samsung-lagerapper som for eksempel oppringeren, kontakter, meldinger og varslingsområdet.

Som det viser seg, Samsungs temamotor strekker RRO som funnet i AOSP. Samsung gjenskapte også sin egen interne versjon av OMS etter å ha utvidet RRO, så deres implementeringer av både RRO og OMS skiller seg fra AOSP. Men overraskende nok, ikke så veldig mye - en unormal oppførsel når man tar i betraktning det særpreg og kompleksiteten til Touchwiz. Themers som bruker nyere Samsung-flaggskip rapporterte at de kunne installere RRO-overlegg og få dem til tredjepartsapplikasjoner som tema.

Dette var signalet teamet [projekt.] trengte for å se på offisiell støtte for Samsung-enheter på Substratum. Teamet konverterte en liten mengde kode fra RRO/Legacy-delen av appen deres, men i stedet for ba om root og ba om å starte på nytt, de avfyrte spesifikke hensikter slik at overleggene ble installert. Teamet jobbet deretter for å sikre at applikasjonene som ble berørt gjennom temaene ble tvangslukket i bakgrunnen for å sikre en full ressursoppdatering ved neste lansering.

Vi spurte XDA Recognized Developer nicholaschum for å gi oss litt innsikt i utfordringene teamet møtte da de jobbet mot Samsungs lukkede kildeimplementering av RRO-OMS:

Utfordringene vi møtte var ganske uklare og ukjente for mange som ikke har mye kunnskap forstå temasystemer, enten åpne eller lukkede kilder - alt har sin egen prøveversjon og feilfase. I dette tilfellet, mens jeg jobbet med Samsung, snublet jeg over mange problemer, men det viktigste var at systemet ikke var det avfyrt for overlegg etter at installasjonen er fullført - for eksempel bruk av kringkastingsmottakere med «android.intent.action. PACKAGE_ADDED" - tematjenesten nekter alt som ikke er en del av systemsignaturen med en spesifikk Samsung tematjeneste tillatelse fra å motta det, så den vanskeligste delen er løsningene som vi måtte finne en måte rundt.

Måten vi bruker Substratum sammen med Samsungs temamotor er ved å bruke det samme systemet som de gjør. De bruker en svært modifisert versjon av Sonys Resource Runtime Overlay-system, forkortet som RRO eller kjent som legacy blant Substratum-brukere. Det som imidlertid skiller seg er at Samsung-temaer har en ekstra tillatelse som skjuler disse overleggene fra Innstillinger, slik at du ikke kan avinstallere dem én etter én manuelt. Vi bruker det samme systemet, men vi bruker AOSPs/Sonys implementering, og det er grunnen til at Samsung Themes fullt ut kan temaramme, mens Underlagsoverlegg kan ikke berøre et mediatormål som ikke eksisterer "fwk" - som vi alle vet er rammeverket bare "android"-pakke Navn.

Det virket merkelig at [prosjekt.] var i stand til å jobbe sammen med Samsungs RRO-implementering med relativ letthet. Alle som noen gang har jobbet med Samsung-enheter kan bekrefte hvor vanskelig Samsung ofte gjør ting. Vi spurte etter en spesifikk blokkering som teamet møtte under havnen:

Det er faktisk en slags sikkerhetsmekanisme på plass som påvirket noen få brukere - der overlegg går tilbake ved oppstart. Dette skyldes måten Samsung starter opp enheten på. Siden vi stort sett alle er på 7.0 på TouchWiz/Samsung Experience, bruker vi en ny metode for å "optimalisere apper" (du kan se dette når du oppdaterer telefonen din, den vil vise et varsel med Android Nougat-ikonet som sier at det oppgraderes i bakgrunnen), så denne måten å optimalisere apper på laster også av målet pakker, som til slutt forstyrrer idmapping-prosessen ved oppstart (på grunn av at målpakken ikke eksisterer), og dermed opplever noen få overleggsavlastninger etter en starte på nytt.

Du kan også se dette skje med noen Samsung-temaer, spesielt @envy~s mørke/svarte tema - han gjør standard navigasjonslinjefarge i Display -> Navigasjonslinje til svart, der den faktiske standardfargen er hvit. Etter å ha satt den til svart, kan du åpne tastaturet og navigasjonslinjen forblir svart. Dette vil bli tilbakestilt tilfeldig ved omstart også på mange enheter.

Med tematikk som har fått tilbake sin fremtredende plass, hva er Substratums planer fremover på sidegrenene som Sungstratum?

Veien videre vil vi slå sammen en liten liten app i tillegget vårt for våre nåværende brukere, slik at de vil kunne stoppe Samsung Theme Service hvis alle temaene som er installert på enhetene deres er installert fra XDA. Så de som skal bruke Samsung-tema-formaterte temaer fra XDA, vil du kunne bruke tillegget for å forhindre Samsungs tjeneste fra å gå tilbake til lagertema etter hver omstart (fordi den ikke ble installert fra Samsung-butikken offisielt). Det vil kreve en gratis Samsung-utviklernøkkel tilgjengelig for å fås fra nettstedet deres, men det vil være forhåndsbuntet med nedlasting av sungstratum-tillegg.


Med nylige og kommende endringer i AOSP og Android O, ser det ut til at Googles en gang nystartede OS vil få enda mer personalisering videre til brukeren. Enkelte OEM-er planlegger til og med å kvitte seg med deres tilpassede brukergrensesnitt og UX-tillegg til fordel for AOSP, og andre som Samsung svever nærme nok med sine egne temaløsninger. Vi ser for oss en fremtid der temaer spiller en stor rolle i brukeropplevelsen til enda flere mennesker – et OS hvor du virkelig kontrollerer hvordan enheten din ser ut, hvor brukergrensesnittets estetikk er skreddersydd av deg for du. Og vi ville ikke kunne nå en slik fremtid uten den kollektive kraften til dette fantastiske fellesskapet, og prosjekter som Substratum.


Sjekk ut Substratum Integration for Samsung Nougat i våre Substratum-fora!Underlag på GitHub