Polecenie urządzeń adb nie działa

86

Używam systemu Ubuntu 10.10 w wersji 64-bitowej. Mam zainstalowane ia32-libs wraz z wersją 1.0.26 Android Debug Bridge.

Moje problemy):

  1. adb devices>>> ???????????? Brak uprawnień
  2. sudo adb devices >>>> sudo: adb: nie znaleziono polecenia
  3. adb shell >>> błąd: niewystarczające uprawnienia do urządzenia

Myślę, że to wszystko jest powiązane. Oto istotne informacje.

$ echo $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/android-sdk-linux_x86/tools:/opt/android-sdk-linux_x86/platform-tools

$ which adb
/opt/android-sdk-linux_x86/platform-tools/adb

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
????????????    no permissions

$ sudo adb devices
sudo: adb: command not found

$ adb shell
error: insufficient permissions for device

Otrzymuję te same wyniki z zrootowanym Moto Droidem z CM6.1 i zrootowaną G-Tab z pamięcią ROM opartą na CM7.

Przejrzałem następujące powiązane posty:

Wypróbowałem większość (nie wszystkie) sugestii i nie udało mi się rozwiązać problemu. Rzeczy, których nie próbowałem, wydawały się nieodpowiednie. Byłbym wdzięczny za kilka dodatkowych wskazówek i będę kontynuować rozwiązywanie problemów.

Jedną rzeczą, której nie próbowałem, było edytowanie /etc/udev/rules.d/70-android.rules. Czy to może być problem? Nie widzę, jak mogłoby to spowodować „sudo: adb: polecenie nie znaleziono”. Może nie wszystkie moje problemy są ze sobą powiązane. W każdym razie, w tym momencie myślę, że potrzebuję wkładu od innych ludzi, ponieważ nie wierzę, że mam problem ze ścieżką lub inne typowe problemy omówione w innych postach.

EDYCJA: ROZWIĄZANE dzięki EboMike i RivieraKid. W rzeczywistości były to dwa różne problemy:

  1. Punkt 2 powyżej (sudo: adb: command not found) został rozwiązany poprzez utworzenie linku symbolicznego w następujący sposób:

    $ sudo ln -s /opt/android-sdk-linux_x86/platform-tools/adb /usr/local/sbin/adb
    

    To pozwoliło mi zrobić to, co sugerował EboMike i użyć tego rozwiązania . Było to wymagane w przypadku mojego Moto Droida. (Uruchomienie adb jako sudo nie było jednak wymagane dla mojego Viewsonic G-Tablet.)

  2. Moje pozostałe dwie kwestie zostały rozwiązane poprzez zaimplementowanie reguły udev zgodnie z sugestią RivieraKid (z tego linku ).

MountainX
źródło
Punkt 1 naprawdę mi pomógł. Nie jestem pewien co do punktu 2
Francisco Quintero,
Możliwy duplikat urządzenia skonfigurowanego do rozwoju (?????? brak uprawnień)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Odpowiedzi:

87

Jedną rzeczą, której nie próbowałem, było edytowanie /etc/udev/rules.d/70-android.rules. Czy to może być problem?

Jakiś szczególny powód, dla którego tego nie zrobiłeś? Odpowiadając na pytanie - TAK! Reguły udev są tym, co informuje Ubuntu, jakie jest twoje urządzenie i umożliwia narzędziom przestrzeni użytkownika dostęp do niego.

Nie będziesz mógł korzystać z adb bez prawidłowego wykonania instrukcji .

Mając to jednak na uwadze, nie mówisz, jakiej wersji Ubuntu używasz, ale miałem problemy z 10.10 - daj mi znać, jeśli chcesz, abym opublikował zawartość mojego pliku reguł.

Nie martw się o uruchomienie adb przez sudo, nie potrzebujesz tego. MODE="0666"Z reguły udev pozwala na dostęp do urządzenia za każdego użytkownika.


EDYTOWAĆ:

Nie zapomnij ponownie załadować zasad:

sudo udevadm control --reload-rules

EDYCJA # 2:

Jak słusznie wskazuje @Jesse Glick, jeśli adb już działa w trybie demona, musisz również uruchomić go ponownie, aby to zadziałało:

sudo adb kill-server

Użyłem tutaj sudo, ponieważ gwarantuje to, że adb zostanie zabity i jest to oficjalnie obsługiwana metoda zatrzymania serwera. Zostanie automatycznie uruchomiony ponownie przy następnym użyciu Adb, ale tym razem z odpowiednim środowiskiem.

RivieraKid
źródło
1
Dziękuję za link . Nie jestem pewien, jak przegapiłem fakt, że te instrukcje były oficjalne. Myślałem, że ludzie robią to jako obejście. Znalazłem kod dostawcy dla mojego Viewsonic GTablet i dodałem regułę udev i teraz działa! Dzięki.
MountainX
1
z jakiegoś powodu nie mogę wyświetlić Motorola Droid z urządzeniami adb. Teraz mogę wyświetlić GTab i emulator, ale nie Droid.
MountainX
Patrz wyżej. Uruchomienie adb jako roota spowodowało pojawienie się Moto Droid.
MountainX
$ cat /etc/udev/rules.d/51-android.rules SUBSYSTEM == "usb", SYSFS {idVendor} == "22b8", MODE = "0666" SUBSYSTEM == "usb", SYSFS {idVendor} = = „0955”, MODE = „0666”
MountainX
1
… I musisz zrestartować adbdemona, jeśli wcześniej działał.
Jesse Glick
22

Musisz ponownie uruchomić serwer adb jako root. Zobacz tutaj .

EboMike
źródło
nie zadziałało. Szczegóły: me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb kill-server sudo: adb: command not found me@desktop:/opt/android-sdk-linux_x86/platform-tools$ adb kill-server me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb start-server sudo: adb: command not found
MountainX
adbnie jest na drodze twojego superużytkownika. Wejdź, which adbaby dowiedzieć się, w której ścieżce się znajduje, a następnie dodaj ją do ścieżki roota.
EboMike
Mam nadzieję, że możesz to przeczytać. (Nie wiem, jak sformatować komentarze, aby zawierały znaki nowej linii). Adb JEST w ścieżce mojego użytkownika root. Wklejałem polecenie which adb w moim oryginalnym poście. Ścieżka to / opt / android-sdk-linux_x86 / platform-tools / adb. $ sudo -s root @ desktop: # echo $ PATH / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / X11R6 / bin: / opt / android-sdk-linux_x86 / tools: / opt / android-sdk-linux_x86 / platform-tools
MountainX
1
Oto dziwna rzecz. Otrzymuję różne wyniki z „which adb” w zależności od tego, czy uruchamiam go jako root, czy z sudo. Oto wyjście $ sudo, które adb $
MountainX
Określ pełną ścieżkę, a następnie uruchom adb jako root.
EboMike
13

W moim systemie Linux Gentoo / Funtoo mam podobne problemy:

Zawsze otrzymuję nieprawidłowy opis urządzenia i niewystarczające uprawnienia:

# sudo ./adb devices
List of devices attached 
????????????    no permissions
# ./adb usb
error: insufficient permissions for device

U mnie pomaga Howto z Google. W moim przypadku musiałem dodać regułę udev:

# cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

i ustawianie praw systemu plików

# chmod a+r /etc/udev/rules.d/51-android.rules

Po ponownym podłączeniu mojego smartfona dostęp do telefonu powiódł się, pojawia się on również teraz w narzędziu Eclipse do wyboru urządzeń z systemem Android:

# sudo ./adb devices
List of devices attached 
3XXXXXXXXXXXXXC device
# sudo ./adb usb
restarting in USB mode

Musisz także sprawdzić członkostwo swojego użytkownika w grupie plugdev .

larkee
źródło
3

Każda odpowiedź, którą przeczytałem, wskazuje na SUBSYSTEM=="usb". Jednak mój (być może starożytny) udev potrzebował zmiany na DRIVER=="usb". Nareszcie mogę uruchomić serwer adb jako użytkownik inny niż root ... tak.

Pouczające może być przyjrzenie się wynikowi polecenia udevmonitor --env, a po nim wynikowi polecenia

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>
zaraz
źródło
Jeśli udevmonitori udevinfonie istnieją na twoim komputerze, użyj udevadm monitori udevadm info -a -p ...zamiast tego.
Ash
2

Należy pamiętać, że środowiska IDE, takie jak IntelliJ IDEA, zwykle uruchamiają własny serwer adb.

Nawet ręczne zabicie serwera i uruchomienie nowej instancji z sudo nie pomoże tutaj, dopóki nie sprawisz, że IDE zabije sam serwer.

sebastianwagner
źródło
2

ponowne uruchomienie serwera adb jako root zadziałało dla mnie. widzieć:

derek@zoe:~/Downloads$ adb sideload angler-ota-mtc20f-5a1e93e9.zip 
loading: 'angler-ota-mtc20f-5a1e93e9.zip'
error: insufficient permissions for device
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    no permissions

derek@zoe:~/Downloads$ adb kill-server
derek@zoe:~/Downloads$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    sideload
keredson
źródło
Ja też: Linux Mint Serena 18.1 z HTC Sensation. Ostrzeżenie Nooba: zastanawiałem się nad tym przez 2 dni, więc rzeczy są prawie na pewno snafu'd
Aethelbald
0

HTC One M7 z nowym Cyanogenmod 11.

Telefon jest podłączony przez USB i tetheringuje moje połączenie danych.

Wtedy dostaję tę niespodziankę:

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb shell
error: insufficient permissions for device

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
????????????    no permissions

ROZWIĄZANIE: Wyłącz tethering w telefonie.

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
HT36AW908858    device
cinderman
źródło
-3

Właśnie dostałem tę samą sytuację, przywrócenie danych fabrycznych działało dobrze.

Andrii Krokhin
źródło
Z pewnością to komentarz?
Matthew Taylor
mój błąd. Chciałem powiedzieć, że resetowanie urządzenia i czyszczenie danych zadziałało dobrze.
Andrii Krokhin