Hur Substratum gav fler valmöjligheter till en oflexibel TouchWiz

Sungstratum från team [projekt.] ger alla temagodsaker från RRO-OMS till Samsung Nougat-enheter genom Substratum! Läs vidare för att veta mer!

Android-tema har kommit långt, från hackiga redigeringar till Substratum och nu, Sungstratum. För flera år sedan ersattes ordet "tema" i Android-diskussioner ofta av ordet "väljare", en nick till T-Mobile Theme Chooser som finns i CyanogenMod som lade grunden som gjorde Android till en temans paradis. Möjligheten att ändra utseendet på operativsystemet gav användarna ytterligare en dimension av anpassning, så att de kunde göra ändringar som gör deras enheter mycket mer personliga.

Det goda arbetet fortsatte i två olika riktningar. Temaväljaren utvecklades till CyanogenMod Theme Engine, men trots åratal av ansträngningar som lagts ner på temaresurser blev CMTE föråldrad när andra alternativ dök upp.


RRO & lager

Grunden till ett av alternativen lades när Sonys kodbidrag i form av det nya ramverket ringde Runtime Resource Overlay (RRO) accepterades till AOSP. Detta ramverk ger möjlighet att ersätta programresurser under körning (därav namnet). "Overlays" i sig har funnits och stöds i Android från så tidigt som Gingerbread (och kanske tidigare också), används främst för att byta ut resurser för att få applikationer att fungera på just det enhet. Sonys inställning till RRO innebar att modifiera kapitalförvaltaren för att acceptera apks som använde resurser mappade till andra motsvarande resurser som fanns på enheten. Dessa nya resurser från apk lades sedan ovanpå basresurserna endast vid körning, vilket gjorde att systemet kunde arbeta tillsammans som om dessa nya resurser alltid hade varit en del av det.

RRO-ramverket slogs samman till AOSP innan Lollipop 5.0 offentliggjordes, men de första få versionerna av 5.0 hade delar av ramverket brutna på grund av andra förändringar. Android 6.0 Marshmallows utvecklarförhandsvisningar var de första som lades till i ett funktionellt om än begränsat RRO-ramverk, öppnar dörrarna för anpassningsbarhet direkt på lager Android-nivå. Så om inte en OEM medvetet försökte avvika från aktiealternativen för Android-tema, en viss nivå av konsekvens skulle kunna bibehållas i tillvägagångssättet för hur "teman" skulle implementeras i Android.

Medan AOSP lekte med RRO och tittade på det bästa sättet att införliva allt, kallade ett team av utvecklare BitSyko arbetat tillsammans på en kollektiv insats som heter "Skikten". Lager utökade med lager-RRO-funktionaliteten i Android 5.1 Lollipop för att möjliggöra mer komplex resursbyte och tillåta mer elementkontroll för teman än vad som är möjligt med lager-RRO. Eftersom Layers byggde uppåt på RRO, behövde ROM-tillverkare lägga till extra kod för att aktivera Layers-funktionalitet i sina ROMs eftersom inte alla Layers-teman skulle fungera på lager RRO i Marshmallow.

Samtidigt marscherade Sony vidare med sina egna ansträngningar mot Android-tema. Det började jobba på OMS (Overlay Manager Service), en klient för att hantera överlagringar som skulle tillåta leverantörer att dynamiskt styra prioriteringar och aktivera och inaktivera överlagringar. OMS slås samman till AOSP och kommer att ta sig in i Android O. XDA erkänd utvecklare nicholaschum kunde bekräfta genom sina källor att Android O kommer att ha "dynamiska överlägg", vilket tros vara en referens till OMS.

OMS orsakade konflikter med Layers, eftersom sådana funktioner traditionellt var under kontroll av temat. För att hantera de problem som tagits upp av OMS samt för att utöka funktionaliteten hos Layers, slog BitSyko ihop igen (och döpte om sig själva till [projekt.]) att skapa Underlag. Substratum är en klient med OMS-funktionalitet som försöker förena Layers-funktionaliteten med OMS, och även lånar andra element från andra tidigare temalösningar. Överlagringar överlappades inte längre över varandra för att tematisera enskilda element, eftersom nu alla nödvändiga element injicerades i en enda överlagring. Funktioner som kompilering-på-enhet gjorde det möjligt att tillämpa teman utan att behöva startas om mellan ändringarna, vilket gör det väsentligt lättare för slutanvändare att prova teman och experimentera. Substratum har varit under aktiv utveckling sedan starten, och listar ut alla dess funktioner och extra funktionalitet skulle inte omfattas av denna artikel, så vi går vidare till det verkliga ämnet för detta bit.


Substratum in i Sungstratum

Som förklarats i föregående avsnitt började Substratum som ett sätt att utöka lager OMS-funktionalitet såväl som lager-RRO-funktionalitet (genom lager). Substratum var tänkt att användas tillsammans med AOSP-baserade ROM, eftersom de flesta andra OEM: er skulle ha gjort motstridiga ändringar som inte skulle tillåta Substratum att samexistera med deras modifieringar på ett redigerat UX-skal, som Samsungs för exempel.

Samsung, i sig själv, arbetade också på en temalösning för användning på sina egna enheter på Nougat. Till skillnad från Sony visade Samsung inget intresse av att bidra tillbaka temakoden till AOSP. Men eftersom Samsungs lösning var ganska grundläggande förlorade AOSP egentligen inte mycket. Samsungs temalösning inbakad i Touchwiz gjorde sitt verkliga framträdande på Samsung Galaxy S6, men som nämnt var den ganska begränsad i vad den kunde försöka uppnå. Innan dess fanns det begränsade experiment som började med Galaxy Alpha, även om de flesta element i systemets användargränssnitt låg utanför dess räckvidd. Teman kan ändra bakgrundsbilder och ikoner samt några Samsung lagerappar som uppringaren, kontakter, meddelanden och meddelandeområdet, till exempel.

Som det visar sig, Samsungs temamotor sträcker sig RRO som finns i AOSP. Samsung återskapade också sin egen interna version av OMS efter att ha utökat RRO, så deras implementeringar av både RRO och OMS skiljer sig från AOSP. Men överraskande, inte så mycket -- ett anomalt beteende när man tänker på Touchwiz särart och komplexitet. Themers som använder nyare Samsung-flaggskepp rapporterade att de kunde installera RRO-överlägg och ha dem med tredjepartsprogram som tema.

Detta var den signal som teamet [projekt.] behövde för att undersöka officiellt stöd för Samsung-enheter på Substratum. Teamet konverterade en liten mängd kod från sin RRO/Legacy-sektion av sin app, men istället för begärde root och bad om att starta om, avfyrade de specifika avsikter så att överläggen installeras. Teamet arbetade sedan för att säkerställa att de applikationer som påverkades av teman tvångsstängdes i bakgrunden för att säkerställa en fullständig tillgångsuppdatering vid nästa lansering.

Vi frågade XDA Recognized Developer nicholaschum för att ge oss lite insikter i de utmaningar som teamet ställdes inför när de arbetade mot Samsungs implementering av RRO-OMS med sluten källkod:

Utmaningarna vi stod inför var ganska oklara och okända för många som inte har så mycket kunskap förstå temasystem, oavsett om det är öppen eller sluten källkod - allt har sin egen testversion och felfas. I det här fallet, när jag arbetade med Samsung, snubblade jag över många problem, men det viktigaste är att systemet inte är det avfyras för överlägg efter installationen är klar - som att använda sändningsmottagare med "android.intent.action. PACKAGE_ADDED" - Tematjänsten förnekar allt som inte är en del av systemsignaturen med en specifik Samsung tematjänsttillstånd från att få det, så den svåraste delen är lösningarna som vi var tvungna att hitta ett sätt runt om.

Sättet vi använder Substratum tillsammans med Samsungs temamotor är genom att använda samma system som de gör. De använder en mycket modifierad version av Sonys Resource Runtime Overlay-system, förkortat som RRO eller känt som legacy bland Substratum-användare. Det som dock skiljer sig är att Samsung-teman har en extra behörighet som döljer dessa överlagringar från Inställningar, så att du inte kan avinstallera dem en efter en manuellt. Vi använder samma system men vi använder AOSP: s/Sonys implementering, vilket är anledningen till att Samsung Themes kan temaramverk fullt ut, medan Underlagsöverlagringar kan inte röra ett medlarmål som inte existerar "fwk" - som vi alla vet är ramverket bara "android"-paket namn.

Det verkade konstigt att [projekt.] kunde arbeta tillsammans med Samsungs RRO-implementering relativt enkelt. Alla som någonsin har arbetat med Samsung-enheter kan intyga hur svårt Samsung ofta gör saker. Vi frågade efter ett specifikt block som teamet stötte på under sin hamn:

Det finns verkligen någon slags säkerhetsmekanism på plats som påverkade ett fåtal användare - där överlägg återgår vid start. Detta beror på hur Samsung startar upp sin enhet. Eftersom vi för det mesta alla är på 7.0 på TouchWiz/Samsung Experience använder vi en ny metod för att "optimera appar" (du kan se detta när du uppdaterar din telefon, det kommer att visa ett meddelande med Android Nougat-ikonen som säger att den uppgraderas i bakgrunden), så det här sättet att optimera appar laddar också bort målet paket, vilket i slutändan stör idmapping-processen vid uppstart (på grund av att målpaketet inte existerar) och därför upplever ett fåtal personer överlagringar efter en starta om.

Du kan också se detta hända med några Samsung-teman också, särskilt @envy~s mörka/svarta tema - han gör standardfärgen för navigeringsfältet i Display -> Navigationsfältet till svart, där den faktiska standardfärgen är vit. Efter att ha ställt in den på svart kan du öppna tangentbordet och navigeringsfältet förblir svart. Detta kommer att återställas slumpmässigt vid omstart också på många enheter.

Med temat att få tillbaka sin framträdande plats, vad är Substratums planer framåt på sidogrenarna som Sungstratum?

Vägen framåt kommer vi att slå samman en liten liten app i vårt tillägg för våra nuvarande användare så att de kommer att göra det kunna stoppa Samsung Theme Service om alla teman som är installerade på deras enheter är installerade från XDA. Så de personer som kommer att använda Samsung-tema-formaterade teman från XDA, du kommer att kunna använda tillägget för att förhindra Samsungs tjänst från att återställa den till lagertema efter varje omstart (eftersom den inte installerades från Samsung Store officiellt). Det kommer att kräva en gratis Samsung-utvecklarnyckel tillgänglig för att erhållas från deras webbplats, men den kommer att förbuntas med nedladdning av sungstratum-tillägg.


Med de senaste och kommande förändringarna i AOSP och Android O, ser det ut som att Googles en gång nystartade OS kommer att få ännu mer anpassning till användaren. Vissa OEM-tillverkare planerar till och med att bli av med sina anpassade användargränssnitt och UX-tillägg till förmån för AOSP, och andra som Samsung svävar tillräckligt nära med sina egna temalösningar. Vi föreställer oss en framtid där teman spelar en stor roll i användarupplevelsen för ännu fler människor – ett operativsystem där du verkligen kontrollerar hur din enhet ser ut, där användargränssnittets estetik skräddarsys av dig för du. Och vi skulle inte kunna nå en sådan framtid utan den kollektiva kraften i denna fantastiska gemenskap och projekt som Substratum.


Kolla in Substratum Integration för Samsung Nougat i våra Substratum-forum!Substratum på GitHub