Jak skonfigurować dostęp ADB dla urządzeń z Androidem?


39

Używam Ubuntu 12.10 i zainstalowałem Android SDK, ustaw ścieżkę dla mojego użytkownika .bashrci działa.

Problem polega na tym, że mój telefon wymaga uruchamiania adb przez rootowanie w celu uzyskania uprawnień, ale uruchamiając adb z sudo, pojawia się następujący błąd:

sudo: adb: nie znaleziono polecenia

Próbowałem po prostu użyć sudo -E adb start-server, ale to nie działa. Próbowałem dodać linię ścieżki eksportu do /root/.bashrci (po uświadomieniu sobie, że to nie pomogło) do /etc/bash.bashrc.

Pamiętam, że mogłem ustawić go na moim Arch Linux, ale wydaje mi się, że mój problem jest teraz połączony z kontem root Ubuntu, nie zachowując się tak, jak tego oczekuję.


To, czego nie rozumiem, to:

Te nie działają:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

Robi to (wpisując pełną ścieżkę):

martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
CM7-Blade   device

To nie działa (użycie -E z sudo):

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

Działa to (jako root):

martin@alyx:~$ sudo su
root@alyx:/home/martin# adb devices
List of devices attached 
CM7-Blade   device

Jestem teraz całkowicie zdezorientowany i doceniam wyjaśnienie, w jaki sposób ustawić ścieżkę do sudo lub jak inaczej rozwiązać mój problem.

(I proszę, nie mów, że adb nie powinien być uruchamiany jako root).

Z góry dziękuję!

Edycja: Wymagając uprawnień roota mam na myśli, że ich potrzebuję, ponieważ w przeciwnym razie otrzymuję:

$ adb devices 
List of devices attached 
????????????    no permissions

co nie występuje jako superużytkownik. Przepraszam, jeśli to było nieporozumienie.


Zauważyłem, zarówno w systemie Windows, jak i Ubuntu, że urządzenia z Androidem często się nie pojawiają, jeśli masz je podłączone do portu USB 3, podłączenie ich do portu innego niż USB3 łagodzi problem.
— Paul Gregoire,

Odpowiedzi:


48

Przeczytaj najpierw: Jak skonfigurować Android ADB?


Konfigurowanie dostępu USB

Po pierwsze, nie potrzebujesz uprawnień administratora, aby uruchomić ADB, jeśli odpowiednio ustawiłeś uprawnienia. Witryna AOSP zawiera przykłady konfiguracji dostępu USB dla urządzeń Pixel / Nexus. Możesz użyć następującego schematu dla urządzeń innych niż Nexus:

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER="<username>"

Identyfikator dostawcy i produktu można uzyskać, korzystając lsusbz urządzenia i wyszukując je. (Uwaga: urządzenie to w rzeczywistości Galaxy Nexus.)

$ lsusb | grep -i samsung
Bus 002 Device 103: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II]

Więc moja /etc/udev/rules.d/51-android.ruleszasada udev wygląda następująco:

# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="username"

W razie potrzeby możesz to powtórzyć dla innych stanów telefonu, takich jak fastboot. Aby zmiany odniosły skutek, należy ponownie załadować udev ( sudo udevadm control --reload) lub uruchomić ponownie (zalecane).

Udostępnianie programów

Zamiast modyfikować zmienną ścieżkową sugerowałbym dodanie dowiązania symbolicznego do pliku wykonywalnego albo w ~/bin/(tylko użytkownik), albo w /usr/local/bin/(cały system).

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/

1
Próbowałem dodać reguły udev do mojego telefonu, ale to nie pomogło, więc pomyślałem, że może nie byłem pewien swojego problemu. Proszę, jeśli masz czas, zobacz koniec mojego pytania.
— Martin Fejes,

Czy dodałeś poprawne identyfikatory? modaco.com/topic/329317-guide-ubuntu-and-the-blade Czy uruchomiłeś ponownie komputer? adb devicesdziała dla mnie bez uprawnień roota.
— LiveWireBT

4
Tak, to działa! Dodałem reguły udev do /etc/udev/rules.d/51-android-rules i najwyraźniej to był błąd. Po użyciu /lib/udev/rules.d/11-android.rules wszystko było w porządku! Nie potrzebuję persymulacji roota! Wielkie dzięki!
— Martin Fejes,

Miałem to samo ????????????? brak sytuacji z pozwoleniami, a twoja odpowiedź rozwiązała to, dzięki.
— Panthro

z jakiegoś powodu to tutaj nie działało, musiałem uruchomić serwer adb z sudo; jakiś pomysł, gdzie mogę sprawdzić, dlaczego to nie działa?
— Wodnik Moc

29

Natknąłem się na ten sam problem z tabletem z Chin (jakiś dziwny producent).

Oprócz /etc/udev/rules.d/51-android.rulespliku musiałem również zmienić ~/.android/adb_usb.ini.

Uruchom poniżej na terminalu;

sudo gedit ~/.android/adb_usb.ini

a twój adb_usb.iniplik powinien wyglądać następująco:

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
# ie 0x2207
0x<!!!Your Vendor ID here!!!>

Odłączone i ponownie podłączone urządzenie, a także potrzebne do uruchomienia poniżej poleceń na terminalu;

adb kill-server

a potem

adb start-server

I urządzenie zostało wykryte.


Próbowałem też z twoją wskazówką, ale nic się nie zmieniło, jakiś pomysł, gdzie mogę sprawdzić, dlaczego tutaj nie działa?
— Wodnik Moc

Niezłe. To działało dla mnie. Oprócz tego musiałem zaktualizować mój adb .
— Waffle's Crazy Peanut

To rozwiązanie nie działa w systemie Ubuntu 14.04. Lista urządzeń wciąż jest pusta.
— Luís de Sousa

1
Wielkie dzięki, Uygar, w końcu znalazłem rozwiązanie, które działa dla mnie.
— Dmitrij Popow

Tego mi brakowało. W 0x2207twoim przykładzie jest to ten sam identyfikator dostawcy, którego używa moje urządzenie.
— ssokolow

2

W moim przypadku zamiast trybu MTP niektóre smartfony musiały być po prostu ustawione w trybie PTP, w przeciwieństwie do większości urządzeń, które wymagały wykrycia trybu MTP w moim Android Studio (wersja 1.5.1).

Więc najpierw wypróbuj tryby MTP i PTP bez potrzeby poświęcania czasu na bardziej złożoną konfigurację ADP Uniksa i być może wyrządzając im szkodę.

W nowszych urządzeniach możesz wybrać go bezpośrednio w opcjach programistycznych, podczas gdy w starszych znajduje się w opcjach połączonych USB na pasku stanu.

Jednak także dla mnie najnowsze urządzenia Sony Xperia od Z5 i wyższych nie będą działać bez względu na tryb USB. Być może moje Android Studio jest stare lub muszę kopać również w Uniksowych konfiguracjach ADP.


1

Wykonaj następujące kroki:

  1. Ustaw zmienne Androida

    Początkowo przejdź do domu i naciśnij Ctrl+ Hpokaże ci ukryte pliki, poszukaj .bashrcpliku, otwórz go w dowolnym edytorze tekstu, a następnie umieść poniższe linie na końcu pliku:

    export ANDROID_HOME=/myPathSdk/android-sdk-linux
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    
  2. Restart

  3. Za pomocą urządzenia do debugowania

    Nasłuchuj połączenia:

    adb -a
    

    Podłącz swoje urządzenie z Androidem i autoryzuj je:

    cordova run android --device
    

0

Konfigurowanie dostępu USB

Zalecanym podejściem jest utworzenie pliku w /etc/udev/rules.d/51-android.rules.

Proszę wpisać Terminal:

wget -S -O - http://source.android.com/source/51-android.txt | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

Te nowe reguły obowiązują przy następnym podłączeniu urządzenia. Może być zatem konieczne odłączenie urządzenia i ponowne podłączenie go do komputera.


0

Mimo że zaakceptowana odpowiedź pomogła mi załatwić sprawę, nadal byłem zdezorientowany:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

a szczególnie

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

ponieważ zgodnie z sudo --help:

-E, --preserve-env          preserve user environment when running command

Okazuje się, że w wielu dystrybucjach linuksowych (w tym Debian i Ubuntu) secure_pathi env_resetopcje są domyślnie włączone, co resetuje PATHzmienną i ustawia ją na secure_path. Możesz to zmienić w /etc/sudoerspliku za pomocą visudo.

Alternatywnie możesz uruchomić:

sudo env PATH=$PATH adb devices

-1

Wypróbuj to polecenie: sudo tools/android update sdk --no-ui

CZYTNIK SDK:

Witamy w pakiecie Android SDK! Archiwum zestawu SDK systemu Android początkowo zawiera tylko podstawowe narzędzia zestawu SDK. Nie zawiera platformy Android ani bibliotek stron trzecich. W rzeczywistości nie ma nawet wszystkich narzędzi potrzebnych do opracowania aplikacji. Aby rozpocząć tworzenie aplikacji, musisz zainstalować narzędzia platformy i co najmniej jedną wersję platformy Android, używając Menedżera SDK. Platform-tools zawiera narzędzia do budowania, które są okresowo aktualizowane w celu obsługi nowych funkcji na platformie Android (dlatego są one oddzielone od podstawowych narzędzi SDK), w tym adb, dexdump i innych. Aby zainstalować narzędzia platformy, platformy Android i inne dodatki, musisz mieć połączenie z Internetem, więc jeśli planujesz używać zestawu SDK w trybie offline, pobierz niezbędne komponenty w trybie online. Aby uruchomić Menedżera SDK, uruchom program „Android”. Z wiersza polecenia można również bezpośrednio uruchomić aktualizację, wykonując:tools/android update sdk --no-ui


Nie jestem pewien, czy dotyczy to pierwotnego pytania ...
— landroni
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.