Neste artigo, exploramos as diferenças entre o próximo lançamento do Xposed for Nougat do rovo89 e a implementação atual que está disponível para o Nougat.
A estrutura Xposed foi - e ainda é - uma forma importante de personalizar seu dispositivo Android, compatível com praticamente todos os dispositivos, permitindo instalar facilmente módulos para ajustar praticamente qualquer detalhe.
Quer obter todos os recursos que uma ROM personalizada oferece sem precisar atualizar uma?Caixa Gravitacional ouXTouchwiz farei isso. Quer ajustar certas configurações por aplicativo, como alterar o DPI de um aplicativo específico?Configurações do aplicativo você tem coberto. Gostaria que os desenvolvedores de um aplicativo pensassem em adicionar um recurso específico, como o Google, permitindo que vocêpersonalizar Hangouts ou Facebook permitindo que vocêbaixe postagens do Instagram que você gosta? Bem, você não precisa porque o Xposed dá aos desenvolvedores o poder de modificar praticamente qualquer coisa que eles deseja, seja um recurso de todo o sistema que exigiria uma ROM personalizada ou um ajuste para um específico aplicativo.
A estrutura Xposed vem com uma grande vantagem para os desenvolvedores, que é a facilidade de desenvolvimento (em comparação com a necessidade de compilar o AOSP para ajustes de ROM ou a necessidade de editar o código Smali). Também traz uma enorme vantagem para os usuários: conveniência, já que não os força mais a encontrar e atualizar a ROM que fornece todos os recursos que procuram (em vez disso, eles podem misturar e combinar módulos independentes) além de seu equilíbrio alvo de estabilidade e desempenho. Também faz ajustando aplicativos muito mais fácil, pois não há necessidade de lidar com assinaturas diferentes, o que exigiria que os usuários desinstalassem o original versão ou passar por certos obstáculos quando o aplicativo verifica sua assinatura (algo com o qual os clientes modificados do YouTube lidam, por instância).
O único problema? Devido à sua natureza e à quantidade de tempo livre, o desenvolvedor do Xposed (nosso desenvolvedor sênior reconhecido,rovo89) tem, muitas vezes fica atrás dos lançamentos do Android.Demorou cerca de quatro meses para ser atualizado para oferecer suporte ao Lollipop, e está demorando cerca de um ano para chegar a Nougat. Isso não é tão ruim quanto pode parecer se você pensar quantos usuários do Android estão realmente no Nougat (cerca de 13,5%, embora tenha em mente que os entusiastas do Android, público-alvo do Xposed, também têm maior probabilidade de usar o Nougat). No entanto, ainda pode ser muito chato não poder usar seus módulos Xposed favoritos e ter a melhor e mais recente versão do Android ao mesmo tempo.
Com o código-fonte da estrutura Xposed disponível (pelo menos para versões estáveis e lançadas), o desenvolvedorforçar decidiu sujar as mãos e ver se conseguia portar algumas das modificações do rovo89 para o Nougat. Optando por uma abordagem diferente e mais simples, a abforce adaptou essencialmente a parte do Xposed que realmente faz a mágica depois de instalado e tornou possível incluí-lo ao compilar sua própria ROM (depois disso, outras soluções alternativas surgiram). Esta abordagem é sem dúvida muito diferente pois ignora uma das principais vantagens do Xposed, que está disponível para todos com facilidade. No entanto, todo progresso é bem-vindo e múltiplas cabeças lidando com uma tarefa podem ser vantajosas e oferecer novos insights. A questão principal, a nosso ver, é a desinformação em torno deste desenvolvimento (espalhada por alguns outros “desenvolvedores” e alguns blogs), bem como algumas das reações da comunidade. Esperançosamente, este artigo tornará todo o quadro mais claro.
Em primeiro lugar, para entender o trabalho que foi - e ainda continua - na estrutura oficial do Xposed, bem como na versão do abforce, precisamos ver como a estrutura funciona. Embora o quadro em si seja apenas parte do projeto, geralmente nos referimos à estrutura e ao instalador já que a estrutura perde muitas de suas vantagens sem o instalador universal, que também exige muito trabalho.
O poder do Xposed vem de um conceito simples: qualquer método pode ser "fisgado" (os métodos são os pequenos partes que compõem qualquer programa) para que o código de um módulo Xposed seja executado antes, depois ou em vez de isto. Vejamos um exemplo simples: suponha que o Instagram use um método chamado “showMenuOptions” quando você clica no botão de menu, e esse método mostra os botões “Reportar” e “Compartilhar”. Ao criar um módulo Xposed, você pode modificar esse método para adicionar um botão adicional para baixar a imagem em vez de compartilhá-la, por exemplo. As modificações podem variar de ajustes simples (por ex. Registro de alterações da Play Store) até grandes revisões (como Caixa Gravitacional, que visa fornecer todos os recursos que uma ROM personalizada teria)!
Isso torna o Xposed poderoso, mas é apenas parte da equação. As outras partes são versatilidade - ou a capacidade de usar o Xposed em praticamente qualquer dispositivo (com uma versão Android compatível) e facilidade de uso. Tudo o que os usuários precisam fazer é pegar o instalador, que faz sua mágica e corrige seu sistema dinamicamente para integrar o Xposed. Para aplicar um módulo, basta instalá-lo, habilitá-lo e reinicializar. Sem complicações, sem necessidade de atualizar uma ROM personalizada (especialmente quando ROMs personalizadas nem sempre são uma escolha viável), sem necessidade de desinstalar um APK para instalar outro assinado com uma assinatura diferente. Tudo que você precisa é root (você pode ter uma ROM personalizada e isso faz sentido na maioria das vezes; mas embora o Xposed possa fornecer a maior parte da funcionalidade que uma ROM personalizada pode fornecer, ele também vai além disso).
Porém, por trás dessa simplicidade há muito trabalho:
- Para desenvolvedores de módulos, a API fornecida deve ser estável e ter garantia de funcionamento. A estrutura Xposed não pode falhar aleatoriamente com certas combinações de ROM e/ou ganchos (exceto em casos excepcionais). Em outras palavras, se um usuário está tendo um problema, esse problema deve ser culpa do usuário (por não instalar/habilitar algo corretamente) ou culpa do desenvolvedor do módulo (por ter bugs no módulo). Mas deve haver quase certeza de que a estrutura em si está funcionando conforme o esperado e não é a fonte dos erros que deixariam os usuários frustrados e os desenvolvedores confusos.
- Para os usuários, a estrutura deve ser fácil de instalar em seus dispositivos e ROM, não importa se eles têm um Samsung executando a versão mais recente do TouchWiz ou um Nexus com LineageOS instalado. O instalador do Xposed cuida de tudo isso nos bastidores. Muito trabalho deve ser feito para testar o instalador e a estrutura em uma variedade de dispositivos e combinações de ROM. Erros são encontrados, muitas vezes devido a diferentes implementações por parte dos OEMs, e devem ser corrigidos para garantir confiabilidade para todos os usuários.
- Às vezes, as principais revisões do Android podem trazer grandes mudanças, o que exige repensar partes da arquitetura da estrutura para se adaptar a essas mudanças. Às vezes, oportunidades adicionais também surgem com versões mais recentes, exigindo algum tempo extra para ter um produto melhor. Quando o ART foi introduzido pela primeira vez, por exemplo, o Xposed desativou certas otimizações para que o gancho pudesse funcionar corretamente. No caso de Nougat, ocompilador just-in-time (JIT) traz uma oportunidade paramantenha essas otimizações.
Muito do trabalho acima entra em pequenos detalhes, onde a maior parte da estrutura está funcionando conforme planejado, mas o inconsistências e pequenos problemas tornariam seu uso uma aposta para os usuários e um pesadelo de suporte e desenvolvimento para módulos desenvolvedores. O produto lançado, porém, pretende ser utilizável por todos e sem surpresas. Há algumas exceções, é claro, já que as mudanças de alguns OEMs exigem mais esforço para adaptação, mas essas são menores e a grande maioria dos usuários (e desenvolvedores) pode desfrutar de um Xposed estável e confiável experiência. Quaisquer exceções encontradas são documentadas comisenções de responsabilidade claras para que ninguém fique surpreso.
Com o acima exposto em mente, a visão da rovo89 para o Xposed é ser uma solução estável que forneça um contrato confiável e fácil de usar para usuários e desenvolvedores. Sua filosofia, embora você possa discordar dela, é simples e compreensível: um produto deve ser liberado quando estiver pronto para ser usado conforme pretendido, pois liberá-lo antes leva a mais problemas do que benefícios.
Submódulo Xposed ART da abforce para Nougat
Relutamos em chamar o trabalho da abforce de “port” ou “Xposed não oficial”, pois isso é impreciso e enganoso. Como vimos, o Xposed tem dois componentes principais:
- O núcleo da própria estrutura Xposed, que lida com a magia dos métodos de conexão.
- O instalador Xposed, que garante que a estrutura seja fácil de instalar corretamente em todos os dispositivos.
O que a abforce fez foi portar o código Marshmallow do rovo89 na primeira parte (apenas a estrutura Xposed) para o Nougat, de uma forma que exigiria que as alterações fossem feitas durante a compilação da ROM personalizada. Além disso, muitas partes menores (mas importantes) da estrutura não estão totalmente adaptadas ao Nougat. Como tal, o comportamento pode ser inconsistente e, embora funcione principalmente (embora nãoparatodos), não é confiável. Para desenvolvedores e usuários de módulos, confiar em uma implementação incompleta e inconsistente seria apenas fornecer uma experiência ruim para todas as partes envolvidas, com alguns módulos não funcionam ou fazem com que o dispositivo não inicialize. Embora muitos usuários possam concordar em ter algo em vez de nada, o ponto de vista dos desenvolvedores ainda é perfeitamente compreensível (especialmente se você tiver em mente que as isenções de responsabilidade não impedem falsas perguntas de suporte e reclamações).
(Além dos dois pontos principais acima, também esperamos mais alterações na estrutura oficial final do Xposed para aproveitar as alterações introduzidas no Nougat.)
Deve-se notar que a abforce fez um excelente trabalho quando a maioria se contentava em simplesmente falar, mas seu trabalho está longe de ser a experiência completa do Xposed e nenhum desenvolvedor ou blog afirma o contrário (e definitivamente não é forçado; novamente, não temos nada além de respeito por todos os desenvolvedores que estão investindo e se esforçando de verdade nisso). Na verdade, como abordaremos daqui a pouco, algumas respostas da comunidade (sejam usuários ou “desenvolvedores”) são a única parte amarga nesta cadeia de desenvolvimentos.
Vamos direto ao ponto: qualquer comunidade tem elementos e aspectos ruins. Com uma comunidade tão grande quanto a dos entusiastas do Android, os elementos ruins podem parecer uma grande parte quando são apenas uma pequena parte (considerável, mas ainda menor em termos relativos). Sem adoçar, porém, grande parte da resposta da comunidade ao desenvolvimento do Xposed for Nougat foi extremamente infantil, imprudente ou irresponsável.
O primeiro grande problema foi a atitude condescendente demonstrada por muitos sobre a “morte do Xposed” porque está demorando muito para ser lançado para o Nougat. Isto apesar do rovo89 atualizaçõesegarantias, e apesar do cenário exato que aconteceu com o Lollipop quando a versão inicial do ART foi introduzida. Não há problema em parar de usar o Xposed, mas não é para insultar a capacidade de ninguém ou atacar outras pessoas por terem uma filosofia diferente ou por não garantirem que suas necessidades de flash sejam atendidas imediatamente. Isto é ainda mais verdadeiro para um projeto totalmente gratuito, onde o desenvolvedor expressou sua metodologia de desenvolvimento e as razões por trás dele.
Outro problema com a resposta da comunidade tem sido a compreensão errada da natureza do trabalho do abforce, com muitos aclamando-o como o novo Xposed ou anunciando-o como uma porta para Nougat. Um grande problema com isso tem sido com os "desenvolvedores" correndo para oferecer versões flash sem entender (ou se preocupar com) as desvantagens, uma vez que nenhuma isenção de responsabilidade foi oferecido em alguns tópicos, com alguns chegando ao ponto de creditar abforce e não rovo89 (que está por trás da grande maioria do trabalho no Xposed) e outros contribuidores.
Como ponto final, sentimos que deveríamos trazer novamente à tona a filosofia de desenvolvimento do rovo89. Com muitos usuários vocais afirmando que seria benéfico ter as alterações mais recentes de código aberto. Embora isso pareça bom em teoria, énão é tão fácil na prática especialmente se considerarmos a explicação de rovo89:
[...] acredito que apenas forçar o estado atual não ajudaria o projeto. Talvez veríamos "algum" lançamento muito rápido por parte das pessoas que compilam o código, veríamos que parece ser funcionando bem e publicá-lo como "seu porto", apesar dos problemas e coisas para fazer que eles não estariam cientes de. Então me chame de egoísta, mas eu não gostaria de ver um lançamento tão incompleto.[Fonte]
O que na verdade provou ser uma previsão bastante boa da situação atual, com vários "desenvolvedores" aplicando alterações do abforce e oferecendo um ZIP flash com mínimo ou nenhum aviso, créditos incompletos, tudo isso enquanto pede doações.
Esperamos que essas explicações esclareçam algumas de suas dúvidas e abordem possíveis equívocos que você possa ter tido. Xposed tem sido um projeto incrível que alcançou uma grande parte de nossa comunidade entusiasta e flashaholic, e Xposed for Nougat deve ser outro marco gigantesco cheio de oportunidades. Com módulos como GravityBox já oferecendo suporte ao Nougat, o projeto finalizado do rovo89 retornará com uma série de opções.
Você está animado com o Xposed em sua ROM Nougat? Deixe-nos saber nos comentários!