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.
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.
Odpowiedzi:
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
adb devices
pokazuje 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 devices
z konsoli, pojawia się komunikat „Serwer adb jest nieaktualny” i serwer adb uruchamia się ponownie. Następnie ponownie przechodzę do sytuacji „brak uprawnień”.
Miałem ten sam problem. Zapewnienie, że tryb USB urządzenia NIE ładuje się tylko go rozwiązało.
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
Aby rozszerzyć odpowiedź Sumeeta Deshmukha, jego podejście działa ogólnie - jeśli chcesz użyć adb
polecenia 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ź.
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.
Nie działało to dla mnie po dodaniu się do plugdev
grupy 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.rules
pliku /etc/udev/rules.d
i 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.
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.
M0Rf30/android-udev-rules
Społeczność GitHub utrzymywała zasady udev
https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules
Jest to najbardziej kompletna lista reguł udev, jaką do tej pory widziałem, nawet bardziej niż obecnie zalecana sudo apt-get install android-tools-adb
w oficjalnej dokumentacji , spróbuj.
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.
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).
sudo adb devices
. Jeśli to działa świetnie, ale z pamięci nie musiałem być rootem, aby sprawdzić podłączone urządzenia.