Como o Substratum trouxe mais opções para um TouchWiz inflexível

click fraud protection

Sungstratum da equipe [projekt.] traz todas as novidades temáticas do RRO-OMS para dispositivos Samsung Nougat por meio do Substratum! Continue lendo para saber mais!

Os temas do Android já percorreram um longo caminho, desde edições hackeadas até Substratum e agora, Sungstratum. Anos atrás, a palavra "tema" nas discussões do Android era frequentemente substituída pela palavra "seletor", uma referência ao o T-Mobile Theme Chooser encontrado no CyanogenMod que lançou as bases que tornaram o Android um tema paraíso. A capacidade de modificar a aparência do SO concedeu aos usuários outra dimensão de customização, permitindo-lhes fazer alterações que tornam seus dispositivos muito mais personalizados.

O bom trabalho continuou em duas direções diferentes. O Theme Chooser evoluiu para o CyanogenMod Theme Engine, mas apesar dos anos de esforços investidos nos recursos de temas, o CMTE tornou-se obsoleto quando outras alternativas surgiram.


RRO e camadas

A base de uma das alternativas foi lançada quando a contribuição do código da Sony na forma de uma nova estrutura chamada

Sobreposição de recursos de tempo de execução (RRO) foi aceito no AOSP. Esta estrutura fornece a capacidade de substituir recursos do aplicativo durante o tempo de execução (daí o nome). As "sobreposições" por si só estão presentes e são suportadas no Android desde o Gingerbread (e talvez antes também), usado principalmente para trocar recursos para fazer os aplicativos funcionarem naquele específico dispositivo. A abordagem da Sony ao RRO envolveu a modificação do gerenciador de ativos para aceitar apks que usavam recursos mapeados para outros recursos correspondentes existentes no dispositivo. Esses novos recursos do apk foram então sobrepostos aos recursos básicos apenas em tempo de execução, permitindo que o sistema funcionasse como se esses novos recursos sempre tivessem feito parte dele.

A estrutura RRO foi incorporada ao AOSP antes do Lollipop 5.0 ser tornado público, mas as poucas compilações iniciais do 5.0 tiveram partes da estrutura quebradas devido a outras alterações. As prévias para desenvolvedores do Android 6.0 Marshmallow foram as primeiras a adicionar uma estrutura RRO funcional, embora limitada, abrindo as portas da personalização diretamente no nível padrão do Android. Portanto, a menos que um OEM tente deliberadamente divergir das opções de temas padrão do Android, um certo nível de consistência poderia ser mantido na abordagem de como os 'temas' seriam implementados em Android.

Enquanto o AOSP brincava com o RRO e procurava a melhor maneira de incorporar tudo, uma equipe de desenvolvedores chamou BitSyko trabalharam juntos em um esforço coletivo chamado "Camadas". As camadas foram expandidas na funcionalidade RRO de estoque no Android 5.1 Lollipop para permitir uma alternância de recursos mais complexa e permitir mais controle de elementos para temas do que é possível com o RRO de estoque. Como o Layers foi desenvolvido a partir do RRO, os fabricantes de ROM precisaram adicionar código extra para habilitar a funcionalidade do Layers em suas ROMs, já que nem todos os temas do Layers funcionariam no RRO padrão do Marshmallow.

Enquanto isso, a Sony seguiu em frente com seus próprios esforços em direção ao tema Android. Começou a trabalhar OMS (serviço de gerenciamento de sobreposição), um cliente para gerenciar sobreposições que permitiria aos provedores controlar dinamicamente as prioridades e ativar e desativar sobreposições. OMS está sendo incorporado ao AOSP e chegará ao Android O. Desenvolvedor reconhecido pelo XDA nicholaschum conseguiu confirmar através de suas fontes que o Android O apresentará “sobreposições dinâmicas”, que se acredita ser uma referência ao OMS.

O OMS causou conflitos com Layers, pois tradicionalmente tais funções estavam sob o controle do themer. Para lidar com os problemas levantados pelo OMS, bem como para expandir a funcionalidade das camadas, a BitSyko se uniu novamente (e renomeou-se para [projeto.]) para criar Substrato. Substratum é um cliente com funcionalidade OMS que tenta reconciliar a funcionalidade de camadas com o OMS e também empresta outros elementos de outras soluções de temas anteriores. As sobreposições não eram mais sobrepostas para tematizar elementos individuais, pois agora todos os elementos necessários foram injetados em uma única sobreposição. Recursos como compilação no dispositivo permitiram que temas fossem aplicados sem a necessidade de reinicialização entre as alterações, tornando-o significativamente mais fácil para os usuários finais experimentarem temas e experimentarem. O Substratum está em desenvolvimento ativo desde o seu início e listando todos os seus recursos e funcionalidade adicionada estaria fora do escopo deste artigo, então passaremos para o verdadeiro assunto deste pedaço.


Substrato em Sungstratum

Conforme explicado na seção anterior, o Substratum começou como uma forma de estender a funcionalidade de estoque OMS, bem como a funcionalidade de estoque RRO (por meio de camadas). O substrato foi planejado para ser usado junto com ROMs baseadas em AOSP, já que a maioria dos outros OEMs teria feito alterações conflitantes isso não permitiria que o Substratum coexistisse com suas modificações em um skin UX editado, como o da Samsung para exemplo.

A Samsung, por si só, também estava trabalhando em uma solução de temas para uso em seus próprios dispositivos no Nougat. Ao contrário da Sony, a Samsung não demonstrou interesse em contribuir com o código do tema para o AOSP. Mas como a solução da Samsung era bastante básica, o AOSP não estava perdendo muito. A solução de temas da Samsung incorporada ao Touchwiz fez sua aparição real no Samsung Galaxy S6, mas, como mencionado, era bastante restrita no que poderia tentar alcançar. Antes disso, havia experiências limitadas que começaram com o Galaxy Alpha, embora a maioria dos elementos da interface do sistema estivessem fora de seu escopo. Os temas podem mudar papéis de parede e ícones, bem como alguns aplicativos de estoque da Samsung, como discador, contatos, mensagens e área de notificação, por exemplo.

Acontece que o mecanismo de temas da Samsung estende RRO conforme encontrado no AOSP. A Samsung também recriou sua própria versão interna do OMS após estender o RRO, portanto, suas implementações de RRO e OMS diferem do AOSP. Mas, surpreendentemente, não muito – um comportamento anômalo quando se considera a distinção e a complexidade do Touchwiz. Os usuários que usam carros-chefe da Samsung mais recentes relataram que poderiam instalar sobreposições RRO e fazer com que eles criassem temas para aplicativos de terceiros.

Essa foi a deixa que a equipe [projekt.] precisava para analisar o suporte oficial aos dispositivos Samsung no Substratum. A equipe converteu uma pequena quantidade de código da seção RRO/Legacy do aplicativo, mas em vez de solicitando root e pedindo para reiniciar, eles dispararam intents específicos para que as sobreposições fossem instaladas. A equipe então trabalhou para garantir que os aplicativos afetados pelos temas fossem fechados à força em segundo plano, a fim de garantir uma atualização completa dos ativos no próximo lançamento.

Perguntamos ao desenvolvedor reconhecido pelo XDA nicholaschum para nos fornecer alguns insights sobre os desafios que a equipe enfrentou ao trabalhar contra a implementação de código fechado do RRO-OMS da Samsung:

Os desafios que enfrentamos eram bastante obscuros e desconhecidos por muitos que não têm muito conhecimento compreender os sistemas temáticos, sejam eles de código aberto ou fechado - tudo tem seu próprio teste e fase de erro. Neste caso, trabalhando com a Samsung, me deparei com muitos problemas, mas o principal deles era que as intenções do sistema não eram disparado para sobreposições após a conclusão da instalação - como a utilização de receptores de transmissão com “android.intent.action. PACKAGE_ADDED” - o Theme Service nega qualquer coisa que não faça parte da assinatura do sistema com um Samsung específico permissão de serviço de tema para receber isso, então a parte mais difícil são as soluções alternativas que tivemos para encontrar uma maneira em volta.

A forma como usamos o Substratum junto com o Theme Engine da Samsung é utilizando o mesmo sistema que eles. Eles usam uma versão altamente modificada do sistema Resource Runtime Overlay da Sony, abreviado como RRO ou conhecido como legado entre os usuários do Substratum. No entanto, a diferença é que os temas Samsung têm uma permissão extra que oculta essas sobreposições nas Configurações, portanto você não pode desinstalá-las manualmente, uma por uma. Usamos o mesmo sistema, mas utilizamos a implementação do AOSP/Sony, e é por isso que o Samsung Themes pode enquadrar totalmente o tema, enquanto As sobreposições de substrato não podem tocar um alvo mediador que não existe “fwk” - como todos sabemos, a estrutura é apenas um pacote “android” nome.

Parecia estranho que [projekt.] fosse capaz de trabalhar junto com a implementação de RRO da Samsung com relativa facilidade. Qualquer pessoa que já trabalhou em dispositivos Samsung pode atestar como a Samsung costuma dificultar as coisas. Perguntamos por qualquer bloco específico que a equipe encontrou durante a portabilidade:

Na verdade, existe algum tipo de mecanismo de segurança que afetou alguns usuários - onde as sobreposições são revertidas na inicialização. Isso se deve à forma como a Samsung inicializa seu dispositivo. Como estamos quase todos no 7.0 no TouchWiz/Samsung Experience, usamos um novo método de “Otimização de aplicativos” (você pode ver isso quando atualiza seu telefone, ele mostrará uma notificação com o ícone do Android Nougat, informando que ele está atualizando em segundo plano), então essa forma de otimizar aplicativos também descarrega o alvo pacotes, interrompendo o processo de mapeamento de id na inicialização (devido ao pacote de destino não existir) e, portanto, algumas pessoas experimentam descarregamentos de sobreposição após um reinício.

Você também pode ver isso acontecendo com alguns temas Samsung, especialmente o tema Dark/Black do @envy~ - ele torna a cor padrão da barra de navegação em Exibir -> Barra de navegação para preto, onde a cor padrão real é branco. Depois de configurá-lo para preto, você poderá abrir o teclado e a barra de navegação permanecerá preta. Isso também será revertido aleatoriamente na reinicialização em muitos dispositivos.

Com o tema recuperando seu destaque, quais são os planos do Substratum para os ramos laterais como o Sungstratum?

No futuro, fundiremos um pequeno aplicativo em nosso complemento para nossos usuários atuais, para que eles ser capaz de interromper o Samsung Theme Service se todos os temas instalados em seus dispositivos forem instalados a partir de XDA. Assim, as pessoas que usarão temas formatados com tema Samsung do XDA poderão usar o complemento para evitar O serviço da Samsung reverte-o para o tema padrão após cada reinicialização (porque não foi instalado na loja Samsung oficialmente). Será necessária uma chave de desenvolvedor Samsung gratuita disponível para ser obtida em seu site, mas será pré-empacotada com o download do complemento sungstratum.


Com as mudanças recentes e futuras no AOSP e no Android O, parece que o sistema operacional do Google, que já foi incipiente, terá ainda mais personalização sendo transmitida ao usuário. Certos OEMs estão até planejando se livrar de suas interfaces de usuário personalizadas e complementos de UX em favor do AOSP, e outros como a Samsung chegam perto o suficiente com suas próprias soluções de temas. Prevemos um futuro onde os temas desempenhem um papel importante na experiência do usuário de ainda mais pessoas - um sistema operacional onde você realmente controla a aparência do seu dispositivo, onde a estética da interface do usuário é personalizada por você para você. E não seríamos capazes de alcançar esse futuro sem o poder coletivo desta comunidade incrível e de projetos como o Substratum.


Confira Integração de substrato para Samsung Nougat em nossos fóruns de substrato!Substrato no GitHub