O Android O Developer Preview tem uma configuração de tema de exibição misteriosa. O XDA concluiu que esta estrutura temática é baseada no RRO da Sony.
Caso você ainda não saiba, o Google lançou o segundo Android O Developer Preview (Android O DP2) durante o evento I/O de ontem. Nós já fizemos um mergulho profundo em tudo de novo que encontramos até agora, mas havia uma coisa no DP2 que estava me incomodando. Todos os que recebeu a atualização beta ou atualizou manualmente as novas imagens foram rapidamente recebidas com um UI radicalmente diferente em configurações rápidas. Por que diabos o Google decidiu mudar o tema? Depois de mais alguns testes e escavações, cheguei a uma conclusão. Por alguma razão, o Google decidiu fazer a sua Tema "invertido" o tema padrão; talvez enquanto a empresa estava no meio de testando uma solução de tema personalizada com base em Sobreposição de recursos de tempo de execução da Sony (RRO), eles não conseguiram fazer o tema Pixel padrão funcionar a tempo para o lançamento do Android O Beta.
Tema padrão do sistema no Android O Developer Preview 2
A revelação de que a estrutura de temas do Android O é baseada no RRO da Sony pode parecer óbvia para alguns, dado que o Google implementou suporte para RRO no Android 6.0 Marshmallow, embora exigisse que você tivesse um dispositivo com acesso root. No entanto, como o código-fonte do Android O não foi divulgado, seria pura especulação sugerir que esse tema de sistema no Android O é na verdade RRO. É por isso que nosso cobertura inicial desse cenário misterioso, bem como a cobertura feita por outros sites, não fez essa conexão. Mas há várias evidências que ligam esta característica à estrutura temática que acreditamos que deveria mostrar conclusivamente que O tema do dispositivo Android O é baseado em RRO. Com o suporte RRO a bordo, isso pode finalmente fornecer a solução de tema para usuários não rooteados que todos esperávamos.
O que é sobreposição de recursos de tempo de execução (RRO)?
RRO é uma estrutura de temas criada pelos desenvolvedores da Sony que alimenta Temas Xperia da Sony. A beleza do RRO é que ele permite substituir recursos do aplicativo sem a necessidade de modificar o código-fonte do aplicativo. Isso acontece através do uso de uma sobreposição, que contém suas próprias cadeias de recursos que são usadas para substituir os recursos do aplicativo sobreposto enquanto o aplicativo está sendo carregado.
Para aqueles que veem “RRO” e pensam em “Camadas”, vocês estão bem perto. Layers é uma versão ligeiramente modificada do RRO da Sony, mas no nível básico funciona de forma muito semelhante. RRO/Layers "instala" APKs de tema em /system/vendor/overlay. Na inicialização, o gerenciador de pacotes lê esses APKs, verifica-os e depois usa mapa de identificação para vinculá-lo à tabela de recursos do sistema. Você pode ler um FAQ mais completo em SykoPompos, o desenvolvedor do (agora obsoleto) Gerenciador de camadas aplicativo.
Capturas de tela do aplicativo obsoleto Layers Manager
Leitura recomendada: Uma breve história da temática: de temas OEM a camadas RRO
É claro que poucos na comunidade de ROM personalizada do Android ainda usam um mecanismo de tema baseado em RRO. A maioria mudou para outro mecanismo de temas, como Substrato, que é uma evolução das camadas agora baseadas no Overlay Manager Service (OMS). (CyanogenMod Theme Engine (CMTE) era outra estrutura de temas popular, embora seu futuro ainda está no ar.) No entanto, mesmo se você não estiver usando uma ROM personalizada com os commits do OMS, o Aplicativo de mecanismo de tema substrato ainda suporta a capacidade de usar temas "Substratum Legacy" que são apenas temas RRO/Layers. E por causa disso, os usuários começaram a descobrir que os temas do dispositivo Android O e o RRO são a mesma coisa.
Google finalmente apresenta temas por meio de RRO
Lá no seção de comentários de um Polícia Android artigo, Desenvolvedor reconhecido pelo XDA Maxr1998 postou uma captura de tela alegando que os temas Substratum Legacy aparecem no seletor de temas de dispositivos do Google.
À esquerda, você pode ver uma lista de APKs de sobreposição instalados por Maxr1998 no Android O Developer Preview 1. À direita, você pode ver as duas opções de tema no Android O Developer Preview 2. Anteriormente no Android O DP1, as duas opções eram "Pixel" e "Invertido" com "Pixel" definido como padrão, enquanto "Invertido" lembra a aparência da escala de cinza que é o padrão no O DP2.
Mas observe com atenção o nome do tema padrão no O DP2. É chamado de "android.auto_generated_rro". Na verdade, é um nome muito estranho, mas a inclusão de “RRO” no nome foi o que me levou a acreditar que este é realmente o RRO da Sony.
Então pensei, se isso é realmente RRO, onde mais posso procurar para corroborar isso? Esses pensamentos me levaram a verificar /system/vendor/overlay e, como esperado, existem de fato dois arquivos APK localizados em: framework-res__auto_generated_rro.apk e PixelThemeOverlay.apk.
Ambos correspondem aos nomes dos temas nas configurações de exibição. Curiosamente, quando você seleciona o tema Pixel nas configurações de exibição, ele não funciona. Não sou especialista no desenvolvimento de temas RRO, então não posso dizer por que o tema Pixel não está funcionando, embora, ao executar uma desmontagem do APK de ambos os aplicativos, fique claro que eles são realmente sobrepostos aplicativos.
PixelThemeOverlay.apk Desmontagem do APK
[tabs][título da aba ="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][título da aba ="strings.xml"]
<resources>
<stringname="pixel_overlay_pixel">Pixelstring>
resources>
[/tab][título da aba ="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>
[/aba]
[/tabs]
Se você folhear sobre a documentação do RRO fornecido pela Sony, está claro que este deveria ser um tema RRO. No arquivo AndroidManifest, a linha de sobreposição indica que esta sobreposição tem como alvo o arquivo framework-res.apk ("android") e tem uma prioridade de "1", que é a prioridade mais alta que pode receber.
Por outro lado, dentro do arquivo framework-res__auto_generated_rro.apk há um arquivo AndroidManifest.xml de aparência semelhante, mas há muitas outras strings presentes que não estão relacionadas ao tema. Mas isto é facilmente explicável pelo fato de que este tema RRO é basicamente uma versão simplificada do o framework-res.apk do Google Pixel, que imaginei ser verdade, já que \res\values\bools.xml tem a linha
que eu sei por uma postagem em nosso fórum ser uma linha que os usuários preciso definir a fim de ativar o suporte do Round Icon em todo o sistema.
Conclusão
Meu testador ainda não conseguiu obter acesso root no O DP2 para tentar executar um tema Substratum Legacy/RRO, mas dadas minhas próprias descobertas e as do Maxr1998, é seguro dizer que O Google pode finalmente estar se preparando para levar o tema RRO às massas.
Claro, não há garantia de que esse recurso não será eliminado em uma das versões posteriores do Android O. É possível que o Google decida que o RRO não está funcionando da maneira que deseja e abandone o recurso. No entanto, dada a extensa história do RRO nas mãos da Sony e de nossa própria comunidade de desenvolvimento, muitos de nós já estamos familiarizados com a grandeza que é o Runtime Resource Overlay da Sony. E como já existem vários temas compatíveis com RRO disponíveis, se o Google decidir nos permitir a instalação temas personalizados, eles abrirão as comportas para um mercado já amplo de temas disponíveis para os usuários aproveitarem.
Créditos da imagem em destaque: SonyDevWorld