Exclusief: Android Oreo krijgt binnen 1 week rootless, systeembrede thema-ondersteuning

De nieuwste Android Oreo-release van Google heeft al native thema-ondersteuning ingebouwd, en dankzij de Substratum-thema-engine komt deze over 1 week.

Update 13-09-2017: De Andromeda-add-on voor Substratum, die aangepaste thema's op niet-geroote Android Oreo-apparaten mogelijk maakt, is nu uitgebracht. Zie dit artikel voor meer details. Het originele artikel blijft hieronder staan.

Met elke nieuwe uitgave van het Android-besturingssysteem van Google zijn er voor de meeste gebruikers minder redenen voor hun apparaten rooten. Onder de overige gebruikers die er nog steeds voor kiezen hun apparaten te rooten, is een van de meest genoemde redenen echter het inschakelen van systeembrede thema-ondersteuning. Meestal wordt dit beheerd via het Substratum thema kader sinds de ongelukkige ondergang van de CyanogenMod Theme Engine. Na verloop van tijd is de team achter Substratum hard gewerkt om ondersteuning voor meer apparaten op te nemen door Substratum-ondersteuning op te nemen op ROM-niveau zodat het zonder root-toegang zou kunnen werken. En nu heeft het team het project verder gebracht dan wat ieder van ons zich had kunnen voorstellen 

volledige systeembrede thema-ondersteuning zonder root voor elk Android Oreo-apparaat.

Screenshots laten zien Sai's Android Oreo Black-thema draait op een niet-geroote Google Pixel op Android Oreo 8.0.0

Om je een idee te geven van hoe Een ongelooflijke ontwikkeling is dit, bedenk dat het volgende nu mogelijk zal zijn zonder wortel:

  • Thema van de Android Framework en Android-systeemgebruikersinterface, evenals alle andere systeemtoepassingen. (Velen van jullie zullen dat doen Liefde eindelijk een donker thema beschikbaar!)
  • Thema van elke applicatie van derden
  • Aangepaste lettertypen voor toepassingen van derden
  • Veel andere aanpassingen, zoals een statusbalk-klokmodificatie

De lijst gaat verder! Substraat heeft een uitgebreide lijst met beschikbare thema's die het raamwerk ondersteunen (die allemaal worden ondersteund in deze aankomende nieuwe versie van Substratum voor Android 8.0), een actieve gemeenschap Google+ en die van ons forums, en gezien deze ontwikkeling zal het draagvlak alleen maar toenemen!


Android Oreo en de Overlay Manager-service

Een voorbeeld van enkele substraatthema's.

Sinds de oprichting van Google native ondersteuning voor Sony's Runtime Resource Overlay (RRO) thema-engine in Android 6.0 Marshmallow, we hebben gewacht voor Google om een ​​ingebouwde interface en openbare API's te bieden die ontwikkelaars kunnen gebruiken om zowel systeemframework-applicaties als applicaties van derden te thematiseren. Helaas bracht de Android Nougat-release weinig nieuws op tafel sinds Sony's RRO werd toegevoegd aan het Android Open Source Project (AOSP).

Maar dankzij het ijverige werk van de technici bij Sony Mobile evolueerde de RRO-thema-engine uiteindelijk naar wat bekend staat als Overlay Manager Service (OMS), waarop Substratum is gebaseerd. Sony was de pionier op het gebied van een open source-thema-oplossing, maar sinds hun OMS-thema-engine rond de jaarwisseling in AOSP werd geaccepteerd ten tijde van de definitieve release van Android 7.1 is de enige manier waarop gebruikers van niet-Sony-apparaten kunnen profiteren van de thema-engine een aangepaste ROM.

Dat veranderde in Android 8.0. Toen Substratum aanvankelijk werd uitgebracht voor de eerste paar Android O Developer Previews, dat beseften de ontwikkelaars van Substratum volledige ondersteuning voor Sony OMS beschikbaar was. Dit betekent dat een gebruiker een bestaand door Substratum ondersteund thema kan installeren en dat het volledig zou functioneren op Android Oreo-apparaten zonder dat er ROM-patches nodig zijn. Er was echter maar één probleem: voor het inschakelen van een geïnstalleerd Substratum-thema was root-toegang vereist. of dat dachten ze tenminste.


Rootless, systeembrede substraatthema-ondersteuning voor Android Oreo

Terwijl de ontwikkelaars stilletjes hun werk verzetten om Android Oreo-gebruikers een volledig rootloze thema-oplossing op de rug te geven Burner, we waren onafhankelijk bezig met het doorzoeken van elke Android O Developer Preview en vonden bewijs van de thema-engine die in het spel was, hoewel we hebben het verkeerd geïdentificeerd omdat het gebaseerd is op de oudere RRO in plaats van Sony's nieuwere OMS. Google plaagde de community zelfs met thema-ondersteuning in een op ontwikkelaars gerichte AMA op Reddit, waarin stond dat er nog enkele hindernissen moesten worden overwonnen voordat een volledige thema-oplossing in Android kon worden ingebouwd.

Omdat we niet tevreden waren met dat antwoord, wilden we zien hoe ver Google was gegaan met het verkrijgen van thema-ondersteuning voor Android Oreo. Om dat te doen, ben ik gaan graven de broncode van Android 8.0 zodra de definitieve release uitkwam, en ontdekte de het bestaan ​​van ADB-shellopdrachten die overlays kunnen in- of uitschakelen, waarover XDA-schrijver Adam Conway gisteren verslag deed.

De standaardoverlay uitschakelen

Aanvankelijk was ik niet zo onder de indruk van de bevinding, aangezien het voor zover ik destijds wist functioneel nutteloos was, omdat ik en mijn collega's de indruk hadden dat het installeren een thema had nog steeds root-toegang nodig omdat de themabestanden zouden moeten worden verplaatst naar een map die niet toegankelijk is voor de gebruikersruimte (in /system/vendor/overlay, en dat is hoe RRO functioneerde). Nicolaas Chum zelf, een van de hoofdontwikkelaars achter Substratum, merkte op ons bericht op dat hij al geruime tijd op de hoogte was van het bestaan ​​van deze commando's en gebruikt het al voor Android O-builds.

Eén persoon zag echter een kans ontstaan ​​nadat we gisteren ons artikel publiceerden. XDA is geheel eigen Jeff Corcoran, de ontwikkelaar achter ons in-house XDA Labs-applicatie, realiseerde zich dat er een mogelijke oplossing was om de native opdrachtregelinterface van Android Oreo voor OMS zonder root te laten werken. Het betrof een methode die werd gebruikt door Helium, de populaire niet-root back-upoplossing, en meer recentelijk door het open-source Greenify-alternatief bekend als Brevent.

Verhoogde privileges via een script

Normaal gesproken is de "cmd-overlay"-opdrachten die Google aan de Oreo-release heeft toegevoegd, kunnen alleen worden uitgevoerd via een apparaat met rootrechten of via een apparaat dat is vastgemaakt aan een computer en een beroep doet op de Android Debug Bridge (ADB) -shell. Een handvol slimme ontwikkelaars, zoals de Helium- en Brevent-ontwikkelaars, zijn er in de loop der jaren achter gekomen hoe je in wezen de rechten van een applicatie die op de telefoon draait kunt verhogen, zodat deze overeenkomt met die van ADB schelp. Daarbij kan de applicatie opdrachten verzenden die normaal gesproken niet mogelijk zijn vanwege beperkte machtigingen. In het geval van Substratum betekent dat: de applicatie kan Substratum-thema's zonder root installeren en vervolgens in- of uitschakelen.

Dit besef was een belangrijk doorbraak die pas gisteravond werd ontdekt. In de loop van een paar uur kon Nicholas (met de hulp van Jeff) een snelle alfaversie maken van een rootloze Substratum-themamanager voor Android Oreo-apparaten. En het werkt, maar met een paar kanttekeningen.

Voorbehoud bij ondersteuning van wortelloos substraat

Voor het proces dat vereist is om Substratum ADB shell verhoogde rechten te verlenen, is het gebruik van een heel eenvoudig en lichtgewicht desktop-applicatie (of gewoon een ADB-shell-opdracht als u weet wat u doet). Eenmaal toegekend, zal Substratum functioneren zoals u zou verwachten, waarbij het al uw geïnstalleerde Substratum-thema's kan beheren. Alle thema's die u installeert, blijven geïnstalleerd totdat u ervoor kiest om het opnieuw via Substratum te verwijderen.

De privileges die Substratum krijgt, zijn echter van voorbijgaande aard gaan verloren wanneer de gebruiker een volledige herstart uitvoert (hoewel een zachte herstart van de systeemgebruikersinterface dit privilege gelukkig niet verliest). Dit betekent dat u het desktopprogramma opnieuw moet uitvoeren als u uw telefoon opnieuw hebt opgestart en Substratum wilt gebruiken om een ​​thema toe te voegen, te verwijderen of te wijzigen. Ik wil dat nog eens herhalen alle thema's die u installeert, blijven geïnstalleerd, zelfs als u opnieuw opstart, dus dat betekent dat als je slechts af en toe een paar thema's wilt veranderen, dit perfect voor je zou moeten zijn. Je zou ook van thema moeten kunnen wisselen via het menu Instellingen, als de De optie "Thema" van Developer Preview onder Weergave-instellingen herkent vervolgens geïnstalleerde thema's en stelt u in staat hiertussen te schakelen

Ten slotte is het laatste dat ik moet vermelden iets dat vanzelfsprekend lijkt als je erover nadenkt, maar dat je in je opwinding bij het horen van nieuws misschien vergeten bent. Uw apparaat is nog steeds niet geroot. Dat betekent dat je geen bestanden kunt aanraken of wijzigen die absoluut root-toegang vereisen om te bewerken, zelfs als het Substratum-thema dat je hebt geïnstalleerd beloofde iets te veranderen. Sorry, maar helaas betekent dit dat u geen systeembrede lettertypewijziging kunt toepassen breng de blob-emoji's terug, hoewel, zoals in het begin vermeld, het is Het is mogelijk dat een Substratum-thema de lettertypen van individuele applicaties wijzigt.

De noodzaak van substraat

Laten we nu een belangrijk detail uit de weg ruimen. Wanneer komt dit? Zoals de titel vermeldt, zou de eerste publieke beschikbaarheid van het rootless Substratum voor Android 8.0-apparaten zoals de Google Nexus 5X, Google Nexus 6P, Google Pixel en Google Pixel XL moeten zijn binnen 1 week. Dat is geen garantie op geen enkele manier, omdat er dingen kunnen veranderen in het ontwikkelingsproces die mogelijk extra tijdsinvestering vergen, maar omdat OMS dat al is volledig ondersteund in AOSP, het enige waar het Substratum-team nu aan werkt is de interface tussen de Substratum-app en de unrooted apparaten.

Volgende vraag: zal het gratis zijn? Nee. Substratum voor niet-geroote Android Oreo-apparaten zal een betaalde applicatie. Ik kan je niet vertellen hoeveel het gaat kosten, aangezien Nicholas nog geen prijs heeft vastgesteld, maar je kunt er zeker van zijn dat de prijs redelijk zal zijn gezien de waarde van wat je zult ontvangen. Tot nu toe is Substratum gratis beschikbaar geweest voor veel apparaten, dus overweeg om dit soort ontwikkelingen te ondersteunen door eerst Team Substratum te ondersteunen. Je kunt wachten tot Google uiteindelijk dat donkere thema uitbrengt dat je altijd al wilde hebben (ha, goed één), of je kunt er een paar centen in gooien om de onafhankelijke ontwikkeling te ondersteunen waar veel mensen voor staan toegekend.

Nog steeds niet overtuigd van de waarde ervan? Jij kan poging Substratum-thema's installeren op uw eigen niet-geroote 8.0-apparaat. In feite is dat precies wat we hierboven deden. Uiteraard hadden we daarbij een beetje hulp van Nicholas. Als je een bestaand Substratum-thema uit de Google Play Store wilt installeren, volgen hier de algemene stappen:

  1. Download en installeer het APK-bestand op uw apparaat.
  2. Pak de inhoud uit en compileer elke overlay in een afzonderlijk APK-bestand voor elke app waarvan u een thema wilt maken
  3. Installeer elk afzonderlijk overlay-APK-bestand dat u handmatig hebt samengesteld in stap 2
  4. Voer voor elke overlay-APK die u installeert de volgende opdracht uit om deze in te schakelen: cmd overlay enable
  5. Als u de prioriteit van overlays wilt wijzigen, gebruikt u: cmd overlay set-priority PARENT|lowest|highest
  6. Maak een lijst van al uw geïnstalleerde overlays met: cmd overlay list
  7. Verwijder eventuele overlays die u niet wilt met: cmd overlay disable

Als je echt de opdrachtregel wilt gebruiken om thema's te beheren, wees dan onze gast! Persoonlijk zat ik vast bij stap 2. Substratum gebruikt geen verborgen methode die je niet zelf kunt bedenken, maar maakt het ver gemakkelijker voor u om te beheren. Als het mogelijk is om iets handmatig te doen, maar een applicatie kan het veel gemakkelijker voor mij doen, heb ik de neiging om de app gewoon zijn werk te laten doen. Maar dat is aan jou.

Persoonlijk ben ik dat echt heel opgewonden om te zien waar dit heen gaat. Voor alle apparaten die nog geen ingebouwd themabeheersysteem ondersteunen (zoals Motorola- of OnePlus-apparaten), heb je nu nog een reden om naar uit te kijken in de Android 8.0-update. Voor degenen onder u die het geluk hebben die zoete Oreo al te proeven: over 1 week heeft u iets om naar uit te kijken.


P.S. Samsung-gebruikers, kende u uw apparaten? ondersteunen Substratum-thema's al zonder dat je root nodig hebt?

PPS Bent u een ontwikkelaar en wilt u meer weten over Substratum? Kijk eens naar Nicolaas geweldige diavoorstelling hier!