domingo, 23 de outubro de 2016

Instalando o TWRP e o Xposed em dispositivos MTK com Android 5


Recentemente adquiri um Blu Studio C HD rodando o Android 5.1, muito bom aparelho porem com um problema irritante: Reinicia sozinho aleatoriamente.

Com muita pesquisa a respeito, descobri que esse não é um problema do aparelho em si (hardware) mas sim um sério bug de vazamento de memória do Android 5 (lolipop) que faz com que aplicativos recém fechados não liberem a memória RAM, com o tempo a memória estoura e há um Kernel Panic, fazendo o dispositivo reiniciar.

Problema 1:

Teoricamente primeiro o dispositivo precisa ter acesso ROOT, mas isso é apenas a ponta do iceberg, pois a solução para isso seria utilizar uma correção via Xposed, que para quem não conhece, é uma biblioteca que permite fazer coisas mais a fundo que o ROOT em si, modificando o comportamento de bibliotecas do sistema, sem alterar os arquivos originais, tudo em nível de memória.

Problema 2: 

A partir do Android 5, há uma proteção que não permite a instalação do Xposed, mesmo tendo root, a instalação deste sdk só é possível via menu de recovery.

Problema 3: 

O menu de recovery (aquele que permite voltar a configuração original de fábrica, caso seu sistema de pau) original dos dispositivos não permite que instale pacotes não devidamente assinados pelo fabricante, no meu caso a BLU.

O Google além de liberar um sistema com um problema gravíssimo, ainda não mede esforços para bloquear qualquer tentativa de modificação, que permitira corrigir bugs.

Resolvendo os problemas:

Antes de começar, já vou avisando que os procedimentos descritos abaixo são de dificuldade moderada, exigindo um certo conhecimento e risco. Ou seja se:

  • Seu celular brickar
  • Seu celular morrer
  • Seu celular derreter
  • Seu celular for possuído por um demônio
  • A Skynet acordar e haver uma gerra nuclear
  • O Faustão fizer um firme pornô gay
  • A Sacha revelar que é hermafrodita
  • A Claudia leite se casar com a Ivete Sangalo

NÃO É PROBLEMA MEU !

Primeiro de tudo, temos que fazer o root do dispositivo, ou seja, se ele já for, pode pular esta parte. Uma forma fácil de fazer o root, que funcionou para mim é usar o Kingo Root:


Se não funcionar para você, o Google está ai para tentar outras trocentas mil formas de fazer root no Android 5.

Tendo o dispositivo rooteado, é hora de baixar o app chamado Flashify:


ou


Abra o Flashify e vá em Backup Current Revovery:


Ele vai pedir um destino para o backup da sua revovery, escolha o Cartão SD. Depois de feito o Backup, copie esse arquivo no seu computador, ele deve estar na pasta:

Android\com.cgollner.flashif\files\flashify-backup\recovery\

Agora você vai precisar do MTK Extractor:


Extraia a pasta compactada do MTK Extractor em algum lugar do seu computador, e renomeie ela como "MTK Extractor Stock" copie o arquivo de backup do seu recovery (que você fez através do Flashify) na nesta pasta, e renomeie este arquivo para boot.img.

Rode o MTK Extractor.exe como administrador, Clique no botão BOOT e em seguida UNPACK BOOT.IMG:

Clique na imagem para ampliar

Feche-o e volte na pasta do MTK Extractor, e você verá que ele extraiu os dados do arquivo recovery do backup que você fez. 

Descompacte novamente o arquivo do MTK Extractor, e desta vez renomeie sua pasta como "MTK Extractor Custom", você terá duas pastas do MTK Extractor. Agora vamos precisar do arquivo img do TWRP, eu aconselho que você consiga algum que seja do mesmo chipset do seu celular, no meu caso, o BLU STUDIO C HD é um MT6580, e eu usei este aqui:


Você consegue descobrir isso facilmente pesquisando as especificações técnicas do seu dispositivo, ou usando o Mtk Droid Tool. Se você não conseguiu descobrir ou não achou um correspondente ao seu celular, tente a sorte com este mesmo, no máximo que pode acontecer é não funcionar, que em geral não bricka o seu celular, apenas não entra ou trava no menu de recovery. 

Descompacte o arquivo img do TWRP na pasta "MTK Extractor Custom", e novamente renomeie este arquivo como boot.img, rode o MTK Extractor.exe como administrador, clique em BOOT e depois UNPACK BOOT.IMG da mesma forma como você fez antes, feche-o.

Agora é o pulo do gato ! Volte na pasta "MTK Extractor Stock" e copie APENAS o arquivo kernel desta pasta na pasta "MTK Extractor custom", você vai substituir este arquivo por um outro que tinha nesta pasta. Depois que você substituiu o arquivo, rode novamente o MTK Extractor.exe da pasta "MTK Extractor Custom" como administrador, vá em BOOT só que desta vez clique em REPACK BOOT.IMG, ele pode dar um erro, clique em "continuar" e feche-o.

Volte na pasta "MTK Extractor custom" e agora terá um arquivo chamado boot-new.img, esta é a imagem do seu menu recovery do TWRP (ou outro), copie este arquivo no cartão SD do seu celular.

Volte no seu celular, rode novamente o Flashify, vá em "Recovery Image", selecione "from file" e selecione o arquivo que você acabou de criar e copiar no cartão SD e mande flashar:

Depois de flashado, ele vai sugerir reiniciar o dispositivo, ao reiniciar, você já pode segurar as teclas especificas do seu aparelho para entrar no menu de recovery, e testar para ver se deu certo, se você não sabe que teclas são essas, procure saber e testar antes de fazer todo este procedimento, pois senão você não saberá se deu certo ou não.

Caso não funcione, não se desespere, isso normalmente não bricka o aparelho, se travou tire a bateria, religue o aparelho, volte no Flashify, vá em RESTORE/RECOVERY, e volte a recovery original do seu aparelho. Neste caso você pode tentar outros arquivos de custom recovery, a versão free do Flashify só permite fazer 3 flashs por dia, mas você pode burlar isso adiantando a data do seu celular.

Agora está na hora de resolver o problema 2

Estando tudo ok, baixe a ultima versão do Xposed na pagina oficial:


E baixe o correspondente da versão do seu Android, não esquecendo de baixar também o uninstaller, caso de pau. Copie os arquivos na raiz do seu cartão SD e entre no seu novo Custom Recovery, e mande atualizar com o arquivo zip do Xposed, reinicie o aparelho. Lembrando que o primeiro boot depois de fazer isso pode demorar, então só considere que deu merda depois de esperar mais de 20 minutos. Caso ele tenha ficado preso no menu de boot, reinicie o dispositivo (removendo a bateria por exemplo) e rode o uninstaller do Xposed, nesse caso provavelmente ele vai bootar normal, e você baixou algum  arquivo errado.

Com o Xposed instalado, finalmente:

Resolvendo o problema 1

O Xposed sozinho apenas não faz nada, você vai precisar instalar o apk gerenciador dele, baixe ele:


E instale, lembrando de ativar a permição de fontes desconhecidas. Abra o Xposed Instaler, e se tudo estiver ok ele vai mostrar o XPosed devidamente instalado:


Estando tudo ok, vá em "baixar" e procure por "Fix Lolipop Memory Leak", baixe, instale, e vá em módulos e habilite-o. Agora é só reiniciar.

Finalmente, até agora o meu Android não deu mais nenhum reinicio sozinho, nem travamentos, qualquer novidade, eu volto aqui e modifico esse post.

Lembrando que é extremamente aconselhável você guardar em local seguro o backup da sua custom recovery original, que qualquer coisa pode ser flashado novamente usando o flashify.

Até mais !