Android Oreo inkluderer kommandolinjegrænsefladestøtte til RRO-temaer, der antyder, at operativsystemet skubber stadig tættere på systemomfattende temaunderstøttelse.
Med lanceringen af Android Oreo følger en masse tid brugt på at søge efter skjulte godbidder i kildekoden. Tidligere havde Android-ingeniørteamet talte om at aktivere temaer i Android O. Vi rapporterede i maj at den anden Developer Preview af Android O kan have været en antydning af, at Google understøttede Overlay Manager Service (OMS) og Runtime Resource Overlay (RRO), men nu ved vi med sikkerhed, at det var det. Android Oreo nu, teknisk set, understøtter OMS/RRO-tema og giver endda en grænseflade til at aktivere eller deaktivere temaer, forudsat at du kan mave bruge kommandolinjen.
Opdatering: Substratum har brugt disse kommandoer med dev-forhåndsvisningerne og nu med Oreo, siden de var tilgængelige!
Hvad er RRO og OMS?
RRO blev udviklet internt af Sony til temafunktionalitet på Sony Xperia-linjen. Udviklere, der anerkendte dets betydning, arbejdede på at udvide dets support til andre ROM'er, og med det fulgte RRO-temaer på tværs af en lang række enheder - ikke kun Sony-enheder. Det erstattede på genial vis ressourcer under appens køretid, en brugervenlighed, der ikke var set fra andre temaindstillinger på det tidspunkt. Dette har udviklet sig til OMS, som også blev udviklet internt af Sony. Den kendte
Lagleder brugte oprindeligt RRO-tema, men OMS blev senere tilpasset til det, der nu er kendt som Substratum og er den temaramme, som brugerne på vores fora nu kender mest. ROM'er på vores fora med OMS-commits betyder, at de understøtter Substratums standardtemamotor. "Legacy mode" i Substratum bruger RRO-tema.Android Oreo introducerer temakommandoer
Det ser ud til, at Google nu ønsker fuldt ud at understøtte denne tematype i AOSP, muligvis på vej mod en fuld, systemunderstøttet temamanager. På Android Gerrit har Google foretaget en række ændringer i de seneste måneder (og med Android Oreo), som foreslår træk for at aktivere temamotoren i hele systemet. Ændringerne er nedenfor med links til deres respektive forpligtelser.
- Overlejringskommandoer
- OverlayManagerService (OMS) introduceret
- En ny tilladelse med titlen CHANGE_OVERLAY_PACKAGES
Alle disse ændringer betyder et skridt fra Google i retning af en form for systemtemaapplikation, der skal inkluderes i fremtiden. Den tilladelse, der er anført ovenfor, kræver systemrettigheder og betyder således, at kun et systemprogram (eller et program med root-adgang) kan påberåbe sig denne tilladelse. Det er alligevel interessant, da det viser, at Google endelig arbejder hen imod noget.
Så hvorfor kun teknisk set understøtter Android Oreo temaer? Nå, det enkle svar er, at selvom du kan påberåbe dig systemmetoden til at installere temaer, ville det vise sig ret meningsløst at gøre det. Dette skyldes, at selvom du kan bruge den nye kommandolinjegrænseflade til at administrere installerede temaer, kan du faktisk ikke installere nye temaer uden root-adgang, fordi temaerne skal gå ind i en mappe, der er begrænset fra brugeren plads. Med root-adgang kan du simpelthen aktivere et Substratum-tema alligevel, så der er ingen grund til at gøre det på den nye måde. Google har ikke inkluderet en systemapplikation til at tematisere enheden, så indtil da er der ingen som helst fordel ved at prøve at gøre det på den ny inkluderede måde.
Kommandolinjens temagrænseflade
Vi hos XDA testede kommandoen på en Google Pixel, der kører Android Oreo-udgivelsen. Vi besluttede at teste nogle af kommandoerne og brugte først
cmd overlays list
for at se alle forudinstallerede overlejringer. Vi har bemærket eksistensen af en "com.google.android.theme.pixel", deaktiverer den og i stedet aktiverer "android.auto_generated_rro__" ved at køre følgende kommandoer.
Som det kan ses her, er standardoverlejringen deaktiveret, og den automatisk genererede er aktiveret. Når vi kører vores kommando for at se vores installerede overlejringer igen, ser vi følgende output.
Dette resulterer i et nyt tema Android-systemindstillinger-applikation på vores Google Pixel. Bemærk, at ovenstående overlejringsliste også inkluderer temaer installeret ved hjælp af Substratum, og vi var i stand til at aktivere/deaktivere disse lige så nemt.
Vi fandt også en anden kommando, da vi gravede gennem kilden. Kommandoen er som følger
cmd overlay dump --user 0
giver os følgende output.
Produktion
Indstillinger
android.auto_generated_rro__: 0 {
mPackageName...: android.auto_generated_rro__
bruger-id...: 0
mTargetPackageName.: android
mBaseCodePath...: /vendor/overlay/framework-res__auto_generated_rro.apk
mState...: STATE_ENABLED
misEnabled...: sandt
mIsStatic...: sandt
}
com.google.android.theme.pixel: 0 {
mPackageName...: com.google.android.theme.pixel
bruger-id...: 0
mTargetPackageName.: android
mBaseCodePath...: /vendor/overlay/Pixel/PixelThemeOverlay.apk
mState...: STATE_DISABLED
misEnabled...: falsk
mIsStatic...: falsk
}
Standardoverlejringer: com.google.android.theme.pixel
Pakkeinfo cache
2 pakker
Læs mere
Så som det kan ses, har Google lagt meget arbejde i udviklingen af temamotoren og integrere den i AOSP-kilden. Det ser ud til, at hvis det skulle tilføjes hele systemet, temaer ville blive aktiveret i System UI-tuneren. Google har også givet oplysninger til OEM'er, så det er muligt, at yderligere OEM'er kunne aktivere temaunderstøttelse baseret på AOSP-versionen i fremtiden på Android Oreo.
Alt i alt er det en meget spændende udvikling. Temaer er en af de mange dele, der definerer Android som et fuldt tilpasseligt operativsystem på din telefon, selvom det i øjeblikket kræver root til hele systemets temaer. Hvis det i fremtiden blev aktiveret til at fungere uden root-adgang, ville det være et stort skridt i retning af brugerfrihed. Selvfølgelig kan det være låst væk i System UI-tuner i et stykke tid (da ødelagte temaer kan ødelægge apps), men det tillader brugeren til selv at drage fordel af native tema support i første omgang er en enorm tilføjelse til den mobile drift system.