Xposed For Lollipop agora disponível oficialmente

O Xposed Framework dispensa apresentações aos leitores do XDA. Quando questionados sobre as coisas que nossa comunidade odeia mais sobre Lollipop, o comentário mais votado na discussão foi que quebrou o apoio ao Xposed. Na verdade, muitos membros do fórum até se recusaram a atualizar para o Lollipop especificamente por esse motivo. Mas tudo isso muda agora, quando o tão aguardado Xposed Framework finalmente chegou para Android Lollipop.

Se você ainda não está familiarizado com o Xposed, simplesmente é uma dádiva de Deus para a comunidade modding. O Xposed não requer atualização de nenhuma ROM, mas traz toneladas de personalização e ajustes que os usuários podem instalar como aplicativos em dispositivos com acesso root. É incrivelmente simples de usar e com risco limitado. E agora, todos os entusiastas do Android no Lollipop podem aproveitar os benefícios deste fantástico projeto em seus dispositivos. Faça o download e comece a modificar!

rovo89 também teve a gentileza de nos fornecer perguntas e respostas sobre o projeto mais recente. Você pode encontrar respostas para todas as suas perguntas sobre o projeto abaixo.

Por que demorou tanto? ART foi publicado há mais de um ano!

Em primeiro lugar – muitas pessoas continuam a pedir apoio ao TARV. O Lollipop tem muito mais mudanças do que isso, como políticas SELinux ainda mais rígidas, ROMs de 64 bits e mudanças de arquitetura que você esperaria de um lançamento principal. E é claro que a própria ART está em constante aperfeiçoamento; existem grandes diferenças entre ART for KitKat e ART for Lollipop.

Portanto, um dos motivos é a grande complexidade, que exigiu muitas e muitas horas de trabalho para pesquisa, desenvolvimento e testes.

Outra razão é que há outras coisas na minha vida além do Xposed, então houve semanas ou até meses em que quase não olhei o código.

Precisamos reescrever todos os módulos?

Não, a API Xposed permanece praticamente inalterada. O Xposed abstrai todos os detalhes, então os módulos não precisam se preocupar se estão rodando em Dalvik ou ART. Muitos módulos funcionarão sem nenhuma alteração, especialmente aqueles que modificam o comportamento dos aplicativos do usuário. Os módulos direcionados ao comportamento do sistema podem precisar ser ajustados ao novo código da estrutura Android, que não é causado pelo ART, mas simplesmente pelas mudanças de arquitetura e código que acontecem entre quaisquer dois Android lançamentos. O mais significativo é que o código dos serviços do sistema foi movido para um arquivo separado. Para a maioria dos módulos afetados, isso pode ser resolvido com uma pequena refatoração (mover o código para um local diferente).

Está realmente funcionando?

Sim! Pelo menos para mim, está funcionando bem no meu dispositivo diário (Nexus 5 no CM12) e também no meu Nexus 9 (pago pelo XDA – obrigado!). O telefone está estável como sempre e os aplicativos estão funcionando bem. E, obviamente, os módulos e seus ganchos/substituições de recursos também estão funcionando bem, caso contrário, não faria sentido lançar algo.

Mas então por que é uma versão alfa?

Porque houve grandes mudanças desde a última versão estável que precisam ser testadas por pessoas que sabem como usar uma recuperação, escapar de loops de inicialização e reportar bugs adequadamente. Aconselho fortemente os novatos a esperar até que o Xposed seja testado por pessoas experientes o suficiente.

Existem também alguns casos extremos que ainda não foram testados, como conectar métodos JNI (nativos) e métodos que estão sendo executados no momento de conectá-los.

Eu quero instalá-lo. Agora! O que eu tenho que fazer?

Certifique-se de ler minhas palavras acima e de estar familiarizado com o interior do seu telefone. Obviamente, você precisa estar em uma ROM Lollipop e ter um bom backup de seus dados. Por enquanto, publicarei apenas a versão ARMv7. 64 bits é mais complexo, então vamos tentar primeiro a variante “fácil”.

Por enquanto, a instalação deve ser realizada manualmente em uma recuperação personalizada. Atualizar o arquivo zip instalará:

  • app_process32_xposed e alguns links simbólicos
  • libexposed_art.so
  • libart.so e alguns binários + bibliotecas relacionados (baseados em 5.0.2, aprimorados com suporte para hooking, etc.)
  • XposedBridge.jar (agora armazenado em /system/framework)

Os backups dos arquivos existentes serão criados automaticamente e poderão ser restaurados posteriormente.

Não funciona/não gosto! Como posso desinstalá-lo?

A maneira mais fácil é restaurar um backup ou atualizar a partição do sistema. Um arquivo zip para desinstalação ainda não foi criado.

Por que você substitui arquivos ART no meu dispositivo? Isso é mais invasivo do que no Dalvik, causará problemas significativos de desempenho e será instável!

Eu escrevi algumas razões em GitHub. Sim, é mais invasivo, por isso há muito tempo tento evitá-lo, mas do ponto de vista técnico e de suporte, acho que é a melhor opção.

Menos desempenho que o ART original? Provavelmente porque tive que desabilitar algumas otimizações para tornar possíveis certos tipos de ganchos. No entanto, isto afecta apenas uma fracção de todos os métodos e mesmo para estes, a perda de desempenho certamente não é significativa ou perceptível, se é que é mensurável. Ainda existem milhares de outras otimizações realizadas pelo ART, e tentei desabilitar o mínimo possível, proporcionando o máximo de flexibilidade possível.

A estabilidade é boa, conforme mencionado acima. Comparado com a abordagem que usei para Dalvik (modificando as estruturas de dados internas do tempo de execução de app_process), tenho certeza de que substituir completamente as bibliotecas é uma maneira muito mais confiável caminho. Eu poderia integrar minhas alterações no código existente de forma limpa e reutilizar funções relacionadas, enquanto muitos hacks e suposições seriam necessários de outras maneiras.

Você finalmente tornará o código-fonte público?

Claro, você o encontrará no GitHub logo após o lançamento da versão alfa, em um branch separado por enquanto.

Isso significa que as versões mais antigas do Android não são mais suportadas agora?

Não! O novo código é compilado em todas as versões 4.x do Android e só precisa ser testado antes de um lançamento unificado. Mas primeiro preciso ter certeza de que está funcionando bem para o Lollipop. Possivelmente, o suporte ART poderia ser transferido para o KitKat, mas isso é menos prioritário.

Como posso agradecer pelo seu trabalho?

Muitas pessoas pediram maneiras de doar algum dinheiro, então criei um doação página agora.

Quanto preciso doar para você adicionar o recurso X ou um módulo que faça Y?

Isso não é doar, é pagar alguém na expectativa de trabalho futuro. Não estou interessado em trabalhos freelancers.