Android O Developer Preview har en mystisk inställning för visningstema. XDA har kommit fram till att detta temaramverk är baserat på Sonys RRO.
Om du inte redan är medveten har Google släppt den andra Android O Developer Preview (Android O DP2) under gårdagens I/O-evenemang. Det har vi redan gjort en djupdykning i allt nytt vi hittat hittills, men det var en sak med DP2 som störde mig. Alla som fick betauppdateringen eller blinkade manuellt de nya bilderna möttes snabbt av en radikalt annorlunda UI i snabbinställningar. Varför i hela friden bestämde sig Google för att ändra temat? Efter lite mer testande och grävande har jag kommit fram till en slutsats. Av någon anledning har Google beslutat att göra det "Inverterat" tema standardtemat; kanske medan företaget var mitt uppe testa en anpassad temalösning baserad på Sonys Runtime Resource Overlay (RRO), de kunde inte få standardtemat för Pixel att fungera i tid för Android O Beta-versionen.
Standardsystemtema i Android O Developer Preview 2
Avslöjandet att Android O: s temaramverk är baserat på Sonys RRO kan verka uppenbart för vissa med tanke på att Google implementerat stöd för RRO i Android 6.0 Marshmallow, även om det krävde att du hade en rotad enhet. Men eftersom källkoden för Android O inte har släppts hade det varit rena spekulationer att antyda att detta systemtema i Android O faktiskt är RRO. Det är därför vår initial täckning av denna mystiska miljö, såväl som täckningen som gjorts av andra webbplatser, gjorde inte denna koppling. Men det finns flera bevis som kopplar denna funktion till temaramverket som vi anser definitivt borde visa att Android O: s enhetstema är baserat på RRO. Med RRO-stöd ombord kan detta äntligen tillhandahålla temalösningen för orotade användare som vi alla har väntat på.
Vad är Runtime Resource Overlay (RRO)?
RRO är ett temaramverk skapat av Sonys utvecklare som drev Sonys Xperia-teman. Det fina med RRO är att det låter dig ersätta applikationsresurser utan att behöva ändra källkoden för applikationen. Detta sker genom användning av en överlagring, som innehåller sina egna resurssträngar som används för att ersätta den överlagrade applikationens resurser medan applikationen laddas.
För er som ser "RRO" och tänker "Layers" är ni ganska nära. Layers är en något modifierad version av Sonys RRO, men på basnivå fungerar den väldigt lika. RRO/Layers "installerar" tema-APK: er till /system/leverantör/överlägg. Vid uppstart läser pakethanteraren dessa APK-filer, verifierar dem och använder dem sedan idmap för att länka den till systemresurstabellen. Du kan läsa en mer ingående FAQ av SykoPompos, utvecklaren av (nu utfasad) Lagerhanterare app.
Skärmdumpar av den föråldrade Layers Manager-appen
Rekommenderad läsning: En kort historia om tema: Från OEM-teman till RRO-lager
Naturligtvis är det få i Android anpassade ROM-gemenskapen som fortfarande använder en temamotor baserad på RRO. De flesta har gått vidare till en annan temamotor som t.ex Underlag, som är en utveckling av lager nu baserad på Overlay Manager Service (OMS). (CyanogenMod Theme Engine (CMTE) var dock ett annat populärt temaramverk dess framtid ligger fortfarande i luften.) Men även om du inte använder ett anpassat ROM med OMS-commits Substratum theme engine app stöder fortfarande möjligheten att använda "Substratum Legacy"-teman som bara är RRO/Layers-teman. Och på grund av detta började användarna komma på att Android O: s enhetsteman och RRO är ett och samma.
Google introducerar äntligen tema genom RRO
Över på kommentarsavsnitt av en AndroidPolice artikel, XDA erkänd utvecklare Maxr1998 lade upp en skärmdump som hävdade att Substratum Legacy-teman dyker upp i Googles enhetstemaväljare.
Till vänster kan du se en lista över överlagrings-APK: er installerade av Maxr1998 på Android O Developer Preview 1. Till höger kan du se de två temavalen i Android O Developer Preview 2. Tidigare i Android O DP1, de två alternativen var "Pixel" och "Inverterad" med "Pixel" inställd som standard medan "Inverterad" liknar gråskalans utseende och känsla som är standard i O DP2.
Men ta en noggrann titt på namnet på standardtemat i O DP2. Det kallas "android.auto_generated_rro." Ett mycket konstigt namn verkligen, men inkluderingen av "RRO" i namnet är det som fick mig att först tro att detta verkligen är Sonys RRO.
Jag tänkte då, om detta verkligen är RRO, var kan jag annars leta för att bekräfta detta? De tankarna fick mig att kolla /system/vendor/overlay, och som förväntat finns det verkligen två APK-filer inom: framework-res__auto_generated_rro.apk och PixelThemeOverlay.apk.
Båda dessa matchar namnen på teman i displayinställningarna. Märkligt nog, när du väljer Pixel-temat i skärminställningarna fungerar det inte. Jag är ingen expert på att utveckla RRO-teman, så jag kan inte säga varför Pixel-temat inte fungerar, men genom att utföra en APK-nedbrytning av båda applikationerna är det tydligt att dessa verkligen är överlagringar appar.
PixelThemeOverlay.apk APK Nedbrytning
[tabs][tab title ="AndroidManifest.xml"]
package="com.google.android.theme.pixel" platformBuildVersionCode="25" platformBuildVersionName="O">
<overlayandroid: priority="1"android: targetPackage="android"/>
<applicationandroid: hasCode="false"android: label="@string/pixel_overlay_pixel"/>
manifest>
[/tab][tab title ="strings.xml"]
<resources>
<stringname="pixel_overlay_pixel">Pixelstring>
resources>
[/tab][tab title ="colors.xml"]
<resources>
<colorname="user_icon_1">#ff5e97f6color>
<colorname="user_icon_2">#ff5c6bc0color>
<colorname="user_icon_3">#ff26a69acolor>
<colorname="user_icon_4">#ffec407acolor>
<colorname="user_icon_5">#ff33ac71color>
<colorname="user_icon_6">#ff8bc34acolor>
<colorname="user_icon_7">#ffff9800color>
<colorname="user_icon_8">#ffff7043color>
<colorname="system_error">#ffea4335color>
<colorname="primary_device_default_dark">#ff2d2d2dcolor>
<colorname="primary_device_default_settings">#ff2d2d2dcolor>
<colorname="primary_dark_device_default_dark">#ff242424color>
<colorname="primary_dark_device_default_settings">#ff242424color>
<colorname="secondary_device_default_settings">#ff3a3a3acolor>
<colorname="tertiary_device_default_settings">#ff616161color>
<colorname="quaternary_device_default_settings">#ff9e9e9ecolor>
<colorname="accent_device_default_700">#ff3367d6color>
<colorname="accent_device_default_light">#ff4285f4color>
<colorname="accent_device_default_dark">#ff5e97f6color>
<colorname="accent_device_default_50">#ffe8f0fecolor>
resources>
[/flik]
[/tabs]
Om du skummar över dokumentationen av RRO från Sony är det tydligt att detta ska vara ett RRO-tema. I AndroidManifest-filen indikerar överlagringsraden att denna överlagring är inriktad på framework-res.apk-filen ("android") och den har en prioritet på "1", vilket är den högsta prioritet den kan ges.
Å andra sidan, inom ramen för framework-res__auto_generated_rro.apk-filen finns en AndroidManifest.xml-fil som ser liknande ut, men det finns många andra strängar som inte är relaterade till tema. Men detta är lätt att förklara med det faktum att detta RRO-tema i grunden är en avskalad version av Google Pixels framework-res.apk, vilket jag trodde är sant eftersom \res\values\bools.xml har raden
som jag vet från ett inlägg på vårt forum är en linje som användare behöver ställa in för att aktivera Round Icon-stöd i hela systemet.
Slutsats
Min testare har ännu inte kunnat uppnå root-åtkomst i O DP2 för att försöka köra ett Substratum Legacy/RRO-tema, men med tanke på mina egna resultat och Maxr1998, är det säkert att säga att Google kanske äntligen förbereder sig för att ge RRO-teman till massorna.
Naturligtvis finns det ingen garanti för att den här funktionen inte tas bort i en av de senare Android O-versionerna. Det är möjligt att Google bestämmer sig för att RRO inte fungerar som de vill att det ska och släpper funktionen. Men med tanke på RRO: s omfattande historia både i händerna på Sony och vår egen utvecklingsgemenskap, är många av oss redan bekanta med storheten som är Sonys Runtime Resource Overlay. Och eftersom det redan finns massor av RRO-kompatibla teman tillgängliga, om Google någonsin bestämmer sig för att tillåta oss att installera anpassade teman, kommer de att öppna slussarna till en redan omfattande marknad av tillgängliga teman som användarna kan njuta av.
Medverkande bildkrediter: SonyDevWorld