skonfigurować urządzenie do rozwoju (???????????? Brak uprawnień)

[[11]} używam telefonu Samsung galaxy nexus (Android 4.0).

[11]}rozwijam aplikację na Androida na Ubuntu linux OS. Chciałbym uruchomić aplikację bezpośrednio na telefonie Samsung, więc wykonałem następujące kroki konfiguracji:
  1. W moim projekcie AndroidManifest.xml Plik, dodany android:debuggable="true" do elementu <application>

  2. Na urządzeniu, w Settings > Security enabled Unknown sources

  3. Na urządzenie, w Settings > Developer options enabled debugowanie USB

  4. Na moim komputerze powstał plik /etc/udev/rules.d/51-android.rules o następującej treści:

    SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev" 
    
  5. Na moim komputerze uruchom polecenie chmod a+r /etc/udev/rules.d/51-android.rules

Następnie na moim komputerze otworzyłem terminal i wykonałem adb devices polecenie, otrzymałem:

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

Ponieważ nie widziałem mojego urządzenia, a tylko ???????????? no permissions, uruchamiam następujące polecenia:

 adb kill-server
 adb start-server
 adb devices

But I still got:

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

Dlaczego? Co przegapiłem?

Author: Alex P., 2012-02-09

22 answers

Dla mnie działa zabicie i ponowne uruchomienie serwera adb. Na Linuksie: sudo adb kill-server a następnie sudo adb start-server. Następnie wykryje prawie każde urządzenie po wyjęciu z pudełka.

 421
Author: WarrenFaith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-25 11:04:09

Nic nie działało dla mnie, aż w końcu znalazłem odpowiedź tutaj: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html

Kopiuję tekst tutaj, na wypadek gdyby zniknął w przyszłości.

Utwórz plik o nazwie / tmp / android.reguły o następującej treści (numery hex dostawcy zostały zaczerpnięte ze strony listy dostawców):

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666"

Uruchom następujące polecenia:

sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules
sudo chmod 644   /etc/udev/rules.d/51-android.rules
sudo chown root. /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb

Odłącz kabel USB między telefonem a komputer.

Podłącz ponownie telefon.

Uruchom adb devices, aby potwierdzić, że teraz ma pozwolenie na dostęp do telefonu.

Należy pamiętać, że możliwe jest użycie , USER="$LOGINNAME" zamiast , MODE="0666" w pliku .rules, zastępując $LOGINNAME nazwą logowania, czyli tym, co id -nu drukuje.

W niektórych przypadkach może być konieczne nadanie plikowi udev rules nazwy sortującej blisko końca, np. z51-android.rules.

 327
Author: grebulon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-21 08:57:13

Wprowadź następujące polecenia:

adb kill-server sudo ./adb start-server adb devices

Problem polega na tym, że serwer adb nie działa jako root.

 73
Author: iancrowther,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-13 15:08:45

Próbowałem wszystkiego, nic nie działało .. w końcu zadziałało, gdy przełączyłem się z MTP na kamerę (PTP).

 46
Author: Sabeer Mohammed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-27 05:11:52

Istnieje wiele złych odpowiedzi na to pytanie, począwszy od nalegania na uruchamianie adb jako root (które nie powinno być reklamowane jako jedyne lub nawet zalecane rozwiązanie) do rozwiązywania zupełnie niepowiązanych problemów.

Oto jeden najkrótszy i najbardziej uniwersalny przepis na dbanie o uprawnienia dla wszystkich adb oraz fastboot urządzenia na raz:

echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --verbose --action=add --subsystem-match=usb

Lub przydałaby się nieco dłuższa wersja, którą zamieściłem do tego gist.

Jako za konkretną rzecz, którą OP zrobił źle w swoim pytaniu - nie było to przeładowanie reguł udev Po edycji pliku .rules.

Również OP nie powiedział, który Android build (aka ROM) miał w swoim telefonie. Wartość idVendor jest ustawiana w oprogramowaniu i dlatego zależy od pamięci ROM. Tak więc wartość 04E8, której użył w swojej pierwotnej zasadzie, zadziałałaby tylko dla urządzeń z pamięcią ROM firmy Samsung. Ale to nie jest problem dla tej reguły udev - pasuje do wszystkich urządzeń z interfejsami adb lub fastboot niezależnie od ich VendorID.

 20
Author: Alex P.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 17:06:06

W Archlinux może się to zdarzyć od czasu do czasu. The fix:

$ sudo -s
# adb kill-server
# adb start-server
 15
Author: Keenan Verbrugge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-24 03:23:19

Dla tych, którzy używają Debiana, Przewodnik konfiguracji urządzenia pod Ubuntu, aby utworzyć plik " / etc/udev / rules.d / 51-android.zasady " nie działa. Wykonałem instrukcje z tutaj . Umieszczając to samo tutaj w celach informacyjnych.

Edytuj ten plik jako superuser

sudo nano /lib/udev/rules.d/91-permissions.rules

Znajdź tekst podobny do tego

# usbfs-like devices 
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664″

Następnie zmień tryb na 0666 jak poniżej

# usbfs-like devices 
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666″

Pozwala to na działanie adb, jednak nadal musimy skonfigurować urządzenie, aby mogło zostać rozpoznane. My trzeba utworzyć ten plik jako superuser,

sudo nano /lib/udev/rules.d/99-android.rules

I wpisz

SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4″, MODE=”0666″

Powyższa linia dotyczy HTC, śledź post @grebulon, aby uzyskać pełną listę.

Zapisz plik, a następnie uruchom ponownie udev jako super user

sudo /etc/init.d/udev restart

Podłącz telefon przez USB i powinien zostać wykryty podczas kompilacji i uruchamiania projektu.

 7
Author: jaga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-28 10:55:57

Miałem ten sam problem, rozwiązanie jest jak kolega: (swoją drogą nie musisz rootować swojego urządzenia.)

  1. wpisz "su", aby przełączyć się na "super user".
  2. your-path/ADB kill-server.
  3. your-path/adb start-server.
  4. Jeśli nie wystąpi błąd, możesz zobaczyć listę urządzeń z "your-path / ADB devices" w koncie root.
  5. Quit super user.
  6. Teraz możesz wykonać "urządzenia adb" na swoim koncie.

Enjoy.

 5
Author: Jeffrey Yang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-12 05:04:47

Miałem ten sam problem z moim Galaxy S3. Mój problem polegał na tym, że wartość idVendor 04E8 nie była odpowiednia. Aby znaleźć odpowiedni, podłącz smartfon do komputera i uruchom lsusb w terminalu. Wyświetli Twój smartfon w ten sposób:

Bus 002 Device 010: ID 18d1:d002 Google Inc.

Więc prawą idVendor wartością jest 18d1. A linia w {[7] } musi być:

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

Potem uciekam sudo udevadm control --reload-rules i wszystko działało!

 4
Author: user3714693,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-14 17:25:21

Wiem, że może to być trochę późno, ale oto bardzo dobry artykuł na temat ręcznego dodawania Sterownika Android ADB USB. Ręczne dodawanie Sterownika Android ADB USB w Ubuntu 14.04 LTS

Edited to Add Link Content

Kroki

Uwaga: upewnij się, że urządzenie z systemem Android zostało podłączone w trybie debugowania USB

Otwórz terminal (CTRL + ALT + T) i wprowadź polecenie: lsusb

Teraz możesz dostać podobną odpowiedź na to:
Bus 002 Device 013: ID 283b:1024

Uwaga: W nawiązaniu do tego Bus 002 Device 008: ID 283b:1024
{idVendor}==”283b” {idProduct}==”1024″

Teraz wprowadź następujące polecenie: sudo gedit /etc/udev/rules.d/51-android.rules
Spowoduje to utworzenie pliku reguł systemu android (51-android.rules) lub otwarcie istniejącego w podanej lokalizacji (/etc/udev/rules.d)

Dodaj nowy wiersz do tego pliku:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″

Uwaga Edycja idVendor & idProduct wartości z wartościami urządzenia. Zapisz i zamknij.

Teraz wprowadź następujące polecenie:
sudo chmod a+rx /etc/udev/rules.d/51-android.rules - przyznaj zgodę na odczyt/wykonanie
sudo service udev restart - Uruchom ponownie usługę udev

Teraz musimy dodać idVendor do adb_usb.ini. Wprowadź następujące polecenia:
cd ~/.android
gedit adb_usb.ini

Dodaj następującą wartość 0x283b

To nic innego jak 0x (idVendor wartość). Więc zamień wartość na. szacunek dla wartości urządzenia Zapisz i zamknij plik.

Teraz wprowadź następujące polecenie:
sudo service udev restart

Podłącz urządzenie z Androidem i podłącz je ponownie.
Teraz wprowadź następujące polecenie:
adb kill-server
adb devices

Proszę bardzo! Twoje urządzenie musi być wymienione.

Skopiowane z Ręczne dodawanie Sterownika Android ADB USB w Ubuntu 14.04 LTS

Zadziałało dla mnie.

 3
Author: dc-aoxn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-20 10:55:53
  1. postępuj zgodnie z instrukcjami na http://developer.android.com/guide/developing/device.html
  2. Zamień identyfikator dostawcy " 0bb4 "na" 18d1 " w /etc/udev/rules.d / 51-android.Zasady. Lub dodać kolejną linijkę, która czyta: SUBSYSTEM= = "usb", SYSFS{idVendor}=="18D1", MODE="0666"
  3. Uruchom ponownie komputer lub po prostu uruchom ponownie usługę udev.
 2
Author: krishnendu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-26 10:08:33

Po ponownym uruchomieniu udev, Zabij serwer adb i uruchom ścieżkę instalacji ADB server goto Android sdk i wykonaj wszystko na sudo. następnie uruchom urządzenia adb to rozwiąże problem z uprawnieniami.

 1
Author: Chinthaka Senanayaka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-16 14:37:52

Moje urządzenie to POSITIVO, a mój system operacyjny to Ubuntu 14.04 LTS Więc mój problem był w nazwie zmiennej

Tworzę plik / etc/udev / rules.d / 51-android.Zasady i umieścić SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"

Odłączyłem urządzenie i wykonanie:

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

Po tym podłączyłem urządzenie z Androidem ponownie w trybie deweloperskim i

$ adb devices

List of devices attached 
1A883XB1K   device
 1
Author: luciana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-24 04:50:23

Bez odłączania

Wszystkie odpowiedzi zakładają, że możesz odłączyć i ponownie podłączyć kabel USB. W sytuacjach, w których nie jest to możliwe (np. gdy jesteś zdalny), możesz wykonać następujące czynności, aby zasadniczo zrobić to, co sugerowane reguły udev zrobiłyby przy ponownym podłączeniu:

lsusb

Znajdź urządzenie, na którym ci zależy, np.:

Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus

Zwróć uwagę na numer autobusu, na którym się znajduje, a następnie wykonaj, np. dla autobusu 003:

sudo chmod a+w /dev/bus/usb/003/*

Oczywiście może to być bardziej permisywne niż chcesz (może być więcej urządzeń podłączonych niż tylko ten), ale masz pomysł.

 1
Author: Christian Fritz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-29 16:28:03

Spróbuj zamiast GROUP="plugdev" użyć głównej grupy użytkownika.

 0
Author: Yury,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-09 11:53:45

Społeczność GitHub utrzymywała udev-rules

Https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

Jest to najbardziej kompletna lista udev-rules, jaką do tej pory widziałem, nawet więcej niż obecnie zalecana sudo apt-get install android-tools-adb na oficjalnej dokumentacji , spróbuj.

 0
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-21 21:24:26

Nie powinieneś uruchamiać serwera adb jako root, jak sugerują inne odpowiedzi. Zamiast tego, jeśli używasz Arch Linux, wykonaj następujące czynności:

  1. zainstaluj android-udev pakiet z Pacman
  2. Reload udev rules:

    # udevadm control --reload-rules
    
  3. Dodaj się do grupy adbusers, a następnie wyloguj się i zaloguj:

    # usermod -aG adbusers $LOGNAME
    

Źródło: https://wiki.archlinux.org/index.php/android#Configuring_adb

 0
Author: Babken Vardanyan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-29 06:43:21

Proszę nie stosować rozwiązań sugerujących użycie sudo (sudo adb start-server)! To Uruchom 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 utworzy lub zmodyfikuje plik, może zmienić jego uprawnienia do używania tylko przez roota. Jeszcze raz, nie!

Właściwą rzeczą do zrobienia jest skonfigurowanie systemu tak, aby użytkownik miał uprawnienia, sprawdź ten przewodnik i napisał jak to zrobić poprawnie.

 0
Author: Daniele Segato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-03 08:25:57

W moim przypadku na ubuntu 12.04 LTS musiałem zmienić tryb HTC Incredible usb z charge NA Media i wtedy urządzenie pojawiło się pod adb. Oczywiście debugowanie było już włączone w obu przypadkach.

 -1
Author: Alan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-25 15:04:05

Użyłem su i zaczęło działać. Kiedy używam Jetbrains ze zwykłym użytkownikiem, widzę ten problem, ale po ponownym uruchomieniu Jetbrains w trybie su, mogę zobaczyć moje urządzenie bez robienia czegokolwiek.

Używam Ubuntu 13.04 i Jetbrains 12.1.4

 -1
Author: Deepti Kohli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-23 04:03:50

Możesz również spróbować edytować adb_usb.plik ini , znajdujący się pod adresem /home/username/.android / . Ten plik zawiera listę dostawców ID urządzeń, które chcesz połączyć. Po prostu dodajesz dostawcę identyfikatora urządzenia w nowej linii (jest to jeden identyfikator na linię). Następnie uruchom ponownie serwer adb i ponownie podłącz urządzenie.

U mnie działało na Ubuntu 12.10.

 -1
Author: 10101101,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-20 07:40:48

Jeśli ktoś napotyka następujący komunikat o błędzie podczas używania adb devices

no permissions (verify udev rules); see [http://developer.android.com/tools/device.html]

Wykonaj następujące

sudo -s 
adb kill-server
adb start-server

To naprawiło problem dla mnie na niestandardowym urządzeniu z Androidem

 -2
Author: Ismail Iqbal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-28 16:58:57