Android Oreo introduceert opdrachtregelinterface voor thema's

Android Oreo bevat ondersteuning voor de opdrachtregelinterface voor RRO-thema's, wat erop duidt dat het besturingssysteem steeds dichter bij systeembrede thema-ondersteuning komt.

Met de lancering van Android Oreo wordt veel tijd besteed aan het zoeken naar verborgen goodies in de broncode. In het verleden heeft het Android-engineeringteam dat wel gedaan gesproken over het inschakelen van thema's in Android O. Wij rapporteerden in mei dat de tweede Developer Preview van Android O misschien een hint was dat Google de Overlay Manager Service (OMS) en Runtime Resource Overlay (RRO) ondersteunde, maar nu weten we zeker dat dit zo was. Android Oreo nu, technisch gezien, ondersteunt OMS/RRO-thema's en biedt zelfs een interface voor het in- of uitschakelen van thema's, op voorwaarde dat je de opdrachtregel kunt gebruiken.

Update: Substratum gebruikt deze opdrachten met de dev-previews en nu met Oreo sinds ze beschikbaar waren!


Wat zijn RRO en OMS?

RRO is intern door Sony ontwikkeld voor themafunctionaliteit op de Sony Xperia-lijn. Ontwikkelaars die het belang ervan erkenden, probeerden de ondersteuning uit te breiden naar andere ROM's, en daarmee kwam RRO-thema op een groot aantal apparaten, niet alleen op Sony-apparaten. Het verving op ingenieuze wijze bronnen tijdens de runtime van de app, een gebruiksgemak dat destijds ongezien was bij andere thema-opties. Dit is uitgegroeid tot OMS, eveneens in eigen huis ontwikkeld door Sony. De beroemde

Lagenbeheerder gebruikte oorspronkelijk RRO-thema's, maar OMS werd later aangepast tot wat nu bekend staat als Substratum en is het thema-framework dat gebruikers op onze forums nu het meest kennen. ROM's op onze forums met OMS-commits betekenen dat ze de standaard thema-engine van Substratum ondersteunen. De "Legacy-modus" binnen Substratum maakt gebruik van RRO-thema's.


Android Oreo introduceert themaopdrachten

Het lijkt erop dat Google dit thematype nu volledig wil ondersteunen in AOSP, mogelijk op weg naar een volledige, systeemondersteunde themamanager. Op Android Gerrit heeft Google de afgelopen maanden (en met Android Oreo) een aantal wijzigingen aangebracht die stappen suggereren om de thema-engine systeembreed mogelijk te maken. De wijzigingen staan ​​hieronder, met links naar hun respectievelijke commits.

  • Overlay-opdrachten
  • OverlayManagerService (OMS) geïntroduceerd
  • Een nieuwe toestemming met de titel CHANGE_OVERLAY_PACKAGES

Al deze veranderingen betekenen een stap van Google in de richting van een of andere vorm van systeemthema-applicatie die in de toekomst zal worden opgenomen. Voor de hierboven genoemde toestemming zijn systeemrechten vereist, wat betekent dat alleen een systeemapplicatie (of een applicatie met root-toegang) een beroep kan doen op deze toestemming. Het is niettemin interessant, omdat het laat zien dat Google er eindelijk naartoe werkt iets.

Dus waarom alleen technisch gezien ondersteunt Android Oreo thema's? Het simpele antwoord is dat, hoewel je een beroep kunt doen op de systeemmethode voor het installeren van thema's, dit nogal zinloos zou blijken te zijn. Dit komt omdat, ook al kunt u de nieuwe opdrachtregelinterface gebruiken om geïnstalleerde thema's te beheren, dit feitelijk niet mogelijk is installeer nieuwe thema's zonder root-toegang, omdat de thema's naar een map moeten gaan die beperkt is voor de gebruiker ruimte. Met root-toegang kun je sowieso eenvoudig een Substratum-thema inschakelen, dus het is niet nodig om het op de nieuwe manier te doen. Google heeft geen systeemapplicatie toegevoegd om het apparaat van een thema te voorzien, dus tot die tijd heeft het geen enkel voordeel om het op de nieuw meegeleverde manier te proberen.

De opdrachtregel-thema-interface

Wij bij XDA hebben de opdracht getest op een Google Pixel met de Android Oreo-release. We besloten een aantal van de commando's te testen en eerst te gebruiken

cmd overlays list

om alle vooraf geïnstalleerde overlays te bekijken. We hebben het bestaan ​​van een "com.google.android.theme.pixel" opgemerkt, deze uitgeschakeld en in plaats daarvan "android.auto_generated_rro__" ingeschakeld door de volgende opdrachten uit te voeren.

Zoals u hier kunt zien, is de standaardoverlay uitgeschakeld en de automatisch gegenereerde overlay ingeschakeld. Als we onze opdracht uitvoeren om onze geïnstalleerde overlays opnieuw te bekijken, zien we de volgende uitvoer.

Dit resulteert in een Android-systeeminstellingen-applicatie met een nieuw thema op onze Google Pixel. Merk op dat de bovenstaande overlaylijst ook thema's bevat die zijn geïnstalleerd met Substratum, en we konden deze net zo gemakkelijk in- en uitschakelen.

auto_generated_rro-thema

We hebben ook nog een ander commando gevonden bij het doorzoeken van de bron. De opdracht is als volgt

cmd overlay dump --user 0

geeft ons de volgende output.

Uitvoer

Instellingen

android.auto_generated_rro__: 0 {

mPackageName...: android.auto_generated_rro__

mGebruikerID...: 0

mTargetPackageName.: android

mBaseCodePath...: /vendor/overlay/framework-res__auto_generated_rro.apk

mState...: STATE_ENABLED

mIsEnabled...: waar

mIsStatisch...: waar

}

com.google.android.theme.pixel: 0 {

mPackageName...: com.google.android.theme.pixel

mGebruikerID...: 0

mTargetPackageName.: android

mBaseCodePath...: /vendor/overlay/Pixel/PixelThemeOverlay.apk

mState...: STATE_DISABLED

mIsEnabled...: false

mIsStatisch...: onwaar

}

Standaardoverlays: com.google.android.theme.pixel

PackageInfo-cache

2 pakket(ten)

Lees verder

Zoals u kunt zien, heeft Google veel werk gestoken in de ontwikkeling van de thema-engine en de integratie ervan in de AOSP-broncode. Het lijkt erop dat als het systeembreed zou worden toegevoegd, thema's zouden worden ingeschakeld binnen de System UI-tuner. Google heeft dat ook verstrekte informatie voor OEM's, dus het is mogelijk dat extra OEM's in de toekomst thema-ondersteuning op basis van de AOSP-versie op Android Oreo kunnen inschakelen.

Over het geheel genomen is dit een zeer opwindende ontwikkeling. Thema's zijn een van de vele onderdelen die Android definiëren als een volledig aanpasbaar besturingssysteem op je telefoon, ook al vereist het momenteel root voor systeembrede thema's. Als het in de toekomst zonder root-toegang zou kunnen werken, zou dit een grote stap in de richting van gebruikersvrijheid zijn. Het kan natuurlijk een tijdje in de System UI-tuner zijn opgesloten (aangezien kapotte thema's apps kapot kunnen maken), maar het is wel toegestaan dat de gebruiker in de eerste plaats zelfs maar profiteert van native thema-ondersteuning is een enorme toevoeging aan de mobiele bediening systeem.