Dispositivo virtual Android raiz com Android 7.1.1

12

Estou usando o SDK oficial do Android com o Emulador do Android para criar um Android 7.1.1 virtual (x86). Preciso testar várias coisas, entre outras, alguns aplicativos requerem acesso root ao dispositivo.

Agora eu sei que posso adb roote tenho um shell raiz, mas isso não permite que os aplicativos instalados tenham acesso root.

Pesquisei esse tópico há algum tempo e já vi várias abordagens. A maioria das respostas já foi publicada há muito tempo.

Eu acho que é bastante estranho que não haja opção para alternar entre root - afinal este é um SDK.

Como faço para fazer root em um dispositivo virtual Android, executando o Android 7.1.1, permitindo efetivamente o acesso root dos aplicativos instalados?

editar: prefiro não recorrer a emuladores pagos, como o Genymotion, se possível.

edit2: Isto é apenas para uso pessoal.

edit3: Genymotion parece ser uma solução viável, como um emulador alternativo. Como é que o Android SDK / Emulator não oferece esse recurso?

edit4: A resposta de xavier_fakerat parece funcionar perfeitamente, no entanto, desde o Android Studio versão 3.1, isso não parece ser um enraizamento permanente. Depois que o AVD é reiniciado, o acesso root desaparece.

SaAtomic
fonte

Respostas:

11

Como fazer root emulador Android (Android 7.1.1 / Nougat)

É um prazer informar a comunidade sobre uma maneira mais fácil de fazer o root do emulador Android (executado no Android SDK autônomo)

Requisitos :

Nota: O SuperSU agora está obsoleto, mas esse método ainda funciona para fazer root no emulador, e mais atualizações serão fornecidas para os métodos de root mais recentes.

Instruções

  1. 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.

insira a descrição da imagem aqui

  1. 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.exe –avd {emulator_name} –writable-system

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.

  1. Pressionando binário su 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 corresponde à 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:\%USERPROFILE%\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)

Se isso falhar, tente pressionar este diretório /system/xbin/su. Também para emuladores executando o Android 5.1 e abaixo, use o sue nãosu.pie

  1. Alterar permissões do binário su

    • Em seguida, 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!! Tome nota do caminho binário su (o meu é / system / bin)

  1. Definir a installdiretiva em binário e definir umdaemon

Digite os códigos:

su --install

e para configurar o daemon:

su --daemon&

Importante!! Anote o espaçamento

  1. Configurando o SELinux como Permissivo (ou seja, desativando o SE Linux)

    • Por fim, desative o selinux através deste código:

setenforce 0

É isso mesmo !! Abra o aplicativo SuperSU e pode solicitar a atualização de binários, você pode usar o método Normal.

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.

insira a descrição da imagem aqui

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.

Agradecimentos especiais;

Agradecimento especial a Irvin H, cujo tutorial me inspirou a criar este guia depois de ter falhado inúmeras vezes e também depois de ver a necessidade de muitos usuários fazerem root em seus emuladores também. Espero que isso também se beneficie muito

Irvin H: Como fazer root no emulador do Android - no Android Studio 2.3 ((Android 4.4)

Atualizar

Como comentado por SaAtomic,

Essa abordagem ainda é viável com o Android Studio 3.0.1

Após o upgrade para a versão emulador 27.2.9e superior, agora a preservação da raiz é muito mais fácil através do recurso de instantâneo (se a cópia do método system.img não estiver funcionando):

Idealmente, é mais como hibernar 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 de 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-systemparâmetro ao -avd [avdname]comando emulador normal para iniciar o emulador. (Executar o emulador apenas com o emulador -avd [avdname] não inicia a versão / cópia raiz ou pode levar a algum erro)

Testado no nível 22 da API

xavier_fakerat
fonte
1
Obrigado pela resposta detalhada. Ainda não tentei, mas esta parece ser uma solução viável!
SaAtomic
1
@SaAtomic, seus passos são muito úteis. Além disso, pode-se também atualizar o Supersu 2.82 / Magisk usando uma recuperação personalizada, por exemplo, TWRP, e pode obter facilmente root ... Isso funciona bem em qualquer 7.1.1 ou 7.1.2 executando dispositivos .... Obrigado ..
Panchajanya Sarkar
Acabei de testar isso com o Android SDK 2.3.3 (AVD Manager) e o Pixel virtual usando o Android 7.1.1. Funciona exatamente como descrito imediatamente. Obrigado!
SaAtomic
1
Atualização: Essa abordagem ainda é viável com o Android Studio 3.0.1
SaAtomic 4/17/17
1
É mais provável que você está usando uma imagem do emulador errado, você precisa usar o Google APIs Intel x86 Atom System Imagemelhor queGoogle Play Intel x86 Atom System Image
xavier_fakerat