Android O Developer Preview har en mystisk skjermtemainnstilling. XDA har konkludert med at dette temarammeverket er basert på Sonys RRO.
I tilfelle du ikke allerede er klar over det, har Google gitt ut den andre Android O Developer Preview (Android O DP2) under gårsdagens I/O-arrangement. Det har vi allerede gjort et dypdykk i alt det nye vi har funnet så langt, men det var én ting med DP2 som irriterte meg. Alle som mottatt betaoppdateringen eller blinket manuelt de nye bildene ble raskt møtt med en radikalt annerledes brukergrensesnitt i hurtiginnstillinger. Hvorfor i all verden bestemte Google seg for å endre temaet? Etter litt mer testing og graving har jeg kommet til en konklusjon. Uansett grunn har Google bestemt seg for å gjøre det "Omvendt" tema standardtemaet; kanskje mens selskapet var midt i testing av en tilpasset temaløsning basert på Sonys Runtime Resource Overlay (RRO), de klarte ikke å få standard Pixel-temaet til å fungere i tide for Android O Beta-utgivelsen.
Standard systemtema i Android O Developer Preview 2
Avsløringen om at Android Os temaramme er basert på Sonys RRO kan virke åpenbar for noen gitt at Google implementert støtte for RRO i Android 6.0 Marshmallow, selv om det krevde at du hadde en rotfestet enhet. Men siden kildekoden for Android O ikke er utgitt, ville det vært rene spekulasjoner å antyde at dette systemtemaet i Android O faktisk er RRO. Det er derfor vår innledende dekning av denne mystiske settingen, samt dekningen utført av andre nettsteder, gjorde ikke denne forbindelsen. Men det er flere bevis som knytter denne funksjonen til temarammeverket som vi mener definitivt bør vise at Android Os enhetstema er basert på RRO. Med RRO-støtte om bord kan dette evt endelig gi temaløsningen for uberørte brukere vi alle har ventet på.
Hva er Runtime Resource Overlay (RRO)?
RRO er et temarammeverk laget av Sonys utviklere som drev Sonys Xperia-temaer. Det fine med RRO er at det lar deg erstatte applikasjonsressurser uten å måtte endre kildekoden til applikasjonen. Dette skjer ved bruk av et overlegg, som inneholder sine egne ressursstrenger som brukes til å erstatte den overlagte applikasjonens ressurser mens applikasjonen lastes.
For de av dere som ser «RRO» og tenker «Layers», er dere ganske nærme. Layers er en litt modifisert versjon av Sonys RRO, men på basisnivå fungerer den veldig likt. RRO/Layers "installerer" tema-APK-er til /system/leverandør/overlegg. Ved oppstart leser pakkebehandleren disse APK-ene, verifiserer dem og bruker deretter idmap for å koble den til systemressurstabellen. Du kan lese en mer grundig FAQ av SykoPompos, utvikleren av (nå avviklet) Lagsjef app.
Skjermbilder av den avviklede Layers Manager-appen
Anbefalt lesning: En kort historie om temaer: Fra OEM-temaer til RRO-lag
Selvfølgelig er det få i Android tilpassede ROM-fellesskapet som fortsatt bruker en temamotor basert på RRO. De fleste har gått over til en annen temamotor som f.eks Underlag, som er en videreutvikling av lag som nå er basert på Overlay Manager Service (OMS). (CyanogenMod Theme Engine (CMTE) var et annet populært temarammeverk fremtiden er fortsatt i luften.) Men selv om du ikke bruker en tilpasset ROM med OMS-commits, vil Substratum-temamotor-app støtter fortsatt muligheten til å bruke "Substratum Legacy"-temaer som bare er RRO/Layers-temaer. Og på grunn av dette begynte brukerne å finne ut at Android Os enhetstemaer og RRO er ett og det samme.
Google introduserer endelig tema gjennom RRO
Over på kommentarfeltet til en Android-politiet artikkel, XDA anerkjent utvikler Maxr1998 la ut et skjermbilde som hevder at Substratum Legacy-temaer vises i Googles enhetstemavelger.
Til venstre kan du se en liste over overleggs-APK-er installert av Maxr1998 på Android O Developer Preview 1. Til høyre kan du se de to temavalgene i Android O Developer Preview 2. Tidligere i Android O DP1, de to alternativene var "Pixel" og "Inverted" med "Pixel" satt som standard mens "Inverted" minner om gråskalautseendet som er standard i O DP2.
Men ta en nøye titt på navnet på standardtemaet i O DP2. Det kalles "android.auto_generated_rro." Et veldig merkelig navn, men inkluderingen av "RRO" i navnet er det som førte til at jeg først trodde at dette virkelig er Sonys RRO.
Jeg tenkte da, hvis dette virkelig er RRO, hvor ellers kan jeg se for å bekrefte dette? Disse tankene førte til at jeg sjekket /system/leverandør/overlegg, og som forventet er det faktisk to APK-filer plassert innenfor: framework-res__auto_generated_rro.apk og PixelThemeOverlay.apk.
Begge disse samsvarer med navnene på temaene i skjerminnstillingene. Merkelig nok, når du velger Pixel-temaet i skjerminnstillingene, fungerer det ikke. Jeg er ingen ekspert på å utvikle RRO-temaer, så jeg kan ikke si hvorfor Pixel-temaet ikke fungerer, men ved å utføre en APK-nedrettelse av begge applikasjonene er det klart at disse faktisk er overlegg apper.
PixelThemeOverlay.apk APK-nedrivning
[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>
[/tab]
[/tabs]
Hvis du skumles over dokumentasjonen av RRO levert av Sony, er det tydelig at dette skal være et RRO-tema. I AndroidManifest-filen indikerer overleggslinjen at dette overlegget retter seg mot framework-res.apk-filen ("android") og den har en prioritet på "1", som er den høyeste prioriteten den kan gis.
På den annen side, innenfor rammeverket-res__auto_generated_rro.apk-filen er en AndroidManifest.xml-fil som ser lignende ut, men det er mange andre strenger som ikke er relatert til tema. Men dette kan lett forklares med det faktum at dette RRO-temaet i utgangspunktet er en nedstrippet versjon av Google Pixels framework-res.apk, som jeg trodde var sant siden \res\values\bools.xml har linjen
som jeg vet fra et innlegg på forumet vårt er en linje som brukere trenger å stille inn for å aktiver Round Icon-støtte for hele systemet.
Konklusjon
Testeren min har ennå ikke vært i stand til å oppnå root-tilgang i O DP2 for å prøve å kjøre et Substratum Legacy/RRO-tema, men gitt mine egne funn og det fra Maxr1998, er det trygt å si at Google kan endelig forberede seg på å bringe RRO-tema til massene.
Selvfølgelig er det ingen garanti for at denne funksjonen ikke blir fjernet i en av de senere Android O-byggene. Det er mulig at Google bestemmer seg for at RRO ikke fungerer slik de vil ha det og dropper funksjonen. Men gitt RROs omfattende historie både i hendene på Sony og vårt eget utviklingsfellesskap, er mange av oss allerede kjent med storheten som er Sonys Runtime Resource Overlay. Og siden det allerede er massevis av RRO-kompatible temaer tilgjengelig, hvis Google noen gang bestemmer seg for å la oss installere tilpassede temaer, vil de åpne slusene til et allerede omfattende marked av tilgjengelige temaer som brukerne kan glede seg over.
Kreditt for funksjonsbilder: SonyDevWorld