Używam telefonu Samsung Galaxy Nexus ( platforma Android 4.0 ).
Tworzę aplikację na system Android na Ubuntu Linux. Chciałbym uruchomić moją aplikację bezpośrednio na urządzeniu telefonu Samsung, dlatego wykonałem następujące kroki konfiguracji:
w moim
AndroidManifest.xml
pliku projektu dodanymandroid:debuggable="true"
do<application>
elementuNa urządzeniu w Ustawienia> Zabezpieczenia włączone Nieznane źródła
Na urządzeniu, w menu Ustawienia> Opcje programistyczne włączono debugowanie USB
Na moim komputerze utworzyłem
/etc/udev/rules.d/51-android.rules
plik o następującej treści:SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev"
Na moim komputerze uruchom
chmod a+r /etc/udev/rules.d/51-android.rules
polecenie
Następnie na komputerze otworzyłem terminal i adb devices
wykonałem polecenie, otrzymałem:
List of devices attached
???????????? no permissions
Ponieważ nie widziałem mojego urządzenia, a jedynie ???????????? no permissions
, uruchamiam następujące polecenia:
adb kill-server
adb start-server
adb devices
Ale wciąż mam:
List of devices attached
???????????? no permissions
Czemu? czego mi brakuje?
plugdev
grupie.Odpowiedzi:
To, co działa dla mnie, to zabić i ponownie uruchomić serwer adb. W systemie Linux:
sudo adb kill-server
a następniesudo adb start-server
. Następnie wykryje prawie każde urządzenie po wyjęciu z pudełka.źródło
-rwxrwxr-x 1 martin martin 156K 2011-11-09 15:40 adb
. Spróbuj przejść bezpośrednio do katalogu i zacząć od „sudo ./adb devices”. Jeśli możesz uruchomić to bez sudo, powinieneś być w stanie uruchomić go z sudo ... Nie jestem pewien, jaki może być twój problem ...adb kill-server
sudo adb start-server
sprawdzić:adb devices
Nic mi nie działało, dopóki nie znalazłem odpowiedzi tutaj: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html
Kopiuję tutaj tekst na wypadek, gdyby zniknął w przyszłości.
Utwórz plik o nazwie /tmp/android.rules z następującą zawartością (szesnastkowe numery dostawców zostały pobrane ze strony listy dostawców):
Uruchom następujące polecenia:
Odłącz kabel USB między telefonem a komputerem.
Ponownie podłącz telefon.
Uruchom,
adb devices
aby potwierdzić, że teraz ma uprawnienia dostępu do telefonu.Należy pamiętać, że można użyć
, USER="$LOGINNAME"
zamiast, MODE="0666"
w.rules
pliku, zastępując$LOGINNAME
swoją nazwę użytkownika, czyli coid -nu
drukuje.W niektórych przypadkach może być konieczne nadanie plikowi reguł udev nazwy, która sortuje się blisko końca, np
z51-android.rules
.źródło
70-android.rules
tym postem: esausilva.com/2010/05/13/… . Również podziękowania za poinformowanie nas, że musisz zrestartowaćudev
i zabić wszystkie procesy adb. Działa jak urok!sudo udevadm control --reload-rules
celu odświeżenia reguł udev, jeśli ponowne uruchomienie serwera nie wystarczy.Wprowadź następujące polecenia:
adb kill-server
sudo ./adb start-server
adb devices
Problem polega na tym, że nie działa serwer adb jako root.
źródło
Próbowałem wszystkich powyższych, żaden nie działał .. w końcu działał, kiedy przełączałem podłączony z MTP na aparat (PTP).
źródło
Istnieje wiele złych odpowiedzi na to pytanie, od nalegania na uruchomienie
adb
jakoroot
(które nie powinno być reklamowane jako jedyne lub nawet zalecane rozwiązanie) po rozwiązywanie całkowicie niezwiązanych problemów.Oto najkrótszy i najbardziej uniwersalny przepis na jednoczesne dbanie o uprawnienia dla wszystkich
adb
ifastboot
urządzeń:Możesz też użyć nieco dłuższej wersji, którą opublikowałem w tym artykule .
Jeśli chodzi o konkretną rzecz, którą OP popełnił źle w swoim pytaniu - nie przeładowywanie
udev
reguł po edycji.rules
pliku.Również OP nie powiedział, którą wersję Androida (czyli ROM) ma na swoim telefonie.
idVendor
Wartość jest ustawiona w oprogramowaniu i dlatego zależy ROM. Tak więc wartość04E8
użyta w jego oryginalnej regule działałaby tylko dla urządzeń z fabrycznymi ROMami Samsunga. Nie stanowi to jednak problemu w przypadku tejudev
reguły - pasuje ona do wszystkich urządzeń z interfejsamiadb
lubfastboot
niezależnie od ich ID dostawcy .źródło
W Archlinux może się to zdarzać czasami. Poprawka:
źródło
sudo adb kill-server; sudo adb start-server
nie działał, ale ten zadziałał.Dla tych, którzy używają Debiana, przewodnik konfiguracji urządzenia w systemie Ubuntu w celu utworzenia pliku „/etc/udev/rules.d/51-android.rules” nie działa. Postępowałem zgodnie z instrukcjami stąd . Odkładam to samo tutaj w celach informacyjnych.
Edytuj ten plik jako administrator
Znajdź tekst podobny do tego
Następnie zmień tryb na 0666 jak poniżej
Pozwala to na działanie adb, jednak wciąż musimy skonfigurować urządzenie, aby można je było rozpoznać. Musimy utworzyć ten plik jako administrator,
i wejdź
powyższa linia dotyczy HTC, postępuj zgodnie z postem @ grebulon, aby uzyskać pełną listę.
Zapisz plik, a następnie uruchom ponownie udev jako superużytkownik
Podłącz telefon przez USB i powinien zostać wykryty podczas kompilacji i uruchamiania projektu.
źródło
Miałem ten sam problem, rozwiązanie jest takie samo: (nawiasem mówiąc, nie musisz rootować urządzenia).
Cieszyć się.
źródło
su
, użyjsudo su
. Zrobiłem. A także, jeśli nie wiesz, jak zamknąć użytkownika - użyjexit
.Wiem, że to może być trochę za późno, ale tutaj jest bardzo dobry artykuł na temat ręcznego dodawania sterownika Android ADB USB. Ręczne dodawanie sterownika USB Android ADB w Ubuntu 14.04 LTS
Edytowano, aby dodać treść linku
Kroki
Uwaga: Upewnij się, że urządzenie z Androidem zostało podłączone w trybie debugowania USB
Otwórz terminal (
CTRL + ALT + T
) i wprowadź polecenie:lsusb
Teraz możesz otrzymać podobną odpowiedź na to:
Bus 002 Device 013: ID 283b:1024
Uwaga: W związku z tym
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 pliku w określonej lokalizacji (/etc/udev/rules.d
)Dodaj nową linię do tego pliku:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″
Uwaga Edytuj
idVendor
iidProduct
wartości z wartościami urządzenia. Zapisz i zamknij.Teraz wprowadź następującą komendę:
sudo chmod a+rx /etc/udev/rules.d/51-android.rules
- udziel uprawnienia do odczytu / wykonaniasudo service udev restart
- Uruchom ponownieudev
usługęTeraz musimy dodać
idVendor
doadb_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. w odniesieniu do 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 znajdować się na liście.
Skopiowano z ręcznego dodawania sterownika Android ADB USB w systemie Ubuntu 14.04 LTS
Pracował dla mnie.
źródło
Miałem ten sam problem z moim Galaxy S3. Mój problem polegał na tym, że
idVendor
wartość04E8
nie była właściwa. Aby znaleźć właściwy, podłącz smartfon do komputera i uruchomlsusb
terminal. Spowoduje to wyświetlenie Twojego smartfona w następujący sposób:Tak więc właściwą
idVendor
wartością jest18d1
. A wiersz w/etc/udev/rules.d/51-android.rules
musi być:Potem biegnę
sudo udevadm control --reload-rules
i wszystko działa!źródło
ATTR{idVendor}=="18d1"
Skorzystaj z
M0Rf30/android-udev-rules
utrzymywanych reguł udev społeczności GitHubhttps://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 i rozwiązała ten problem dla mnie.źródło
Wymienić id sprzedawca
0bb4
z18d1
w/etc/udev/rules.d/51-android.rules
Lub dodaj kolejny wiersz o treści:
źródło
Po ponownym uruchomieniu udev, zabij serwer adb i uruchom serwer adb goto ścieżka instalacji sdk dla systemu Android i wykonaj wszystko na sudo. następnie uruchom urządzenia adb, rozwiąże to problem z uprawnieniami.
źródło
Moje urządzenie to POSITIVO, a mój system operacyjny to
Ubuntu 14.04 LTS
Tak, mój problem dotyczył zmiennej nazwyTworzę plik /etc/udev/rules.d/51-android.rules i umieszczam
SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"
Odłączyłem urządzenie i wykonałem:
po tym ponownie podłączyłem urządzenie z Androidem w trybie programisty i
źródło
Bez odłączania
Wszystkie podane 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 sugerują reguły udev po ponownym podłączeniu:
Znajdź urządzenie, na którym Ci zależy, np .:
Zanotuj numer autobusu, na którym jest włączony, a następnie wykonaj np. Dla magistrali
003
:Oczywiście może to być bardziej liberalne niż chcesz (może być podłączonych więcej urządzeń niż tylko jedno), ale masz pomysł.
źródło
udev
regułę bez ponownego podłączania urządzenia, wystarczy użyćudevadm trigger --verbose --action=add --subsystem-match=usb
polecenia.NIE powinieneś uruchamiać
adb
serwera jako root, jak sugerują inne odpowiedzi. Zamiast tego, jeśli korzystasz z Arch Linux, wykonaj następujące czynności:android-udev
pakiet za pomocą PacmanaPrzeładuj reguły udev:
Dodaj się do
adbusers
grupy, a następnie wyloguj się i zaloguj:Źródło: https://wiki.archlinux.org/index.php/android#Configuring_adb
źródło
Spróbuj zamiast
GROUP="plugdev"
korzystać z głównej grupy użytkownika.źródło
W moim przypadku na Ubuntu 12.04 LTS musiałem zmienić tryb USB Incredible HTC z ładowania na Media, a następnie urządzenie pojawiło się pod adb. Oczywiście debugowanie było już włączone w obu przypadkach.
źródło
Proszę NIE śledzić rozwiązań sugerujących do użytku
sudo
(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.
źródło
Miałem ten sam problem i wykonałem następujące kroki:
Powyższe kroki opisano w regułach Androida-udev . To zadziałało dla mnie.
Pamiętaj tylko o potwierdzeniu okna dialogowego, które pojawi się na ekranie telefonu po jego ponownej instalacji.
źródło
To polecenie działało dla mnie
źródło
Użyłem su i zaczęło działać. Kiedy korzystam z Jetbrains ze zwykłym użytkownikiem, widzę ten problem, ale po ponownym uruchomieniu Jetbrains w trybie su, widzę moje urządzenie bez żadnego działania.
Używam Ubuntu 13.04 i Jetbrains 12.1.4
źródło
Możesz także spróbować edytować plik adb_usb.ini , znajdujący się w /home/username/.android/ . Ten plik zawiera listę dostawców identyfikatorów urządzeń, które chcesz podłączyć. Wystarczy dodać dostawcę identyfikatora urządzenia w nowej linii (jest to jeden identyfikator w linii). Następnie uruchom ponownie serwer adb i ponownie uruchom urządzenie.
Działa dla mnie na Ubuntu 12.10.
źródło
W każdym razie, co zrobiłem, aby rozwiązać ten problem (na Ubuntu ).
Zdefiniowane w jakich przypadkach muszę uruchomić te polecenia. Dla większości użytkowników Ubuntu istnieje folder domowy (ukryty plik
.bashrc
).W którym można nagrać uruchomienie tych poleceń. Ale te polecenia będą uruchamiane po wprowadzeniu
bash
polecenia w konsoli.Ponieważ mam powłokę .zshrc, wykonałem następujące czynności:
otwarta konsola:
gedit .zshrc
Po otwarciu pliku dodaj następujący wiersz:
Po lub przedtem musimy utworzyć ten plik:
.add_device_permissions.sh
w którym napiszemy:Musimy także utworzyć .permissions_redmi_note, gdzie musimy na stałe zakodować nasze hasło.
.zshrc
niepotrzebnego, możemy określić ścieżkę podczas uruchamiania samego systemu:Startup Applications Preferences
Tam, gdzie wciskamy „Dodaj” i piszemy nasze polecenie:
/home/vadimm/.add_device_permissions.sh
./adb devices ./adb kill-server sudo ./adb devices ./adb kill-server ./adb devices
źródło
Jeśli ktoś napotka następujący komunikat o błędzie podczas korzystania
adb devices
Wykonaj następujące czynności
To rozwiązało problem na moim niestandardowym urządzeniu z Androidem
źródło