Android Oreo introduceert opdrachtregelinterface voor thema's

Met de lancering van Android Oreo komt veel tijd besteed aan het zoeken naar verborgen goodies binnen de broncode. In het verleden heeft het engineeringteam van Android gesproken over het inschakelen van thematisering in Android O. We meldden in mei dat de tweede Developer Preview van Android O mogelijk een hint was van Google die de Overlay Manager Service (OMS) en Runtime Resource Overlay (RRO ondersteunt) ), maar nu weten we het zeker. Android Oreo ondersteunt nu technisch gezien OMS / RRO-thema's en biedt zelfs een interface voor het in- of uitschakelen van thema's, op voorwaarde dat u de opdrachtregel kunt gebruiken.

Update: Substratum gebruikt deze commando's 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 onderkenden, werkten om de ondersteuning uit te breiden naar andere ROM's, en daarmee kwam RRO-thema op een groot aantal apparaten - niet alleen Sony-apparaten. Het verving op ingenieuze wijze bronnen tijdens de runtime van de app, een gebruiksgemak dat op dat moment niet te zien was bij andere thema-opties. Dit is geëvolueerd naar OMS, dat ook door Sony intern is ontwikkeld. De beroemde Layers Manager gebruikte oorspronkelijk RRO-thema's, maar OMS werd later aangepast in wat nu Substratum wordt genoemd en is het themakader dat gebruikers nu het meest vertrouwd zijn op onze forums. ROM's op onze forums met OMS commits betekenen dat ze de standaard themamotor van Substratum ondersteunen. De 'Legacy-modus' in Substratum maakt gebruik van RRO-thema's.


Android Oreo introduceert themacommando's

Het lijkt erop dat Google dit thematype nu volledig wil ondersteunen in AOSP, mogelijk op weg naar een volledige, door het systeem ondersteunde themabeheerder. Op de Android Gerrit heeft Google de afgelopen maanden (en met Android Oreo) een aantal wijzigingen aangebracht die voorstellen doen om de themamotor in het hele systeem mogelijk te maken. De wijzigingen staan ​​hieronder, met links naar hun respectieve commits.

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

Al deze wijzigingen betekenen een stap van Google naar een vorm van systeemthema-applicatie die in de toekomst zal worden opgenomen. De hierboven vermelde machtiging vereist systeemrechten en betekent dus dat alleen een systeemtoepassing (of een toepassing met root-toegang) deze machtiging kan gebruiken. Het is desalniettemin interessant, omdat het laat zien dat Google eindelijk ergens naartoe werkt.

Dus waarom ondersteunt Android Oreo alleen technisch gezien thematisering? Welnu, het eenvoudige antwoord is dat hoewel je de systeemmethode van het installeren van thema's kunt gebruiken, dit tamelijk zinloos zou zijn. Dit komt omdat, hoewel u de nieuwe opdrachtregelinterface kunt gebruiken om geïnstalleerde thema's te beheren, u geen nieuwe thema's zonder root-toegang kunt installeren, omdat de thema's naar een map moeten gaan die beperkt is door de gebruikersruimte. Met root-toegang kunt u eenvoudig een Substratum-thema toch inschakelen, dus het is niet nodig om het op de nieuwe manier te doen. Google heeft geen systeemtoepassing toegevoegd om het apparaat een thema te geven, dus tot die tijd heeft het geen enkele zin om het op de nieuwe manier te proberen.

De opdrachtregel Theming Interface

We hebben de opdracht getest op een Google Pixel met de Android Oreo-release. We besloten enkele van de opdrachten te testen en hebben deze eerst gebruikt

 cmd overlays list 

om alle vooraf geïnstalleerde overlays te bekijken. We merkten het bestaan ​​van een "com.google.android.theme.pixel" op, die het uitschakelde en in plaats daarvan "android.auto_generated_rro__" inschakelde door de volgende opdrachten uit te voeren.

Zoals hier te zien is, is de standaard overlay uitgeschakeld en is 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 nieuw thema Android-systeeminstellingen-applicatie op onze Google Pixel. Merk op dat de bovenstaande overlaylijst ook thema's bevat die zijn geïnstalleerd met behulp van Substratum en dat we deze even gemakkelijk konden in- / uitschakelen.

auto_generated_rro Thema

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

 cmd overlay dump --user 0 

geeft ons de volgende output.

uitgang

instellingen

android.auto_generated_rro __: 0 {

mPackageName …… .: android.auto_generated_rro__

mUserId …………: 0

mTargetPackageName .: android

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

mState ………… .: STATE_ENABLED

mIsEnabled ………: waar

mIsStatic ……… .: waar

}

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

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

mUserId …………: 0

mTargetPackageName .: android

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

mState ………… .: STATE_DISABLED

mIsEnabled ………: false

mIsStatic ……… .: false

}

Standaard overlays: com.google.android.theme.pixel

PackageInfo cache

2 pakket (ten)

Zoals te zien is, heeft Google veel werk gestoken in de ontwikkeling van de themamotor en de integratie ervan in de AOSP-bron. Het lijkt erop dat als het hele systeem zou worden toegevoegd, thema's zouden worden ingeschakeld in de System UI-tuner. Google heeft ook informatie verstrekt voor OEM's, dus het is mogelijk dat extra OEM's in de toekomst thematische ondersteuning mogelijk maken op basis van de AOSP-versie op Android Oreo.

Over het algemeen is dit een zeer opwindende ontwikkeling. Theming is een van de vele onderdelen die Android definieert als een volledig aanpasbaar besturingssysteem op uw telefoon, zelfs als het momenteel root vereist voor systeembrede thema's. Als het in de toekomst zou werken zonder root-toegang, zou dit een belangrijke stap zijn in de richting van gebruikersvrijheid. Natuurlijk kan het geruime tijd worden opgesloten in de System UI-tuner (omdat kapotte thema's apps kunnen breken), maar het toestaan ​​van de gebruiker om in de eerste plaats zelfs te profiteren van ondersteuning voor native thema is een enorme toevoeging aan het mobiele besturingssysteem.