A estrutura oficial do Xposed para Android Nougat está aqui

Após uma longa espera, o desenvolvedor do Xposed Framework anunciou oficialmente que o projeto agora suporta Android Nougat. Instale módulos Xposed agora!

À medida que o ecossistema Android amadureceu ao longo dos anos, cada vez menos usuários encontram motivos pelos quais deveriam fazer root em seus dispositivos. Há uma tendência crescente de usuários optarem por permanecer no firmware padrão, seja porque acham a experiência satisfatória ou não querem jogar. jogo de gato e rato com a API SafetyNet do Google. Mas se você perguntasse a um usuário no início de 2016 por que ele fez root em seus telefones, talvez o principal motivo dado tenha sido para que ele pudesse instale o Xposed Framework. Tem sido mais de um ano desde o Android 7.0 Nougat foi lançado pela primeira vez, mas a longa espera finalmente acabou: O Xposed Framework oficial para Android Nougat está finalmente disponível.

Ao longo do ano passado, XDA Senior Recognized Developer rovo89, o principal desenvolvedor do Xposed Framework, forneceu

diversosatualizações sobre o progresso do Xposed Framework para Android Nougat. Para alguns, o esperar foi tolerável principalmente devido ao grande número de funcionalidades adicionais que o Xposed Framework oferece em Android Marshmallow. Mas muitos outros passaram a viver sem o Xposed em seus dispositivos.

Vimos um vislumbre de entusiasmo renovado 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 você esperar pelo Xposed Framework oficial O lançamento como a implementação do Abforce exigiu que a estrutura fosse integrada em ROMs personalizados. Além disso, esta implementação não oficial estava incompleta, levando a um comportamento inconsistente ou com bugs com certos Xposed Módulos.

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

Não precisamos mais nos preocupar com questões como rovo89 (depois de alguma ajuda do XDA Recognized Developer quero) agora está pronto para lançar uma atualização oficial para o Xposed Framework e Installer – trazendo compatibilidade com Android 7.0/7.1 Nougat. Isso significa que você não precisará instalar uma ROM personalizada ou mexer em versões instáveis ​​para atualizar. aproveite o Xposed - basta fazer root no seu telefone e instalar o aplicativo Xposed Installer mais recente (link abaixo) e o O Xposed Installer fará a mágica de instalar o Xposed para você.

Instalador Xposed navegando no repositório do módulo

Isso pode parecer um pouco tarde para algumas mentes, especialmente porque este lançamento chega mais de um mês após o lançamento do Android 8.0 Oreo. Tenha em mente que poucos dispositivos terão acesso a uma versão estável do Android Oreo por muitos meses. O Android Oreo é apenas em 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 personalizados para se manterem atualizados.

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

Embora mesmo se você instalar um porta não oficial do Android 8.0 disponíveis em uma infinidade de dispositivos em nossos fóruns, muitas dessas portas não têm status diário de driver. Então, a menos que você esteja disposto a desembolsar centenas de dólares por um novo Google Pixel 2/2XL, Sony Xperia XZ1/XZ1 Compactoou um dispositivo futuro, como o Huawei Companheiro 10, provavelmente você conseguirá aproveitar vários meses de uso do Xposed Framework no Android Nougat.

Se isso soa como você, vá para o tópico do fórum oficial do Xposed Installer e dos zips da estrutura para colocá-lo em funcionamento no seu dispositivo Android Nougat.

Baixe o instalador Xposed v3.1.2 (anexo)

Instalador Xposed para Nougat 7.0 (SDK24) Baixar

Instalador Xposed para Nougat 7.1 (SDK25) Baixar

Para os muitos usuários mais novos que não estão tão familiarizados com a finalidade do Xposed Framework ou como ele funciona, nós explicará brevemente o Xposed Framework abaixo, por que você deveria estar animado e por que o desenvolvimento dele demorou tanto fez.


Por que instalar o Xposed Framework?

Quer obter recursos de ROM personalizados sem atualizar uma ROM personalizada? A mãe de todos os módulos Xposed para ajustar sua ROM, conhecida como Caixa Gravitacional, você está coberto. Quer personalizar as configurações de exibição por aplicativo? Tentar Configurações do aplicativo. Que tal personalizar certos aplicativos como Hangouts? Ou modificando o Instagram para que você possa baixe as postagens que você gosta?

O Xposed oferece aos desenvolvedores a capacidade de modificar praticamente tudo o que quiserem— principalmente voltado para aplicativos individuais, mas até mesmo os recursos de todo o 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 módulo Xposed para ver por si mesmo. Lembre-se de que alguns módulos podem precisar ser atualizados para esta nova versão e para suporte ao Nougat, portanto, verifique antes de instalá-los em sua ROM do Nougat!

Como funcionam os módulos Xposed?

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

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

O que foi dito 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ê-lo funcionar quase universalmente em dispositivos com acesso root – sem a necessidade de uma ROM personalizada – é o motivo pelo qual o Xposed para Android Nougat demorou tanto para ser concluído.

Por que o desenvolvimento do Xposed demora tanto?

A magia por trás do Xposed - o que permite que os Módulos se conectem a métodos de outros aplicativos - requer um conhecimento profundo de como o Zygote e o Tempo de execução do Android (ARTE) funciona. Estes requisitos já impedem que um grande número de pessoas contribuam para o projecto, mas o problema é agravado pelo facto de a rovo89 tem sido o principal contribuidor do Xposed nos últimos 5 anos.

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

Além disso, se rovo89 atualizasse continuamente sua fonte, ele estava preocupado que alguém pegaria o código inacabado para construir um Xposed Framework semifuncional sem o instalador Xposed universal para acompanhá-lo. (Exatamente isso aconteceu de qualquer maneira com a implementação do abforce, e a confusão resultante de vários métodos de instalação justificou a hesitação do rovo89.)

Portanto, a melhor coisa que podíamos fazer era dar tempo ao rovo89 para trabalhar em seu projeto favorito. Xposed não é seu trabalho completo ou mesmo de meio período. É simplesmente um hobby que ele pratica em benefício da comunidade há 5 anos. Um projeto tão complexo como o Xposed requer tempo para trabalhar e depois testar – tempo que ele muitas vezes não tinha devido às suas outras obrigações. Progresso era 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 lançamento.

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

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

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

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

Para obter mais detalhes sobre o que rovo89 fez para finalmente alcançar 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 código antes, depois ou em vez 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 inventei o Xposed, há cinco anos, requer uma mudança no 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 otimizações no ART.

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

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

Você ainda pode conectar o método duas vezes(), mas ele não será mais chamado de doSomething() em tempo de execução, assim como seu retorno de chamada. A ART é ainda mais inteligente: ela percebe que a magia tem sempre 42 anos e, portanto, a condição nunca pode ser cumprida. Portanto, todo o método doSomething() é na verdade autônomo:

Nas versões anteriores, o Xposed desabilitava completamente essas otimizações e forçava a recompilação de tudo. Isso trouxe várias desvantagens. Em primeiro lugar, os desenvolvedores do ART estão fazendo um trabalho fantástico ao maximizar o desempenho com seus otimizações, e desativá-las parcialmente leva necessariamente a menos desempenho (nunca medi o quanto no entanto). Depois, a recompilação em si nem sempre é fácil e me causou muita dor 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 desabilitam essas otimizações, mas não forçam a recompilação (pois o port foi originalmente feito para ser integrado à ROM). Portanto, os ganchos podem não ser executados às 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 uma passagem separada para código pré-otimizado. Esses dados adicionais não ocupam muito espaço, mas permitem que o Xposed descubra onde um determinado método pode ter sido incorporado. Portanto, quando um método é viciado, todos os seus chamadores serão desotimizados, ou seja, seu código não será mais usado. Isso garante que o retorno de chamada do gancho será definitivamente chamado. E se o chamador for muito utilizado, ele será simplesmente recompilado com JIT, desta vez sabendo que o método está viciado e, portanto, algumas das otimizações não se aplicam. Isto significa que os efeitos dos métodos de captura 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 suportar a criptografia baseada em arquivo.

consulte Mais informação

Conclusão

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

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

Doe para rovo89

Contribua para o Xposed

Procurando Módulos Xposed? Confira nosso subfórum Xposed Framework Module ou baixe o aplicativo XDA Labs e navegue em nossa coleção de módulos Xposed.

Fórum de Módulos Xposed

Baixar Laboratórios XDA

Progresso do Android Oreo

Caso você esteja se perguntando, veja como está o progresso na obtenção do Xposed para Android Oreo:

Já comecei a trabalhar no Android 8.0. Existem alguns novos recursos de idioma que terei que analisar, mas o conceito geral ainda deve funcionar. Isso inclui todo o trabalho de invalidar o código compilado de qualquer chamador quando um método é viciado, o que demorou muito quando trabalhei no Nougat. Então, estou realmente confiante de que serei muito mais rápido desta vez. Android 8.1não deve ser muito diferente, então não espero muito trabalho adicional para isso.