Eu tenho todas as versões do Android SDK (de 1.5 a 2.3.3) e tentei vários métodos para obter root no emulador do Android. Não uso nenhum dispositivo Android e testo tudo no emulador (AVD).
Preciso obter acesso root em qualquer um dos emuladores Android para usar as funcionalidades 'iptables' e 'busybox'. E para usar o iptables, preciso ter acesso root. Pelo menos o comando 'su' deve ser executado no emulador de terminal.
Eu também instalei o z4root
aplicativo,
Mas leva muito tempo, não termina o enraizamento e fica preso. alguns dizem que, se fizermos o downgrade do sistema para abaixo de RC30, dessa forma, podemos obter acesso root. se isso for verdade, como fazer isso? Eu uso o sistema operacional Linux e Windows.
Por favor, alguém me diga qualquer método para fazer root no meu emulador.
fonte
Respostas:
Todas essas respostas são desnecessariamente complicadas :)
fonte
adb root
resultados em "adbd não pode ser executada como raiz nas compilações de produção". Você está usando um emulador específico? Forneça mais detalhes.adb root
um erroadbd cannot run as root in production builds
, consulte stackoverflow.com/a/45668555/1682419 - Você precisa de uma "Imagem do sistema de APIs do Google" em vez de uma "Imagem do sistema do Google Play".Como fazer root no emulador Android (testado no Android 7.1.1 / Nougat)
Requisitos :
SuperSU app (chainfire) versão mais recente 2.82
Recuperação flashable.zip (contém su binário)(Aqui está um link de backup alternativo fornecido pelo usuário do XDA Ibuprophen para zips flashable se o link principal não estiver funcionando: Liberações de zip flashable )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
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.
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
ouxbin
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 osu
e nãosu.pie
Alterar permissões do binário su
adb -e shell su root cd /system/bin chmod 06755 su
Importante!! Anote o caminho binário su (o meu é / system / bin)
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)
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ãosystem.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 dosystem.img
método não estiver funcionando):Idealmente, é mais como hibernarig o dispositivo virtual com a configuração intacta, portanto, tudo é preservado.
Instantâneos
Isso implica que o único requisito para iniciar o emulador seja adicionar o
-writable-system
parâmetro aoemulator -avd [avdname]
comando normal para iniciar o emulador. ( Executar o emulador apenas comemulator -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;
Irvin H: Enraizando o emulador do Android - no Android Studio 2.3 ((Android 4.4)
Falha no acesso à raiz do Android AVD.
fonte
su --install && su --daemon&
o emulador, seguido desetenforce 0
para obter o root. Você conhece alguma correção permanente para root na reinicialização?Aqui está a lista de comandos que você deve executar enquanto o emulador está sendo executado. Eu testei esta solução para um avd no Android 2.2:
Ele pressupõe que o binário su esteja localizado no diretório de trabalho. Você pode encontrar su e superusuário aqui: http://forum.xda-developers.com/showthread.php?t=682828 . Você precisa executar esses comandos sempre que iniciar o emulador. Você pode escrever um script que inicie o emulador e faça root.
fonte
-partition-size
opção para especificar o tamanho da partição. Tente iniciar seu emulador comtools/emulator -avd MyAndroidVirtualDeviceName -partition-size 256
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
com:adb root
adb remount
Para AVD com 5.1.1 e 6.0, usei o próximo script no Windows:
Precisa UPDATE.zip do SuperSU. Descompacte-os em qualquer pasta. Crie um arquivo bat com o conteúdo acima. Não se esqueça de especificar a arquitetura e o dispositivo necessários:
set adb=adb -s emulator-5558
eset arch=x64
. Se você executar o Android acima ou igual a 5.0, altereset pie=
paraset pie=.pie
. Executá-lo. Você obtém uma raiz temporária para a execução atual.Se você encontrou um erro na remontagem da partição do sistema, precisa iniciar o AVD na linha de comando. Veja abaixo o primeiro passo para o Android 7.
Se você deseja torná-lo persistente - atualize o binário no SuperSU e armazene system.img da pasta temp como substituto do system.img padrão.
Como converter a raiz temporária resultante em uma permanente
Primeiro - vai para o SuperSu. Ele oferece uma atualização binária. Atualize da maneira normal. Reinicie a rejeição.
Segundo - relevante apenas para emuladores. O mesmo AVD. A conclusão é que as alterações na imagem do sistema não serão salvas. Você precisa mantê-los para si.
Já existem instruções para diferentes emuladores.
Para o AVD, você pode tentar encontrar um arquivo de sistema temporário.img, salvá-lo em algum lugar e usá-lo quando iniciar o emulador.
No Windows, ele está localizado no
%LOCALAPPDATA%\Temp\AndroidEmulator
e tem um nome parecido comTMP4980.tmp
.Você o copia para uma pasta avd device (
%HOMEPATH%\.android\avd\%AVD_NAME%.avd\
) e renomeia parasystem.img
.Agora será usado no início, em vez do habitual. Verdadeiro se a imagem no SDK for atualizada, ela terá a antiga.
Nesse caso, você precisará remover isso
system.img
e repetir a operação na sua criação.Manual mais detalhado em russo: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
Para o Android 7, você precisa executar etapas adicionais: 1. Precisa executar o emulador manualmente. Vá para a pasta sdk
sdk\tools\lib64\qt\lib
. Execute a partir deste emulador de pasta com opções-writable-system -selinux disabled
como esta:Você precisa reiniciar a
adbd
partir do root:raiz do adb -s emulator-5554
E remontar o sistema:
Ele pode ser doado apenas uma vez por emulador de execução. E qualquer outra remontagem pode interromper o modo de gravação. Por causa disso, você não precisa executar nenhum outro comando com remontagem, como
mount -o remount,rw /system
.Outras etapas permanecem as mesmas - faça o upload do binário, execute o binário como daemon e assim por diante.
Imagens do AVD Android 7 x86 com root:
Se você vir um erro sobre o PIE na execução do
su
binário - faça o upload no binário errado do emulador. Você deve fazer o upload do binário nomeadosu.pie
dentro do arquivo morto, mas no emulador deve ser nomeado comosu
, nãosu.pie
.fonte
update binary in SuperSU and store system.img from temp folder as replace of default system.img.
Eu acredito que a maneira mais fácil é criar um alias para o comando
sh
, por exemploTestado no Android Emulator 3.0 e superior.
fonte
mount: '/system' not in /proc/mounts
Aqui está minha mochila com tudo que você precisa. Ou você pode usar este script:
fonte
Acabei de substituir e atribuir atributos para su para ~ / Android / Sdk / system-images / android-22 / google_apis / x86 / system.img e agora no android 5 eu sempre tenho raiz mesmo para novos sistemas, basta instalar o SuperSu. apk
depois disso, SuperSu.apk vê raiz. Mas eu não atualizo o arquivo binário
fonte
Eu usei parte do método das soluções acima; no entanto, eles não funcionaram completamente. Na versão mais recente do Andy, isso funcionou para mim:
No Andy (Root Shell) [Para obter, clique com o botão direito do mouse no ícone HandyAndy e selecione Term Shell]
Dentro do shell, execute estes comandos:
Em seguida, instale o SuperSU e instale o SU binário. Isso substituirá o binário SU que acabamos de criar. (Opcional) Remova o SuperSU e instale o Superuser pelo CWM. Instale o binário su novamente. Agora, a raiz funciona!
fonte
Tentei muitas das sugestões acima, incluindo o SuperSU e não consegui trabalhar, mas encontrei algo muito mais simples que funcionava para meus propósitos. No meu caso, eu queria apenas executar o sqlite no prompt de comando. Simplesmente criei um emulador com uma versão mais antiga do Android (Lollipop) e obtive acesso root imediatamente.
fonte
Descobri que o emulador padrão da API 23 x86_64 está enraizado por padrão.
fonte