Hoe Substratum meer keuze bracht in een inflexibele TouchWiz

click fraud protection

Sungstratum van team [projekt.] brengt alle thema-goodies van RRO-OMS naar Samsung Nougat-apparaten via Substratum! Lees verder om meer te weten!

Android-thema's hebben een lange weg afgelegd, van hacky-bewerkingen tot Substratum en nu, Zonnestratum. Jaren geleden werd het woord 'thema' in Android-discussies vaak vervangen door het woord 'kiezer', een knipoog naar de T-Mobile Themakiezer gevonden in CyanogenMod die de basis legde die van Android een thema maakte paradijs. De mogelijkheid om het uiterlijk van het besturingssysteem aan te passen, gaf gebruikers een nieuwe dimensie van maatwerk, waardoor ze wijzigingen konden aanbrengen die hun apparaten een stuk persoonlijker maakten.

Het goede werk werd in twee verschillende richtingen voortgezet. De Themakiezer evolueerde naar de CyanogenMod Theme Engine, maar ondanks de jaren van inspanningen in thematiseringsbronnen raakte de CMTE verouderd toen er andere alternatieven opdoken.


RRO en lagen

De basis van een van de alternatieven werd gelegd toen Sony de codebijdrage in de vorm van het nieuwe framework noemde

Runtime resource-overlay (RRO) werd toegelaten tot AOSP. Dit raamwerk biedt de mogelijkheid om applicatiebronnen tijdens runtime te vervangen (vandaar de naam). "Overlays" op zichzelf zijn al aanwezig en ondersteund in Android vanaf Gingerbread (en misschien ook eerder), voornamelijk gebruikt om bronnen uit te wisselen om applicaties op dat specifieke gebied te laten werken apparaat. Sony's benadering van RRO omvatte het aanpassen van de asset manager om apks te accepteren die bronnen gebruikten die waren toegewezen aan andere overeenkomstige bronnen die op het apparaat aanwezig waren. Deze nieuwe bronnen uit de APK werden vervolgens alleen tijdens runtime over de basisbronnen heen gelegd, waardoor het systeem mee kon werken alsof deze nieuwe bronnen er altijd deel van hadden uitgemaakt.

Het RRO-framework werd samengevoegd met AOSP voordat Lollipop 5.0 openbaar werd gemaakt, maar bij de eerste paar builds van 5.0 waren delen van het framework kapot gegaan vanwege andere veranderingen. De Developer Previews van Android 6.0 Marshmallow waren de eersten die een functioneel, zij het beperkt RRO-framework toevoegden, waardoor de deuren van aanpasbaarheid op standaard Android-niveau worden geopend. Dus tenzij een OEM opzettelijk probeerde af te wijken van de standaard Android-thema-opties, een zekere Er zou een niveau van consistentie kunnen worden behouden in de benadering van de manier waarop ‘thema’s’ zouden worden geïmplementeerd Android.

Terwijl AOSP met RRO aan het spelen was en aan het kijken was naar de beste manier om dit allemaal te integreren, belde een team van ontwikkelaars BitSyko werkten samen aan een collectieve inspanning genaamd "Lagen". Lagen breidden de stock-RRO-functionaliteit in Android 5.1 Lollipop uit om complexere resource-switching mogelijk te maken en meer elementcontrole voor thema's mogelijk te maken dan mogelijk is met stock-RRO. Omdat Layers verder bouwden op RRO, moesten ROM-makers extra code toevoegen om Layers-functionaliteit in hun ROM's mogelijk te maken, aangezien niet alle Layers-thema's zouden werken op standaard RRO in Marshmallow.

Ondertussen marcheerde Sony door met zijn eigen inspanningen op het gebied van Android-thema's. Het begon te werken OMS (Overlay Manager-service), een client voor het beheren van overlays waarmee providers op dynamische wijze prioriteiten kunnen controleren en overlays kunnen in- en uitschakelen. OMS wordt samengevoegd met AOSP en zal zijn weg vinden naar Android O. XDA erkende ontwikkelaar nicolaschum kon via zijn bronnen bevestigen dat Android O "dynamische overlays" zal bevatten, waarvan wordt aangenomen dat het een verwijzing is naar OMS.

OMS veroorzaakte conflicten met lagen, omdat dergelijke functies traditioneel onder controle van het thema stonden. Om de problemen van OMS aan te pakken en om de functionaliteit van Layers uit te breiden, werkte BitSyko opnieuw samen (en hernoemde zichzelf naar [project.]) maken Substraat. Substratum is een client met OMS-functionaliteit dat probeert de Layers-functionaliteit te verzoenen met OMS, en ook andere elementen leent van andere eerdere thema-oplossingen. Overlays overlapten elkaar niet langer om afzonderlijke elementen te thematiseren, omdat nu alle benodigde elementen in één enkele overlay werden geïnjecteerd. Dankzij functies zoals compileren op het apparaat konden thema's worden toegepast zonder dat ze tussen de wijzigingen opnieuw moesten worden opgestart aanzienlijk gemakkelijker voor eindgebruikers om thema’s uit te proberen en te experimenteren. Substratum is sinds het begin actief ontwikkeld en heeft alle kenmerken ervan opgesomd Extra functionaliteit valt buiten het bestek van dit artikel, dus we gaan verder met het echte onderwerp hiervan deel.


Substraat in Sungstratum

Zoals uitgelegd in de vorige sectie, begon Substratum als een manier om de stock-OMS-functionaliteit en de stock-RRO-functionaliteit uit te breiden (via lagen). Substratum was bedoeld om naast AOSP-gebaseerde ROM's te worden gebruikt, aangezien de meeste andere OEM's tegenstrijdige wijzigingen zouden hebben aangebracht waardoor Substratum niet naast hun aanpassingen zou kunnen bestaan ​​op een bewerkte UX-skin, zoals die van Samsung voorbeeld.

Samsung werkte zelf ook aan een thema-oplossing voor gebruik op zijn eigen apparaten op Nougat. In tegenstelling tot Sony toonde Samsung geen interesse om de themacode terug te geven aan AOSP. Maar aangezien de oplossing van Samsung vrij basaal was, liep AOSP niet echt veel mis. De thema-oplossing van Samsung, ingebakken in Touchwiz, maakte zijn echte verschijning op de Samsung Galaxy S6, maar zoals gezegd was deze tamelijk beperkt in wat hij kon proberen te bereiken. Voordien was er beperkt geëxperimenteerd met de Galaxy Alpha, hoewel de meeste systeem-UI-elementen buiten het bereik ervan vielen. Thema's kunnen achtergronden en pictogrammen wijzigen, evenals enkele Samsung-aandelen-apps zoals bijvoorbeeld de dialer, contacten, berichten en het systeemvak.

Het blijkt de thema-engine van Samsung te zijn strekt zich uit RRO zoals gevonden in AOSP. Samsung heeft ook hun eigen interne versie van OMS opnieuw gemaakt na de uitbreiding van RRO, dus hun implementaties van zowel RRO als OMS verschillen van AOSP. Maar verrassend genoeg niet in heel grote hoeveelheden: een afwijkend gedrag als je het onderscheidende karakter en de complexiteit van Touchwiz in ogenschouw neemt. Themers die nieuwere Samsung-vlaggenschepen gebruikten, meldden dat ze RRO-overlays konden installeren en deze applicaties van derden konden thema's geven.

Dit was het signaal dat team [projekt.] moest onderzoeken om Samsung-apparaten officieel te ondersteunen op Substratum. Het team heeft een kleine hoeveelheid code uit het RRO/Legacy-gedeelte van hun app omgezet, maar in plaats daarvan Door root aan te vragen en te vragen om opnieuw op te starten, vuurden ze specifieke intenties af zodat de overlays werden geïnstalleerd. Het team heeft er vervolgens voor gezorgd dat de applicaties die door de thema's werden getroffen, op de achtergrond geforceerd werden gesloten, zodat bij de volgende lancering een volledige vernieuwing van de assets kon worden gegarandeerd.

We vroegen het aan XDA Recognized Developer nicolaschum om ons wat inzicht te geven in de uitdagingen waarmee het team werd geconfronteerd bij het werken tegen Samsung's closed source-implementatie van RRO-OMS:

De uitdagingen waarmee we te maken kregen waren nogal onduidelijk en onbekend bij velen die niet over veel kennis beschikken het begrijpen van themasystemen, of het nu open source of closed source is - alles heeft zijn eigen proefversie fout fase. In dit geval kwam ik tijdens het werken met Samsung veel problemen tegen, maar de belangrijkste was dat de systeemintenties niet klopten afgevuurd voor overlays nadat de installatie is voltooid - zoals het gebruik van uitzendontvangers met “android.intent.actie. PACKAGE_ADDED” - de Themaservice ontkent alles wat geen deel uitmaakt van de systeemhandtekening bij een specifieke Samsung thema-service toestemming om dat te ontvangen, dus het moeilijkste deel zijn de oplossingen die we moesten vinden rondom.

De manier waarop we Substratum naast de Theme Engine van Samsung gebruiken, is door hetzelfde systeem te gebruiken als zij. Ze gebruiken een sterk aangepaste versie van Sony’s Resource Runtime Overlay-systeem, afgekort als RRO of bekend als legacy onder Substratum-gebruikers. Wat echter verschilt, is dat Samsung-thema's een extra toestemming hebben die deze overlays verbergt voor Instellingen, zodat u ze niet één voor één handmatig kunt verwijderen. We gebruiken hetzelfde systeem, maar we gebruiken de implementatie van AOSP/Sony. Daarom kunnen Samsung Themes een volledig themaframework gebruiken, terwijl Substratum-overlays kunnen geen bemiddelaardoel raken dat niet bestaat uit “fwk” – zoals we allemaal weten is het raamwerk slechts een “Android”-pakket naam.

Het leek vreemd dat [project.] relatief gemakkelijk naast de RRO-implementatie van Samsung kon werken. Iedereen die ooit aan Samsung-apparaten heeft gewerkt, kan bevestigen hoe moeilijk Samsung het vaak maakt. We vroegen naar een specifiek blok dat het team tijdens de haven tegenkwam:

Er is inderdaad een soort beveiligingsmechanisme aanwezig dat enkele gebruikers heeft getroffen - waarbij overlays terugkeren bij het opstarten. Dit komt door de manier waarop Samsung hun apparaat opstart. Omdat we grotendeels allemaal op 7.0 zitten op TouchWiz/Samsung Experience, gebruiken we een nieuwe methode voor het optimaliseren van apps (je kunt dit zien wanneer je je telefoon bijwerkt, het zal een melding tonen met het Android Nougat-pictogram, waarin staat dat het op de achtergrond wordt geüpgraded), dus deze manier om apps te optimaliseren ontlaadt ook het doel pakketten, waardoor uiteindelijk het idmapping-proces bij het opstarten wordt verstoord (omdat het doelpakket niet bestaat) en dus ervaren een paar mensen het verwijderen van overlays na een opnieuw opstarten.

Je kunt dit ook zien gebeuren met een paar Samsung-thema's, met name het Dark/Black-thema van @envy~ - hij maakt de standaardkleur van de navigatiebalk in Weergave -> Navigatiebalk zwart, waar de werkelijke standaardkleur is wit. Nadat u deze op zwart heeft ingesteld, kunt u het toetsenbord openen en blijft de navigatiebalk zwart. Dit wordt op veel apparaten ook willekeurig teruggedraaid bij het opnieuw opstarten.

Wat zijn de plannen van Substratum voor de zijtakken zoals Sungstratum, nu het thema weer op de voorgrond staat?

In de toekomst zullen we een kleine app toevoegen aan onze add-on voor onze huidige gebruikers, zodat zij dat ook zullen doen Samsung Theme Service kunnen stoppen als alle thema's die op hun apparaten zijn geïnstalleerd, zijn geïnstalleerd XDA. Dus de mensen die Samsung-thema-geformatteerde thema's van XDA gaan gebruiken, kun je de add-on gebruiken om te voorkomen De service van Samsung kan het na elke herstart niet terugzetten naar het standaardthema (omdat het niet vanuit de Samsung Store is geïnstalleerd). officieel). Hiervoor is een gratis Samsung-ontwikkelaarsleutel vereist die verkrijgbaar is via hun site, maar deze wordt vooraf gebundeld met de download van de sungstratum-add-on.


Met recente en aanstaande veranderingen in AOSP en Android O lijkt het erop dat het ooit zo jonge besturingssysteem van Google nog meer personalisatie aan de gebruiker zal doorgeven. Bepaalde OEM's zijn zelfs van plan om hun aangepaste gebruikersinterfaces en UX-toevoegingen af ​​te schaffen in het voordeel van AOSP, en anderen zoals Samsung blijven dichtbij genoeg met hun eigen thema-oplossingen. We voorzien een toekomst waarin thema's een belangrijke rol spelen in de gebruikerservaring van nog meer mensen: een besturingssysteem waar u echt bepaalt hoe uw apparaat eruitziet, waarbij de esthetiek van de gebruikersinterface door u op maat is gemaakt Jij. En we zouden zo'n toekomst niet kunnen bereiken zonder de collectieve kracht van deze geweldige gemeenschap en projecten als Substratum.


Bekijk Substratum-integratie voor Samsung Nougat in onze Substratum-forums!Substraat op GitHub