Erro 'Permissões insuficientes' no comando `adb push` em 12.04

57

Quando tentei colocar meu arquivo apk em um tablet, recebi esse erro, por favor me ajude.

adb server is out of date.  killing... 
* daemon started successfully * 
error: insufficient permissions for device.

Obrigado antecipadamente pela ajuda.

Neha Sharad Umachigi
fonte
11
A resposta do usuário84207, que é suportada pela referência à documentação oficial do desenvolvedor para Android, é muito melhor do que a resposta aceita por Anwar Shah, pois devemos evitar executar daemons como root sempre que possível. A execução de adb como root torna o computador vulnerável a mais ataques.
Nealmcb 02/02

Respostas:

20

Eu já vi esse mesmo erro algumas vezes no Ubuntu. Uma solução alternativa para isso é executar o adb com o sudocomando Por exemplo, se você estiver pressionando app.apksdcard, o comando será

sudo adb push app.apk /mnt/sdcard

Além disso, certifique-se de selecionar o modo "USB debugging" nas configurações do aplicativo (no GingerBread) ou na seção de desenvolvimento (no IceCream Sandwich e acima). Se o adb já estiver em execução, você deve primeiro matá-lo com o comandosudo adb kill-server

Espero que isso ajude.

Anwar
fonte
Eu tenho, mas ainda vai tentar este método também ... obrigado pela ajuda
Neha Sharad Umachigi
5
"Entendi" ... Por favor, tenha a gentileza de compartilhar se você encontrou uma solução, para que outras pessoas possam se beneficiar (como você procurou se beneficiar quando fez a pergunta). Por exemplo, agora tenho esse problema, mas sou forçado a procurar em outro lugar, mesmo que seja o mesmo problema exato que você descreve.
Erjoalgo 23/09
2
Essa resposta é arriscada, pois os erros no adb podem assumir o controle de todo o computador. A resposta usando as regras do udev por user84207, suportada pela referência à documentação oficial do desenvolvedor do Android, evita esse problema.
Nealmcb
Essa é a solução mais simples, fácil e pelo menos funcional para o problema.
Anwar
Nota: Isso funcionou para mim porque sudoencontra uma versão instalada diferente da adbque não é sudo. É por isso que isso funciona, não porque em adbsi requer mais privilégios.
Kevin Cooper
61

Eu encontrei esse mesmo problema. Adicionar uma regra do udev, conforme indicado aqui, fez o truque:

Efetue login como root, crie um arquivo /etc/udev/rules.d/51-android.rulese adicione uma linha como esta para conceder permissões a qualquer pessoa no plugdevgrupo:

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

Neste exemplo, o ID do fornecedor é HTC. Você precisa usar o ID do fornecedor do seu dispositivo, que pode ser obtido executando lsusbe pesquisando uma linha como

Bus 002 Device 009: ID 2a47:9e18

Neste exemplo, seu ID de fornecedor seria 2a47, então você teria que substituir 0bb4por 2a47. A linha correta seria assim:

SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"

Agora atribua permissões de leitura aos arquivos, recarregue o udev e recarregue o daemon adb:

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
adb start-server

Pode ser necessário desconectar e conectar novamente o dispositivo à porta USB.

erjoalgo
fonte
9
Você pode obter o ID do fornecedor USB pelo comando lsusb. É a primeira parte do par separado por dois pontos. Por exemplo 18d1: 4e22, o ID do fornecedor é 18d1.
Peter Lamberg
Pode ser necessário "acionar" o udev após adicionar o novo arquivo de regras (embora não tenha certeza). Aqui está uma maneira de "acionar" o askubuntu.com/questions/82470/… .
user29020
2
e / ou você pode precisar desconectar e reconectar o dispositivo? Mas essa resposta funcionou para mim e é muito melhor do que executar o adb como root. Seu usuário do Ubuntu também deve fazer parte do plugdevgrupo. Corra idpara descobrir.
Nealmcb
2
Este repositório é extremamente útil se você tem que trabalhar com uma série de dispositivos github.com/M0Rf30/android-udev-rules
zamber
22

A resposta de Jorch914 no StackOverflow resolveu esse problema para mim:

Ok Então finalmente encontrei o problema, aparentemente neste dispositivo você deve configurar para se conectar como câmera (mesmo após a depuração USB já estar ativada)

insira a descrição da imagem aqui

Além disso, este link descreve o processo de configuração

kas
fonte
11
Sim, era isso! Eu tive que "Selecionar configuração USB" no Android N, que foi definido por padrão como "Carregamento".
Dan Dascalescu
11
por qualquer motivo, eu sempre fui capaz de conectar meu pixel em um mac e começar a trabalhar, mas quando mudei para uma estação de trabalho do CentOS dev, precisei fazer isso para solicitar a permissão de depuração. Graças
bsautner
2
Trabalhou para mim. O truque parece ser alterá-lo de "Cobrar" para outra coisa, por que.
Bim
11

Esses dois comandos simples resolveram o problema para mim:

adb kill-server
adb start-server

Note que, ao contrário da resposta do semi-novato, não preciso sudo.

Nicolas Raoul
fonte
11
Isso funcionou para mim
Sudip Bhandari
Não funcionou para um Nexus 5X conectado ao Ubuntu 16.04 quando tentei executar adb shell ls.
Dan Dascalescu
10

Acabei de executar o mesmo problema, mas aqui está como eu fui capaz de passar por isso:

  • você deve matar o servidor adb existente emitindo o seguinte comando: adb kill-server(pode estar errado, mas eu o enviei com AND sem sudo
  • inicie o servidor adb com permissões apropriadas emitindo: sudo adb start-server
  • voila. você pode saber emitir quaisquer comandos necessários

Não tenho certeza se você sabe, mas há um pacote que inclui adb. Menciono isso porque notei que você está recebendo uma referência a uma versão mais antiga do adb. Você pode instalar emitindo o seguinte em sua linha de comandos:sudo apt-get install android-tools-adb

Eu espero que isso ajude.

semi-novato
fonte
o BAD das ferramentas da plataforma pode ser mais recente; entretanto, essas ferramentas estão disponíveis para download separado.
Martin Zeitler 10/01
2

Hoje encontrei o insufficient permissions for deviceerro, embora adbestivesse trabalhando como esperado apenas alguns minutos antes. Agora eu recebo:

$ adb devices
List of devices attached 
????????????    no permissions

$ adb shell
error: insufficient permissions for device

Pouco antes de encontrar o erro, eu havia desativado Media device (MTP), pois achei que não precisaria usá-lo MTP. No entanto, parece que a depuração USB, ou pelo menos alguns adbcomandos, exigem que Media device (MTP)seja ativado.

Para ativar o Media device (MTP)Android 4.4, acesse:

Settings
Storage
The "..." menu (in the upper right corner)
USB computer connection
Media device (MTP)

Quando MTPestá desativado, lsusbmostra o seguinte:

Bus 002 Device 071: ID [idVendor1]:[idProduct1] Google Inc.

Após a ativação MTP, lsusb mostra o seguinte:

Bus 002 Device 072: ID [idVendor2]:[idProduct2] [idVendor string]

O idVendor e o idProduct mudam, dependendo de estar ou não MTPativado ou desativado.

Como não sou especialista em Android, é possível que o comportamento acima seja específico ao meu modelo de telefone específico.

mpb
fonte
0

Poderia ser de outro motivo. Acabei de receber este erro ao instalar um apk no dispositivo:

$ adb install platforms/android/build/outputs/apk/android-armv7-release.apk 
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: insufficient permissions for device
- waiting for device -

Isso aconteceu porque o dispositivo não estava pronto no modo correto. O dispositivo estava compartilhando sua conexão 4G via USB.

Pode ser conhecido assim:

$ adb devices -l
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

33332EF19F3D00EC       no permissions usb:1-1.2

Portanto, foi o suficiente para desativar o compartilhamento de conexão no telefone e começar de novo.

Em geral, verifique o seguinte resultado através do adb devicecomando antes de tentar enviar arquivos no dispositivo

$ adb devices -l
List of devices attached
33332EF19F3D00EC       device usb:1-1.2

Nesses casos, não há necessidade de matar ou reiniciar o servidor adb.

Provavelmente seria a mesma situação se você montou o dispositivo para transferência de dados via USB

Rémi B.
fonte
0

Eu tive o mesmo problema e recebi permissões insuficientes. O que fiz foi revogar as autoridades USB do meu laptop. Então parou e começou a depuração USB. Conectou-o novamente ao laptop e concedeu às autoridades de depuração usb.

Les Labbauf
fonte
11
Você pode fornecer mais informações sobre esse processo? Passo a passo seria o ideal, para que o OP possa seguir seu exemplo. :)
ThatGuy
0

Eu enfrentei o mesmo problema e resolvi isso adicionando o caminho de your_android_sdk_path à variável de ambiente como

sudo export $PATH:/your_android_sdk_path/platform-tools/adb

Sua sua vontade como você deseja adicionar este à sua conta ou sistema de largura por editar estes arquivos ~/.bashrcarquivo ou ~/.profile ou /etc/profile, /etc/bash.bashrc, or /etc/environmentse u deseja adicionar ao acesso amplo sistema.

e, em seguida, crie o link disso na lixeira

sudo ln -s /your_android_sdk_path/platform-tools/adb /bin/adb

Se você usou dispositivos adb ou qualquer comando, primeiro mate o servidor como

adb kill-server

então inicie o servidor como

adb start-server
adb devices

agora você pode ver seus dispositivos listados corretamente sem problemas

Naval Kishor Jha
fonte
0

A resposta para este problema está aqui: https://github.com/snowdream/51-android

Como desenvolvedor Android, sugiro que você NÃO use "sudo" para forçar o uso de adb em qualquer lugar. Não é o que devemos fazer. Regras, políticas e restrições existem para nossa própria segurança.

Pavlos Theodorou
fonte
0

Outra possibilidade: o compartilhamento USB também entra em conflito com o adb. Desativá-lo resolve o problema para mim.

张 实 唯
fonte