adb brak uprawnień w systemie Ubuntu 17.04

48

Kiedy próbuję:

$ adb devices

otrzymuję wynik:

List of devices attached 
????????????    no permissions

Jaki jest problem?

wypróbowałem na komputerze Ubuntu 16.04 i działało idealnie. wypróbowałem urządzenie 7.1.1 i działało idealnie.

Nadav Tasher
źródło
Spróbować sudo adb devices. Jeśli to działa świetnie, ale z pamięci nie musiałem być rootem, aby sprawdzić podłączone urządzenia.
shmink
1
nie będzie działać z sudo, ale przy logowaniu do roota zadziała. Problem polega na tym, że Android Studio wykonuje tylko adb z sesji użytkownika innego niż root, a uruchomienie go z jksudo nie rozpoznaje moich plików.
Nadav Tasher
Znalazłem to samo w Android Studio i ogólnie wszystko wykonane przez jetbrains. Czy po zainstalowaniu Androida Studio zrobiłeś to jako root?
shmink
zainstalowany jako root do / usr / local / i chmoded do 777 -R, nie uruchamiaj się jako root, aby rozpoznać ustawienia i sdk.
Nadav Tasher
Może uruchomisz go jako root i po prostu zmienisz odpowiednio ustawienia i sdk.
shmink

Odpowiedzi:

64

Spróbuj zrestartować serwer Adb.

sudo adb kill-server

i wtedy

sudo adb start-server

następnie podłącz urządzenie, włącz Debugowanie i wpisz

adb devices
Sumeet Deshmukh
źródło
2
To działa ... tak jakby. Po tym, rzeczywiście, po uruchomieniu adb devicespokazuje teraz urządzenie (i pojawia się okno dialogowe odcisków palców). Jednak nadal nie działa z Android Studio. Ponadto, kiedy uruchamiam Android Studio, a następnie uruchamiam adb devicesz konsoli, pojawia się komunikat „Serwer adb jest nieaktualny” i serwer adb uruchamia się ponownie. Następnie ponownie przechodzę do sytuacji „brak uprawnień”.
Shade
To nie działa. Urządzenia adb nic nie pokazują, a zestaw słuchawkowy nigdy więcej nie prosi o pozwolenie.
Tyguy7
62

Miałem ten sam problem. Zapewnienie, że tryb USB urządzenia NIE ładuje się tylko go rozwiązało.

Ivan Klass
źródło
5
To samo tutaj zmodyfikowałem reguły Udev bez rezultatów, zmieniłem USB na udostępnianie plików i presto. W poprzedniej wersji Ubuntu urządzenie nie wymagało żadnych reguł udev ani określonych trybów USB.
Fco P.
3
To powinna być poprawna odpowiedź (nie adb restart serwera)
RumburaK
1
Prawidłowa odpowiedź dla mnie.
Alvaro Gutierrez Perez
1
nie powinna być poprawną odpowiedzią, ale zadziałała.
Uzumaki D. Ichigo,
1
Tak, to poprawna odpowiedź.
39

Bardzo prawdopodobne, że udev nieprawidłowo dodaje urządzenie. Ja też miałem ten problem i znalazłem stosunkowo proste rozwiązanie.

Znajdź swoje urządzenie w lsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Punkt zainteresowania w tym przypadku:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

Sprawdź odpowiedni plik urządzenia

$ ls -l /dev/bus/usb/001/006

Prawdopodobnie zobaczysz coś takiego

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

Oznacza to, że plik urządzenia będzie własnością root użytkownika i root grupy, dlatego adb może uzyskać do niego dostęp jako root, ale nie jako zwykły użytkownik.

Można to rozwiązać, tworząc nową regułę udev - użyłem /etc/udev/rules.d/51-android.rules- aby dodać urządzenie do grupy plugdev, w której adb już zakłada, że ​​jesteś członkiem (powinieneś to sprawdzić id)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

** Pamiętaj, aby zastąpić ATTR {idProduct} == „4ee7” własnym identyfikatorem produktu, który znalazłeś w kroku pierwszym. ** (Jeśli twoim dostawcą nie jest Google Inc., zamień również identyfikator dostawcy na ten przed dwukropkiem w lsusb).

Teraz po prostu odłącz urządzenie i podłącz je ponownie (udev powinien automatycznie reagować na nowy plik) i tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

Źródło: Dodanie reguł udev dla urządzeń z Androidem debugujących USB - Janos Gyerik

Paweł
źródło
1
Ta odpowiedź rozwiązała mój problem. Perfekcyjnie, dzięki.
alexmeia,
1
Dzięki @Paul To mi pomogło. Dobrze wyjaśnione z uzasadnieniem. Myślę, że wymagane jest również ponowne uruchomienie usługi udev.
Gagan
jest to zdecydowanie poprawne rozwiązanie, jeśli nie chcesz używać sudo do rzeczy, których nie powinieneś używać do sudo
aholt
To powinna być zaakceptowana odpowiedź, ponieważ jest to poprawna odpowiedź. Najwyżej oceniana odpowiedź jest naprawdę tylko obejściem.
Joel Cross,
To rozwiązało dla mnie. Działało wczoraj bez reguł, ale potem po zainstalowaniu aktualizacji na Ubuntu przestało działać i musiałem to zrobić.
simernes
2

Aby rozszerzyć odpowiedź Sumeeta Deshmukha, jego podejście działa ogólnie - jeśli chcesz użyć adbpolecenia z konsoli.

Android Studio jednak najwyraźniej uruchamia własny serwer adb, zabijając nasz. Oznacza to, że po tym, jak zabiliśmy / uruchomiliśmy serwer za pomocą sudo, Studio uruchamia go ponownie, co prowadzi do sytuacji początkowej - bez uprawnień.

Rozwiązaniem jest najpierw uruchomienie Studio, a następnie uruchomienie / zatrzymanie serwera. W ten sposób udało mi się sprawić, aby mój Nexus 5X pojawił się jako prawidłowy cel uruchamiania w Studio.

To nie jest najlepsza sytuacja (konieczność uruchamiania poleceń przy każdym uruchomieniu programu Studio), ale robi to szybko i brudnie. Jeśli znajdę bardziej trwałe rozwiązanie, zaktualizuję tę odpowiedź.

Cień
źródło
dziękuję bardzo, chociaż był to błąd naprawiony przez aktualizację systemu (na telefonie) i aktualizację studia.
Nadav Tasher,
2

Zmiana trybu USB z telefonu załatwiła sprawę. (Ustawiłem na Transfer plików ).

NuttLoose
źródło
2

Proszę NIE śledzić rozwiązań sugerujących do użytkusudo ( sudo adb start-server)! Uruchamia to adb jako root (administrator) i NIE powinno tak działać !!! To ZŁE obejście !

Wszystko, co działa jako root, może zrobić wszystko w twoim systemie, jeśli tworzy lub modyfikuje plik, może zmienić jego uprawnienia do używania tylko przez root. Znowu NIE!

Słuszne jest skonfigurować system, aby Użytkownik ma pozwolenie, sprawdź ten poradnik pisałem o tym, jak to zrobić poprawnie.

Daniele Segato
źródło
2

Nie działało to dla mnie po dodaniu się do plugdevgrupy i ponownym uruchomieniu komputera, aby upewnić się, że zmiana zostanie zastosowana we wszystkich moich sesjach powłoki. Następnie odkryłem, że nie ma 51-android.rulespliku /etc/udev/rules.di musiałem wykonać następujące czynności, aby rozwiązać problem:

# Here the vendor ID is of Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | sudo tee —append /etc/udev/rules.d/51-android.rules
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
$ sudo service udev restart

Musiałem także odłączyć i ponownie podłączyć urządzenie z Androidem.

Russoue
źródło
To też nie działa dla mnie ...
Tyguy7
1

Musisz podać uprawnienia na swoim urządzeniu z Androidem. Przejdź do Ustawienia> Opcje programisty. Spróbuj wyłączyć i ponownie włączyć debugowanie USB. Odłącz kabel i podłącz go ponownie. Spróbuj także usunąć wszystkie zapisane autoryzacje z opcji programisty. Powinien teraz poprosić o pozwolenie na debugowanie przez monit w telefonie. Zaakceptuj to.

Joel G. Mathew
źródło
nie działa, już go wypróbowałem, jeśli to ważne, używam Androida 7.1.2, a na innym urządzeniu z systemem 7.1.1 działało.
Nadav Tasher
Próbowałeś usunąć wszystkie autoryzacje hosta? Zrestartowałeś po tym?
Joel G Mathew
nie uruchomił się ponownie. Spróbuję i powiem ci, czy zadziałało.
Nadav Tasher
Jeśli zadziałało, możesz zaakceptować odpowiedź.
Joel G Mathew
źle sprawdzę później dzisiaj
Nadav Tasher
0

Nie mam pojęcia, dlaczego to działa, ale było to jedyne rozwiązanie, które działało dla mnie

Znajdź, gdzie działa adb (jeśli jesteś podobny do mnie, masz zainstalowanych wiele wersji). Pamiętaj, że narzędzia takie jak reaguj natywnie mogą zdecydować się na użycie losowych innych wersji, aby utrudnić Ci życie. Dla mnie to jest ~/Android/Sdk/platform-tools/adb. Więc uruchomię:

sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb

Narzędzia Android są bardzo denerwujące.

Bufke
źródło
0

Przejdź do Ustawienia >> Konserwacja >> Przechowywanie. Następnie sprawdź lewe górne menu i kliknij połączenie USB z komputerem, a następnie zmień na Urządzenie multimedialne (MTP).

Charloh Maguri Jnr
źródło