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:-
W moim projekcie
AndroidManifest.xml
Plik, dodanyandroid:debuggable="true"
do elementu<application>
Na urządzeniu, w Settings > Security enabled Unknown sources
Na urządzenie, w Settings > Developer options enabled debugowanie USB
-
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"
-
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?
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.
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
.
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.
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).
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.
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
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.
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.)
- wpisz "su", aby przełączyć się na "super user".
- your-path/ADB kill-server.
- your-path/adb start-server.
- Jeśli nie wystąpi błąd, możesz zobaczyć listę urządzeń z "your-path / ADB devices" w koncie root.
- Quit super user.
- Teraz możesz wykonać "urządzenia adb" na swoim koncie.
Enjoy.
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!
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
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.
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
- postępuj zgodnie z instrukcjami na http://developer.android.com/guide/developing/device.html
- 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" Uruchom ponownie komputer lub po prostu uruchom ponownie usługę udev.
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.
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
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ł.
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.
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.
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:
- zainstaluj
android-udev
pakiet z Pacman -
Reload udev rules:
# udevadm control --reload-rules
-
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
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.
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.
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
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.
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
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