Wie konfiguriere ich den ADB-Zugang für Android-Geräte?

39

Ich verwende Ubuntu 12.10 und habe Android SDK installiert, den Pfad in meinem Benutzer festgelegt .bashrcund es funktioniert.

Das Problem ist, dass mein Telefon erfordert, dass adb von root ausgeführt wird, um Berechtigungen zu erhalten. Beim Ausführen von adb mit sudo wird jedoch die folgende Fehlermeldung angezeigt:

sudo: adb: befehl nicht gefunden

Ich habe versucht, einfach zu verwenden sudo -E adb start-server, aber es funktioniert nicht. Es wurde versucht, die Exportpfadzeile zu /root/.bashrcund (nachdem festgestellt wurde, dass dies nicht geholfen hat) zu hinzuzufügen /etc/bash.bashrc.

Ich erinnere mich, dass ich es auf meinem Arch Linux einstellen konnte, aber ich vermute, dass mein Problem jetzt mit dem Ubuntu-Root-Konto verbunden ist und sich nicht so verhält, wie ich es erwartet habe.


Was ich nicht verstehe, ist das Folgende:

Diese funktionieren nicht:

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

Dies funktioniert (Eingabe des vollständigen Pfads):

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

Dies funktioniert nicht (mit -E mit sudo):

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

Das funktioniert (als root):

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

Ich bin jetzt total verwirrt und würde es begrüßen, wenn ich kläre, wie ich einen Pfad für sudo festlegen oder wie ich sonst mein Problem lösen könnte.

(Und bitte, sag nicht, dass adb nicht als root ausgeführt werden soll.)

Danke im Voraus!

Bearbeiten: Mit root-Berechtigungen meine ich, dass ich sie brauche, weil ich sonst Folgendes bekomme:

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

was nicht als Superuser auftritt. Entschuldigung, wenn es ein Missverständnis war.

Martin Fejes
quelle
Ich habe sowohl bei Windows als auch bei Ubuntu festgestellt, dass Android-Geräte häufig nicht angezeigt werden, wenn sie an einen USB-3-Anschluss angeschlossen sind. Wenn Sie sie an einen Nicht-USB-3-Anschluss anschließen, wird das Problem behoben.
Paul Gregoire
Aus den Dokumenten: source.android.com/source/…
Paschalis

Antworten:

48

Bitte lesen Sie zuerst Folgendes: Wie richte ich Android ADB ein?


USB-Zugang konfigurieren

Erstens benötigen Sie keine Root-Berechtigungen, um ADB auszuführen, wenn Sie die Berechtigungen entsprechend festgelegt haben. Die AOSP-Site enthält Beispiele für die Konfiguration des USB-Zugriffs für Pixel / Nexus-Geräte. Sie können das folgende Schema für Nicht-Nexus-Geräte verwenden:

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

Die Hersteller- und Produkt-ID erhalten Sie, indem Sie lsusbIhr Gerät verwenden und nach ihm suchen. (Hinweis: Das Gerät ist eigentlich ein Galaxy Nexus.)

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

Meine /etc/udev/rules.d/51-android.rulesudev-Regel sieht also so aus:

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

Möglicherweise möchten Sie dies bei Bedarf für die anderen Telefonzustände wie Fastboot wiederholen. Damit die Änderungen wirksam werden, müssen Sie entweder udev ( sudo udevadm control --reload) neu laden oder neu starten (empfohlen).

Programme zur Verfügung stellen

Anstatt die Pfadvariable zu ändern, würde ich vorschlagen, der ausführbaren Datei entweder in ~/bin/(nur Benutzer) oder in /usr/local/bin/(systemweit) einen symbolischen Link hinzuzufügen .

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/
LiveWireBT
quelle
1
Ich habe versucht, die udev-Regeln für mein Telefon hinzuzufügen, aber das hat nicht geholfen. Ich dachte, ich wäre mir nicht sicher, was mein Problem ist. Bitte, wenn Sie die Zeit haben, sehen Sie das Ende meiner Frage.
Martin Fejes
Haben Sie die richtigen IDs hinzugefügt? modaco.com/topic/329317-guide-ubuntu-and-the-blade Haben Sie Ihre Maschine danach neu gestartet? adb devicesfunktioniert bei mir ohne root-rechte.
LiveWireBT
4
Ja, es funktioniert! Ich habe die udev-Regeln zu /etc/udev/rules.d/51-android-rules hinzugefügt und anscheinend war es ein Fehler. Nach der Verwendung von /lib/udev/rules.d/11-android.rules war alles in Ordnung! Ich brauche keine root persmissions! Danke vielmals!
Martin Fejes
Hatte das gleiche ??????????? Keine Berechtigungssituation und deine Antwort hat es gelöst, danke.
Panthro
aus irgendeinem grund funktionierte es hier nicht, ich musste den adb server mit sudo starten; Irgendeine Idee, wo könnte ich nachsehen, warum es nicht funktioniert hat?
Aquarius Power
29

Ich bin mit einem Tablet aus China (einem seltsamen Hersteller) auf dasselbe Problem gestoßen.

Zusätzlich zur /etc/udev/rules.d/51-android.rulesDatei musste ich auch ändern ~/.android/adb_usb.ini.

Laufen Sie unten am Terminal;

sudo gedit ~/.android/adb_usb.ini

und Ihre adb_usb.iniDatei sollte so aussehen:

# 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!!!>

Getrenntes und erneut verbundenes Gerät, muss auch unter den Befehlen auf dem Terminal ausgeführt werden.

adb kill-server

und danach

adb start-server

Und das Gerät wurde erkannt.

Uygar Y.
quelle
Ich habe es auch mit deinem Tipp versucht, aber nichts hat sich geändert. Irgendeine Idee, wo ich nachsehen könnte, warum es hier nicht funktioniert hat?
Aquarius Power
Schön. Das hat bei mir geklappt. Gleichzeitig musste ich meine adb aktualisieren .
Waffel Crazy Peanut
Diese Lösung funktioniert nicht unter Ubuntu 14.04. Die Liste der Geräte ist noch leer.
Luís de Sousa
1
Vielen Dank, Uygar, endlich habe ich die Lösung gefunden, die für mich funktioniert.
Dmitry Popov
Das habe ich vermisst. Tatsächlich ist 0x2207in Ihrem Beispiel die gleiche Hersteller-ID, die mein Gerät verwendet.
Ssokolow
2

In meinem Fall mussten einige Smartphones anstelle des MTP-Modus nur in den PTP-Modus versetzt werden, im Gegensatz zu den meisten Geräten, bei denen der MTP-Modus von meinem Android Studio (v1.5.1) erkannt werden musste.

Probieren Sie also zuerst den MTP- und den PTP-Modus aus, bevor Sie Zeit mit der komplexeren ADP-Konfiguration von Unix verbringen und diese möglicherweise beschädigen.

Bei neueren Geräten können Sie es direkt in den Dev-Optionen auswählen, während es sich bei älteren Geräten in den USB Connected Options in der Statusleiste befindet.

Aber auch für mich funktionieren die neuesten Sony Xperia-Geräte ab Z5 nicht, egal im USB-Modus. Vielleicht ist mein Android Studio alt oder ich muss auch mit den Unix-ADP-Konfigurationen graben.

George Goodporter
quelle
1

Folge diesen Schritten:

  1. Android vars einstellen

    Gehen Sie zunächst zu Ihrem Zuhause und drücken Sie Ctrl+. HEs zeigt Ihnen, dass versteckte Dateien jetzt nach Dateien suchen .bashrc. Öffnen Sie sie mit einem beliebigen Texteditor und platzieren Sie die folgenden Zeilen am Ende der Datei:

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

  3. Verwenden des Geräts zum Debuggen

    Auf Verbindung warten:

    adb -a
    

    Verbinden Sie Ihr Android-Gerät und autorisieren Sie es:

    cordova run android --device
    
Vladimir Tamayo
quelle
0

USB-Zugang konfigurieren

Der empfohlene Ansatz besteht darin, eine Datei unter zu erstellen /etc/udev/rules.d/51-android.rules.

Bitte geben Sie das Terminal ein:

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

Diese neuen Regeln werden beim nächsten Anschließen eines Geräts wirksam. Daher muss das Gerät möglicherweise vom Computer getrennt und wieder an den Computer angeschlossen werden.

Benny
quelle
0

Obwohl die akzeptierte Antwort mir dabei half, Dinge zu erledigen, war ich dennoch verwirrt über:

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

und speziell

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

seit nach sudo --help:

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

Es stellt sich heraus, dass auf vielen Linux-Distributionen (einschließlich Debian und Ubuntu) secure_pathund env_resetOptionen standardmäßig aktiviert sind, wodurch Ihre PATHVariable zurückgesetzt und auf gesetzt wird secure_path. Sie können es /etc/sudoersmit visudo in der Datei ändern.

Alternativ können Sie Folgendes ausführen:

sudo env PATH=$PATH adb devices
maxnorbi
quelle
-1

Versuchen Sie diesen Befehl: sudo tools/android update sdk --no-ui

SDK README:

Willkommen zum Android SDK! Das Android SDK-Archiv enthält zunächst nur die grundlegenden SDK-Tools. Es enthält keine Android-Plattform oder Bibliotheken von Drittanbietern. Tatsächlich verfügt es nicht über alle Tools, die Sie zum Entwickeln einer Anwendung benötigen. Um mit der Entwicklung von Anwendungen zu beginnen, müssen Sie die Plattform-Tools und mindestens eine Version der Android-Plattform mithilfe des SDK-Managers installieren. Plattform-Tools enthalten Build-Tools, die regelmäßig aktualisiert werden, um neue Funktionen in der Android-Plattform zu unterstützen (weshalb sie nicht mit den grundlegenden SDK-Tools identisch sind), darunter adb, dexdump und andere. Um Plattform-Tools, Android-Plattformen und andere Add-Ons zu installieren, müssen Sie über eine Internetverbindung verfügen. Wenn Sie das SDK also offline verwenden möchten, müssen Sie die erforderlichen Komponenten herunterladen, während Sie online sind. Um den SDK Manager zu starten, führen Sie bitte das Programm "android" aus. Über die Befehlszeile können Sie ein Update auch direkt auslösen, indem Sie Folgendes ausführen:tools/android update sdk --no-ui

user121040
quelle
Ich bin nicht sicher, ob dies die ursprüngliche Frage anspricht ...
Landroni