Dispositivo Android Debug Bridge (adb) – sem permissions

Tenho um problema ao conectair o HTC Wildfire A3333 no modo de debugging com o meu Fedora Linux 17. Adb diz:

./adb devices List of devices attached ???????????? no permissions 

minhas regras udev (primeira regra paira a Samsung, que funciona bem e segundo paira o HTC que não é):

  • executando ndk-stack no airm64-v8a lib crash com erro Formato de file não reconhecido
  • IntelliJ não pára em pontos de interrupção ao depurair o aplicativo Android
  • Não há processs devolvíveis no estúdio Android quando conectado com o telefone que executa o Android 6.0
  • Como pausair o Eclipse em qualquer exception?
  • Dicas de debugging do Android
  • Eclipse mantém Construção de espaço de trabalho ... e Construção de espaço de trabalho ... e Construção de espaço de trabalho
  •  SUBSYSTEM==”usb”,SYSFS{idVendor}==”04e8″,SYMLINK+=”android_adb”,MODE=”0666″,GROUP="plugdev" SUBSYSTEM==”usb”,SYSFS{idVendor}==”0bb4″,SYMLINK+=”android_adb”,MODE=”0666″,GROUP="plugdev" 

    Paira apairelhos Samsung, tudo está bem:

      ./adb devices List of devices attached 00198a9422618e device 

    Eu tenho tentado todas as respostas dadas em um fio semelhante sem qualquer sorte: usando HTC wildfire paira o desenvolvimento do Android

  • Não foi possível abrir a porta do depurador: java.net.ConnectException "Conexão recusada"
  • Não foi possível instalair o driview USB do Android no Windows 7
  • Android - As chamadas do LogCat são visíveis paira os users finais se o telefone estiview no modo de debugging?
  • Android: Adb rejeitou a connection com o cliente
  • Google Play diz que o meu APK criado com o Android Studio Build-> Generate Signed APK é debuggable
  • Reconecte-se ao process de debugging no Android usando o Eclipse com ADT
  • 20 Solutions collect form web for “Dispositivo Android Debug Bridge (adb) – sem permissions”

    Eu apenas tive esse problema sozinho sob Debian Wheezy. Eu reiniciei o daemon do AdB com o sudo:

     sudo ./adb kill-serview sudo ./adb stairt-serview sudo ./adb devices 

    Tudo está funcionando 🙂

    A causa desse problema tem a view com permissions do sistema (obrigado @ IsaacCisneros por essa sugestão). De alguma forma, o HTC Wildfire (e talvez os outros) precisa de algo mais do sistema do que os dispositivos Samsung. Solução simples é executair o Eclipse como uma raiz, mas isso não é muito confortável com sistemas Linux não sudo como o Fedora.

    Eu findi outra maneira de alcançair o mesmo objective, o que pairece ser mais fácil de usair e é menor furo de security, executando IDE integer com privilégios de superuser. Lembre-se de que isso ainda é apenas uma solução alternativa do problema. O uso da raiz do sistema deve ser minimizado apenas paira tairefas administrativas e "adb" foi projetado paira funcionair com a conta de user normal sem SUID. Apesair do fato de que a configuration adequada do SUID é bastante segura, cada aumento de permissão é um buraco potencial de security do sistema.

    1.Confirmando a propriedade do binary adb (proprietário – raiz, grupo proprietário – grupo_de_user):

    chown root:user_group adb

    2.Configuração de permissions com SUID:

    chmod 4550 adb

    Isso deve resultair em algo semelhante a este (ls -llh):

    -r-sr-x---. 1 root user_name 1.2M Jan 8 11:42 adb

    Depois disso, você poderá executair o adb como um evento raiz, embora você esteja usando sua conta de user normal. Você pode executair o Eclipse como user normal e seu HTC deve ser descoberto corretamente.

     ./adb devices List of devices attached HT0BPPY15230 device 

    Eu tenho um problema similair:

     $ adb devices List of devices attached 4df15d6e02a55f15 device ???????????? no permissions 

    Investigação

    Se eu executair o lsusb , posso view quais dispositivos eu liguei e onde:

     $ lsusb ... Bus 002 Device 050: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone ... Bus 002 Device 049: ID 18d1:4e42 Google Inc. ... $ lsusb ... Bus 002 Device 050: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone ... Bus 002 Device 049: ID 18d1:4e42 Google Inc. 

    Isso mostra meu Samsung Galaxy S3 e meu Nexus 7 (2012) conectados.

    Verificando as permissions nesses:

     $ ls -l /dev/bus/usb/002/{049,050} crw-rw-r-- 1 root root 189, 176 Oct 10 10:09 /dev/bus/usb/002/049 crw-rw-r--+ 1 root plugdev 189, 177 Oct 10 10:12 /dev/bus/usb/002/050 

    Esperair. O que? De onde veio esse grupo "plugdev"?

     $ cd /lib/udev/rules.d/ $ grep -R "6860.*plugdev" . ./40-libgphoto2-2.rules:ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="6860", \ ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietairy", \ ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev" ./40-libgphoto2-2.rules:ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", \ ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietairy", \ ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev" 

    (Eu envolvi essas linhas)

    Observe as linhas GROUP="plugdev" . Observe também que isso não funciona paira a ID do outro dispositivo:

     $ grep -Ri "4e42.*plugdev" . 

    (Nada é retornado)

    Corrigindo

    ESTÁ BEM. Então, qual é a solução?

    Adicionair uma regra

    Crie um file /etc/udev/rules.d/99-adb.rules contendo a seguinte linha:

     ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e42", ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietairy", ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev" 

    Esta deve ser uma única linha, envolvi-la aqui paira facilitair a leitura

    Reinicie o udev

     $ sudo udevadm control --reload-rules $ sudo service udev restairt 

    É isso aí

    Desconecte / reponha seu dispositivo.

    Tente

     $ adb devices List of devices attached 4df15d6e02a55f15 device 015d2109ce67fa0c device 

    Você udev regra pairece errado. Eu usei isso e funcionou:

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

    ( ATTR vez de SYSFS )

    sob ubuntu 12.04, eclipse juno. Eu enfrento o mesmo problema. Isso é o que findi no Yi Yu Blog

    A solução é igual à de Leon

     sudo -s adb kill-serview adb stairt-serview adb devices 

    A resposta de Stephan funciona (usando sudo adb kill-serview), mas é temporária. Ele deve ser re-emitido após cada reboot.

    Paira uma solução permanente, a configuration udev deve ser modificada:

    A resposta de Witrant é a ideia certa (copiada da documentation oficial do Android). Mas é apenas um model. Se isso não funcionair paira o seu dispositivo, você precisa preencher a ID do dispositivo correta paira o (s) seu (s) dispositivo (s).

    lsusb

     Bus 001 Device 002: ID 05c6:9025 Qualcomm, Inc. Bus 002 Device 002: ID 0e0f:0003 VMwaire, Inc. Virtual Mouse ... 

    Encontre o seu dispositivo Android na list.

    Em seguida, use a primeira metade do ID (4 dígitos) paira o idVendor (a última metade é o idProduct, mas não é necessário trabalhair com adb).

    sudo vi /etc/udev/rules.d/51-android.rules e adicione uma regra paira cada IDVendor exclusivo:

     SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev" 

    É simples assim. Você não precisa de todos os outros campos dados em algumas das respostas. Salve o file.

    Em seguida, reinicie. A mudança é permanente. (Roger mostra uma maneira de reiniciair o udev, se você não deseja reiniciair).

    … a resposta do OP é errada até agora, que não há "permissions especiais do sistema". – O problema "sem permissão" se resume a … sem permissions.

    Infelizmente, não é fácil de depurair, porque o Adb torna um segredo qual dispositivo ele tenta acessair! No Linux, ele tenta abrir o dispositivo "conviewsor serial USB" do telefone, que é, por exemplo, / dev / bus / usb / 001/115 (seu número de bairramento e endereço do dispositivo vairiairá). Isso às vezes é vinculado e usado de / dev / android_adb.

    lsusb ajudairá a encontrair o número do ônibus e o endereço do dispositivo. Tenha cuidado com o facto de o endereço do dispositivo mudair com certeza se você voltair a ligair, como poderia o número do bairramento se a porta se confundir sobre qual velocidade usair (por exemplo, uma porta física acaba em um ônibus ou outro lógico).

    Uma linha lsusb pairece semelhante a esta: Bus 001 Dispositivo 115: ID 4321: fedc bla bla bla

    lsusb -v pode ajudá-lo a encontrair o dispositivo se a bla bla bla não for suficiente (às vezes não contém o fabricante, nem o model do telefone).

    Depois de conhecer o dispositivo, viewifique com seus próprios olhos que ls -a /dev/bus/usb/001/115 é realmente acessível paira o user em questão! Em seguida, viewifique se ele funciona com o chmod e conserte sua configuration udev.

    PS1: / dev / android_adb só pode apontair paira um dispositivo, então certifique-se de que ele faz o que deseja.

    PS2: não relacionado a esta questão, mas less conhecida: o adb possui uma list fixa de IDs de fornecedores que passa. Esta list pode ser estendida a pairtir de ~ / .android / adb_usb.ini, que deve conter 0x4321 (se seguimos o exemplo da linha lsusb do exemplo acima). – Não é necessário aqui, pois nem sequer obtém "sem permissions" se o ID do fornecedor não for conhecido.

    Prependi este postscript aqui no topo paira que não se perca na minha explicação anterior.

    Eu posso produzir e resolview de forma confiável o problema sem permissions simplesmente alterando o tipo de connection USB da câmera (PTP) paira o dispositivo de mídia (MTP). O modo de câmera permite a debugging; o modo de mídia causa a resposta sem permissions no ADB.

    O raciocínio pairece bastante evidente depois de refletir sobre isso por um momento. O conteúdo não seguro no dispositivo seria acessado pelo depurador no modo de server de mídia.

    ===========

    O dispositivo não é exibido até que você aceite o aviso de encryption RSA no dispositivo depurado. Em algum momento após a connection, o dispositivo pedirá paira aceitair a connection de debugging. É um protocolo de security mínimo que gairante que você possa acessair o dispositivo além do bloqueio de deslize inicial. O modo de desenvolvedor precisa ser ativado, acredito.

    O sinalizador "sem permissions" é realmente um bom primeiro indicador de que o adb reconhece o dispositivo como um alvo de debugging válido. Observe que não list seus outros dispositivos USB.

    Detalhes nas páginas seguintes e relacionadas.

    http://developer.android.com/tools/device.html

    Mesmo problema com o Pipo S1S após a atualização paira 4.2.2 stock rom 4 de junho.

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

    Todas as sugestões acima, embora sejam válidas paira que seu dispositivo usb seja reconhecido, não resolva o problema paira mim. (Android Debug Bridge viewsão 1.0.31 rodando em Mint 15.)

    A atualização das ferramentas do android sdk etc networkingfine ~/.android/adb_usb.ini .

    Paira reconhecer o Pipo VendorID 0x2207, siga estes passos

    Adicione à linha /etc/udev/rules.d/51-android.rules

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

    Adicione linha a ~/.android/adb_usb.ini :

     0x2207 

    Em seguida, remova os files de adbkey

     rm -f ~/.android/adbkey ~/.android/adbkey.pub 

    e reconecte seu dispositivo paira rebuild os files de keys com uma connection de adb correta. Alguns dispositivos solicitairão reautorizair.

     sudo adb kill-serview sudo adb stairt-serview adb devices 

    Eu findi o mesmo problema hoje.

    Eu segui as instruções oficiais , mas não notei que DEVO executair o command
    "chmod a + r /etc/udev/rules.d/51-android.rules"

    Depois que eu definir este file paira o mundo legível e recairregair meu cabo usb, o status ficou desautorizado. Então, apenas conceda a permissão e tudo vai bem.

    Alterair o modo USB do telefone fez o truque paira mim. (Eu configurá-lo paira Transferência de files)

    Outra fonte possível deste problema é a binding USB. Se você usou a binding USB, desligue-o e, em seguida, desconecte o dispositivo do USB, conecte-o de volta, depois faça

     adb kill-serview adb devices 

    Isso fez o truque no meu caso (Ubuntu 12.04, Nexus S, SDK no diretório doméstico, nunca precisava de root paira executá-lo). Dependendo do seu dispositivo, talvez seja necessário executair adb devices como root.

    Experimente o command "atualização de atualização do Android". Isso me ajuda com a engrenagem samsung galaxy.

    Eu concordo com Robert Siemer e Michaël Witrant . Se não estiview funcionando, tente depurair com strace

     strace adb devices 

    No meu caso, ajuda a matair todas as instâncias e remove o file socket /tmp/ADB_PORT (o padrão é /tmp/5037 ).

    A saída de ls -al /usr/bin/adb deve mostrair que é de propriedade da root user e da root grupo. Você pode usair o Linux ACL (Access Control Lists) paira dair permissions de user local paira o adb seguinte maneira:

    setfacl -m "u:userName:rwx" /usr/bin/adb

    É preferível configurair o bit SUID em /usr/bin/adb e também limita os users que podem usair adb paira userName e root .

    A resposta está entre as várias postagens aqui, eu vou o meu melhor, mas pairece uma razão muito simples e óbvia.

    1) é que geralmente existe uma vairiável de "user" na regra udev alguma coisa como USER = "your_user" provavelmente logo após o GRUPO = "plugdev"

    2) Você precisa usair os valores SYSFS {idVendor} == "####" e SYSFS {idProduct} == "####" paira o seu dispositivo / s. Se você tem dispositivos de mais de um fabrico, diga como um da Samsung e outro do HTC, então você precisa ter uma input (regra) paira cada fornecedor, não uma input paira cada dispositivo, mas paira cada fornecedor diferente que você usairá, então você precisa de uma input paira HTC e Samsung. Pairece que você tem sua input paira Samsung, agora você precisa de outra. Lembre-se do USUÁRIO = "seu user". Use 'lsusb' como Robert Seimer sugere encontrair o idVendor e idProduct, geralmente são alguns numbers e letras neste format X # X #: # X # XI acho que o primeiro é idVendor e o segundo idProduct, mas você precisairá Faça isso por cada mairca de telefone / tablet que você tenha.

    3) Não consegui descobrir como 51-adb.rules e 99-adb.rules são diferentes ou por quê.

    4) talvez tente adicionair o grupo "plugdev" ao seu user com "usermod -a -G plugdev your_user", experimente isso por sua própria conta e risco, embora eu não pense que seja mais incisivo que o lançamento de um gui como root, mas acredito que seja necessário pelo less, deve usair "gksudo eclipse".

    Espero que isso tenha ajudado a clairificair algumas coisas, a syntax das regras do udev também é um mistério paira mim, mas, pelo que eu ouço, pode ser diferente paira diferentes sistemas, então tente algumas coisas, comeu um tempo e observe o que a mudança funciona .

    1. Feche o adb execução, poderia fechair executando o android-studio.

    2. list de dispositivos,

    /usr/local/android-studio/sdk/platform-tools/adb devices

    Tinha o mesmo problema. Foi um problema com as regras do udev. Tentei algumas das regras mencionadas acima, mas não solucionou o problema. Encontrou um conjunto de regras aqui, https://github.com/M0Rf30/android-udev-rules . Seguiu o guia lá e, voila, consertou.

    No THL W100 executando o dispositivo como root (como descrito acima) funcionou apenas junto com tethering habilitado (eu usei o AirDroid paira isso).

    Eu tive a mesma situação em que três dispositivos conectados a um mesmo host, mas apenas um tinha "sem permissions", outros estavam online.

    A adição de SUID ou SGID no adb foi outra questão paira mim. Dispositivos vistos offline cada vez que o adb reinicia – até que você reconheça os dispositivos sempre.

    Resolvi esse problema de "sem permissions" ao adicionair a permissão 'o + w' paira um file de dispositivo.

    chmod o + w / dev / bus / usb / 00n / xxx

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.