Como fazer root no emulador Android (testado no Android 7.1.1 / Nougat)
Requisitos :
Instruções
Instale o SuperSu.apk
Instale o aplicativo SuperSu primeiro, basta arrastar e soltar (se estiver executando a versão mais recente do emulador ou carregar sidel através do adb, por exemplo adb -e install supersu.apk
)
Depois de instalá-lo, quando você o executa, é exibida uma tela como mostrado abaixo, indicando “Não há binário SU instalado ..”. Este erro apenas confirma que o dispositivo ainda não está enraizado.
Tornar a partição do sistema do emulador gravável
Como sugere, precisamos dar ao emulador permissão para gravar arquivos do sistema.
Digite o seguinte código para fazer isso: emulator -avd {emulator_name} -writable-system
Se você tiver mais de um AVD, poderá obter uma lista de avds usando o comando: emulator -list-avds
Nota: Navegue até a pasta de ferramentas em que o Android SDK está instalado e abra o prompt de comando pressionando shift e clicando com o botão direito do mouse.
Empurrando su binário no diretório do sistema
- Extraia o Recovery flashable.zip (que contém os binários de diferentes arquiteturas)
Importante! Use apenas o binário su que corresponda à sua arquitetura avd, por exemplo, x86, arm etc. e observe o caminho em que você extraiu esses binários.
- Verifique se você está executando o adb como root e também precisa remontar. Basta digitar esses códigos
adb root
adb remount
Agora é hora de empurrar o binário su:
Este é o código que usei com sucesso :adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su
(não se preocupe com a minha localização específica de su binary, qualquer localização está correta desde que não haja espaço em branco)
Nota: Para descobrir bin
ou xbin
fazer no console antes:> adb shell
,>ls /system/xbin/su
Se isso falhar, tente pressionar este diretório /system/xbin/su
. Também para emuladores executando o Android 5.1 e abaixo, use o su
e nãosu.pie
Alterar permissões do binário su
- A seguir, vamos fazer algumas modificações nas permissões do su binário. Temos que fazer isso no dispositivo emulador através do adb:
adb -e shell
su root
cd /system/bin
chmod 06755 su
Importante!! Anote o caminho binário su (o meu é / system / bin)
- Definir a
install
diretiva em binário e definir umdaemon
Digite os códigos:
su --install
e para configurar o daemon:
su --daemon&
Importante!! Anote o espaçamento
Configurando o SELinux como Permissivo (ou seja, desativando o SE Linux)
- Por fim, desative o selinux através deste código:
setenforce 0
Abra o aplicativo SuperSU e pode solicitar a atualização de binários, você pode usar o método Normal.
Nota: Se você estiver enfrentando bootloops, não atualize os binários, use-os como estão.
É isso mesmo !!
Abra qualquer aplicativo que exija permissões de SU apenas para verificar novamente e, de fato, o SuperSU pergunta se você deseja conceder permissões de SU.
Para que a raiz persista, atualize su binary (usando o método Normal), copie system.img do diretório temp ( Users\AppData\Local\Temp\Android Emulator
o arquivo geralmente é nomeado aleatoriamente, por exemplo, 1359g.tmp
com um tamanho grande) e substitua o padrão system.img
.
Atualização :
Observei que é mais fácil obter uma imagem temporária do sistema no Linux do que no Windows. Você pode tentar usar a imagem de instantâneo.
Atualização 4 de agosto de 2018
Com o surgimento do emulador 27.3.x
, agora fica mais fácil preservar a raiz por meio do recurso de instantâneo (se a cópia do system.img
método não estiver funcionando):
Idealmente, é mais como hibernarig o dispositivo virtual com a configuração intacta, portanto, tudo é preservado.
Instantâneos
Agora você pode salvar vários snapshots do AVD para uma determinada configuração do dispositivo e escolher qual dos snapshots salvos carregar ao iniciar o emulador. Iniciar um dispositivo virtual carregando uma captura instantânea é como acordar um físico de um estado de suspensão, em vez de inicializá-lo a partir de um estado desligado.
Isso implica que o único requisito para iniciar o emulador seja adicionar o -writable-system
parâmetro ao emulator -avd [avdname]
comando normal para iniciar o emulador. ( Executar o emulador apenas com emulator -avd [avdname]
não inicia a versão / cópia raiz ou pode levar a algum erro )
Testado no nível 22 da API
Também para problemas de bootloop, consulte o outro post: Emulador do Android: como evitar o loop de inicialização após o enraizamento? e atualizações dos mesmos.
Observações
A maior parte do conteúdo em referência era para versões mais antigas do Android e, portanto, o motivo de diferentes comandos e caminhos que eu modifiquei.
Reconhecimentos;