A estrutura oficial do Xposed para Android Nougat chegou - faça o download dos seus módulos favoritos agora!

À medida que o ecossistema Android amadurece ao longo dos anos, cada vez menos usuários encontram razões pelas quais devem fazer root no dispositivo. Há uma tendência crescente de os usuários optarem por permanecer no firmware padrão, porque acham a experiência satisfatória ou não querem jogar um jogo de gato e rato com a API SafetyNet do Google. Mas se você perguntou a um usuário no início de 2016 por que ele enraizou seus telefones, talvez o motivo número um tenha sido dado para que eles pudessem instalar o Xposed Framework. Faz mais de um ano que o Android 7.0 Nougat foi lançado, mas a longa espera finalmente acabou: o Xposed Framework oficial para Android Nougat está finalmente disponível.

Durante o ano passado, o desenvolvedor reconhecido sênior rovo89, o desenvolvedor líder do Xposed Framework, forneceu várias atualizações sobre o progresso do Xposed Framework para Android Nougat. Para alguns, a espera foi tolerável principalmente devido ao grande número de funcionalidades adicionais que o Xposed Framework oferece no Android Marshmallow. Mas muitos outros passaram a ter uma vida sem o Xposed em seus dispositivos.

Vimos um vislumbre de renovada empolgação no projeto quando o desenvolvedor abforce lançou um submódulo ART para AOSP 7.1.2, mas como nosso próprio GermainZ aponta, era melhor esperar o lançamento oficial do Xposed Framework, pois a implementação do abforce exigia que a estrutura fosse integrado em ROMs personalizadas. Além disso, essa implementação não oficial foi incompleta, levando a um comportamento inconsistente ou com erros em determinados módulos Xposed.

Embora a Abforce tenha feito um ótimo trabalho ao fazer com que seu Xposed não oficial funcionasse no Android 7.1 Nougat, sua implementação foi contra a visão da rovo89 para o Xposed - que ela deveria ser uma solução estável, fornecendo um contrato confiável e fácil de usar para usuários e desenvolvedores. O que queremos dizer com isso é que não apenas os módulos devem funcionar sem problemas para os usuários, mas a maneira como os módulos são configurados deve ser consistente entre os usuários, para que os desenvolvedores saibam se um Módulo Xposed é ou não culpado por uma falha no aplicativo.

Não precisamos mais nos preocupar com problemas como o rovo89 (depois de alguma ajuda do Recognized Developer wanam) agora está pronto para lançar uma atualização oficial para o Xposed Framework and Installer - trazendo compatibilidade com o Android 7.0 / 7.1 Nougat . Isso significa que você não precisará instalar uma ROM personalizada ou precisará mexer nas versões instáveis ​​piscantes para aproveitar o Xposed - faça o root no telefone e instale o aplicativo mais recente do Xposed Installer (link abaixo) e o Xposed Installer fará a mágica de instalar o Xposed para você

Xposed Installer Navegando no repositório do módulo

Isso pode parecer um pouco tarde em algumas mentes, especialmente porque esse lançamento ocorre mais de um mês após o lançamento do Android 8.0 Oreo. Lembre-se de que pouquíssimos dispositivos terão acesso a uma versão estável do Android Oreo por muitos meses. O Android Oreo está presente em apenas 0, 2% de todos os dispositivos Android (em comparação com ~ 18% no Nougat), de acordo com as estatísticas mais recentes do Google, mas muitos de nossos usuários são do tipo que adoram instalar ROMs personalizadas para se manter no limite.

Distribuição da versão para Android em outubro de 2017. Fonte: Google

Embora, mesmo que você instale uma porta não oficial do Android 8.0 disponível em vários dispositivos em nossos fóruns, muitas dessas portas não têm status diário de driver. Portanto, a menos que você esteja disposto a desembolsar centenas de dólares para um novo Google Pixel 2/2 XL, Sony Xperia XZ1 / XZ1 Compact ou um dispositivo futuro como o Huawei Mate 10, provavelmente poderá espremer vários meses de uso do Xposed Framework no Android Nougat.

Se isso soa como você, vá para o tópico oficial do fórum do Xposed Installer e o zip da estrutura para instalá-lo e funcionar no seu dispositivo Android Nougat.

Download do Xposed Installer v3.1.2 (Anexo)

Xposed Installer para Nougat 7.0 (SDK24) Baixar

Xposed Installer para Nougat 7.1 (SDK25) Baixar

Para os muitos usuários mais novos que não estão tão familiarizados com o que o Xposed Framework pode ser usado ou como ele funciona, explicaremos brevemente o Xposed Framework abaixo, por que você deve estar empolgado e por que o desenvolvimento disso demorou tanto tempo .


Por que instalar o Xposed Framework?

Deseja obter recursos de ROM personalizados sem exibir uma ROM personalizada? A mãe de todos os módulos Xposed para ajustar sua ROM, conhecida como GravityBox, tem tudo a ver. Deseja personalizar as configurações de exibição por aplicativo? Experimente as configurações do aplicativo. Que tal personalizar certos aplicativos como o Hangouts? Ou modificando o Instagram para poder baixar as postagens que você gosta?

Controle de notificação GravityBox

Configurações do aplicativo

O Xposed oferece aos desenvolvedores a capacidade de modificar praticamente o que quiserem - principalmente para aplicativos individuais, mas mesmo os recursos do sistema podem ser modificados. Os exemplos que listamos são apenas a ponta do iceberg. O número de recursos adicionais que você pode adicionar ou aplicativos que você pode modificar é incrível - basta pesquisar no repositório oficial do Xposed Module para ver por si mesmo. Lembre-se de que alguns módulos podem precisar ser atualizados para esta nova versão e para o suporte ao Nougat, portanto, verifique antes de instalá-los na ROM do Nougat!

Como os módulos Xposed funcionam?

A essência disso é que o Xposed Framework permite que os módulos “se conectem ” aos métodos Java de qualquer aplicativo - seja ele instalado pelo usuário ou um aplicativo do sistema. O Xposed permite que os módulos executem seus próprios métodos antes, durante ou no lugar dos métodos originais do aplicativo de destino.

Por exemplo, imagine um método usado no aplicativo Gmail que publique notificações para novos emails. Por padrão, o método cria uma nova notificação com botões para arquivar / excluir ou responder ao email. Um módulo Xposed pode ser criado para se conectar a esse método e adicionar um novo botão como "marcar como lido". (Sim, já existe um módulo para isso).

O acima é uma simplificação excessiva do resultado final do que o Xposed Framework permite que seus módulos façam. O Framework em si é incrivelmente complexo e faz com que ele funcione quase universalmente em dispositivos raiz - sem a necessidade de uma ROM personalizada - é por isso que o Xposed for Android Nougat demorou tanto para ser concluído.

Por que o desenvolvimento do Xposed leva tanto tempo?

A mágica por trás do Xposed - o que permite que os módulos se conectem a métodos de outros aplicativos - exige um profundo conhecimento de como o Zygote e o Android Runtime (ART) funcionam. Esses requisitos já impedem um grande número de pessoas de contribuir para o projeto, mas o problema é exacerbado pelo fato de o rovo89 ter sido o principal colaborador do Xposed nos últimos 5 anos .

É por isso que os pedidos de código aberto que suas modificações feitas no Xposed foram negadas desde o último lançamento público do Xposed foram negados. É uma ideia dele, e ele é o melhor para entendê-lo e modificá-lo, portanto, adicionar mais mão-de-obra ao projeto em um estágio tão tardio poderia simplesmente atrasar ainda mais o projeto.

Além disso, se rovo89 atualizasse continuamente sua fonte, ele estava preocupado que alguém usasse o código inacabado para criar um Xposed Framework semi-funcional sem o instalador universal Xposed para acompanhá-lo. (Isso aconteceu de qualquer maneira com a implementação acima, e a bagunça resultante de vários métodos de instalação justificou a hesitação de rovo89.)

Assim, a melhor coisa que poderíamos fazer era dar tempo ao rovo89 para trabalhar em seu projeto de estimação. Xposed não é o seu emprego completo, nem mesmo a tempo parcial. É simplesmente um hobby, que ele faz para o benefício da comunidade há 5 anos. Um projeto tão complexo quanto o Xposed requer tempo para trabalhar e depois testar - tempo que ele não costumava ter devido a outras obrigações. O progresso estava sendo feito no ano passado, assim como rovo89 documentou em algumas de suas atualizações públicas sobre o assunto até que finalmente o próprio Xposed Framework e o Xposed Installer estão prontos para o lançamento.

O que rovo89 fez para que o Xposed funcionasse no Nougat?

Às vezes, novos lançamentos do Android trazem mudanças na maneira como o ART funciona, o que pode exigir que partes do Xposed sejam reformuladas. O Android 7.0 Nougat introduziu um compilador Just-in-Time para ART para ajudar a melhorar o desempenho de aplicativos em tempo de execução, por exemplo. Mas o Xposed Framework não oficial da Abforce simplesmente desativa muitas otimizações de ART, para que a conexão do método possa funcionar corretamente.

Otimizações de ART no Android Nougat. Fonte: Google

Por outro lado, a implementação do rovo89 mantém todas as otimizações de ART no Android Nougat, recompilando o chamador de um método usando JIT e ainda mantendo os ganchos do método no lugar. Isso significa que você pode aproveitar os benefícios de um módulo Xposed sem sacrificar o desempenho, desativando com força as otimizações de ART.

Para mais detalhes sobre o que o rovo89 fez para finalmente obter um método de conexão confiável no Xposed para Android Nougat, recomendamos que você leia a declaração abaixo que ele nos forneceu.

Declaração completa de rovo89

O núcleo do Xposed é obviamente sua capacidade de conectar métodos Java, ou seja, permitir que os módulos executem o código antes, depois ou ao invés desses métodos. Praticamente todas as outras funcionalidades são baseadas nisso, por isso é fundamental que esteja sempre funcionando conforme o esperado. O conceito geral é o mesmo desde que eu inventei o Xposed, há cinco anos, requer a alteração do ponto de entrada do método. Isso começa a falhar quando o ponto de entrada não é verificado durante a execução - o que é realmente o caso de algumas das otimizações no ART.

Um exemplo é quando o ponto de entrada já é conhecido no momento da compilação, então os chamadores podem pular diretamente para esse endereço sem procurá-lo. Outro exemplo é inlining. Considere este exemplo:

A ART é inteligente o suficiente para perceber que o método two () é muito simples e, portanto, incorpora a lógica diretamente ao método doSomething (), assim:

Você ainda pode conectar o método two (), mas ele não será mais chamado do doSomething () em tempo de execução, assim como o retorno de chamada. A arte é ainda mais inteligente: ela percebe que a magia sempre é 42 e, portanto, a condição nunca pode ser cumprida. Portanto, todo o método doSomething () é na verdade um não-op:

Nas versões anteriores, o Xposed costumava desativar completamente essas otimizações e recompilar forçado tudo. Isso veio com várias desvantagens. Antes de tudo, os desenvolvedores do ART estão fazendo um trabalho fantástico ao maximizar o desempenho com suas otimizações, e desativá-las em parte necessariamente leva a menos desempenho (eu nunca medi o quanto). Então, a recompilação em si nem sempre é fácil e me causou muitas dores de cabeça, principalmente no começo. Por fim, os arquivos recompilados ocupam espaço, além dos arquivos pré-compilados em / system.

As versões não oficiais do Nougat também desativam essas otimizações, mas não forçam a recompilação (porque a porta foi originalmente criada para ser integrada à ROM). Portanto, os ganchos podem não ser executados algumas vezes.

Com a versão oficial, você manterá o código otimizado e ainda terá ganchos confiáveis. Como isso funciona? Bem, o Xposed registra todas as chamadas feitas. Isso acontece enquanto os APKs estão sendo compilados ou em um passe separado para código pré-otimizado. Esses dados adicionais não ocupam muito espaço, mas permitem ao Xposed descobrir onde um determinado método pode ter sido incorporado. Portanto, quando um método é fisgado, todos os chamadores serão desoptimizados, ou seja, seu código não será mais usado. Isso garante que o retorno de chamada do gancho seja definitivamente chamado. E se o chamador for muito usado, ele será simplesmente recompilado com o JIT, desta vez com o conhecimento de que o método está conectado e, portanto, algumas das otimizações não se aplicam. Isso significa que os efeitos dos métodos de conexão são reduzidos ao mínimo. Yay!

Agora vá em frente e experimente. Certifique-se de usar o Xposed Installer 3.1.2, pois o caminho de configuração teve que ser alterado para oferecer suporte à criptografia baseada em arquivo.

Conclusão

Esperamos que você esteja tão empolgado quanto o lançamento do Xposed para Android 7.X Nougat. A espera foi longa, mas inevitável, dada a pura complexidade do Xposed. Se você ainda está confuso sobre o que é Xposed ou como ele funciona, não se preocupe. Muito poucas pessoas (inclusive nós) realmente entendem como isso funciona. Desenvolvedores como o rovo89 fazem o melhor possível para empacotar seu trabalho, para que você realmente não precise entender o que está acontecendo por baixo do capô.

Você gosta do Xposed Framework? Considere fazer uma doação para rovo89 pelo excelente trabalho que ele faz. Se você acha que tem o que é necessário para contribuir com o projeto, consulte a página GitHub do rovo89 abaixo.

Doar para rovo89

Contribua com o Xposed

Procurando por Módulos Xposed? Confira nosso subforum Xposed Framework Module ou faça o download do aplicativo Labs e navegue em nossa coleção de Xposed Modules.

Fórum de Xposed Modules

Download Labs

Android Oreo Progress

Caso você esteja se perguntando, veja como estão os progressos do Xposed para Android Oreo:

Eu já comecei a trabalhar no Android 8.0. Existem alguns novos recursos de linguagem que precisarei examinar, mas o conceito geral ainda deve funcionar. Isso inclui todo o trabalho de invalidação de código compilado de qualquer chamador quando um método é conectado, o que levou muito tempo quando trabalhei no Nougat. Então, eu estou realmente confiante de que serei muito mais rápido desta vez. O Android 8.1 não deve ser muito diferente, por isso não espero muito trabalho adicional.