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.


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.


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.


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


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


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.


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.


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


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.


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


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.


0

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.