Warum brauchen wir Kies (ADB-Treiber) unter Windows, aber nicht unter Linux?

11

Warum brauchen wir einen ADB-Treiber unter Windows, aber nicht unter Linux?

Ich habe in den letzten Monaten unter Windows an Android gearbeitet. Um mein Projekt auf meinem Samsung-Gerät auszuführen, musste ich zuerst Kies installieren. Ebenso gibt es für mein LG-Gerät einen LG ADB-Treiber und einen weiteren für HTC.

Als ich kürzlich zu Ubuntu Linux wechselte, benötigte ich keine anderen Treiber wie Kies und ADB. Ich konnte direkt ohne Treiber eines Drittanbieters debuggen. Warum das?

Ich weiß, dass es etwas sehr Häufiges ist, aber ich habe nichts gefunden, was erklärt, warum dies der Fall ist.

hemantsb
quelle
Update # 2 zu meiner Antwort hinzugefügt
Geffchang

Antworten:

5

Chor WaiChun erwähnte dies in einer gesperrten Frage, die Sie auf StackOverflow gepostet haben :

Ich habe irgendwo festgestellt, dass dieses Verhalten darauf zurückzuführen ist, dass sowohl Android als auch Linux auf demselben Kernel ausgeführt werden und die gleiche Situation für die Entwicklung von Android auf einem Mac gilt. Beide Betriebssysteme laufen in einem sehr ähnlichen Betriebssystemkernel mit Android, weshalb sie keine Treiber benötigen. Dies ist nur etwas, an das ich mich erinnerte, als ich es aus anderen Threads gesehen habe

UPDATE 1: Die Android-Site erwähnt dies auch:

Wenn Sie unter Windows entwickeln und ein Android-Gerät anschließen möchten, um Ihre Anwendungen zu testen, müssen Sie den entsprechenden USB-Treiber installieren. ...

Wenn Sie unter Mac OS X oder Linux entwickeln, müssen Sie wahrscheinlich keinen USB-Treiber installieren. Informationen zum Entwickeln mit Ihrem Gerät finden Sie unter Verwenden von Hardwaregeräten.

UPDATE 2: Es gibt einen Kommentar zu StackOverflow bezüglich libusb. Ich denke, dies könnte der Grund sein, warum Linux keine zusätzlichen Treiber benötigt.

Tatsächlich greift adb unter Linux mit libusb ohne einen bestimmten Kerneltreiber auf USB-Geräte zu. Außerdem verfügt adb über eine Liste von Hersteller-IDs, die verwendet werden dürfen. Dies erklärt jedoch nicht das betreffende Problem, da die Hersteller-IDs für beide Telefone identisch sind. Und bei Berechtigungsproblemen aufgrund fehlender udev-Regeln zeigen adb-Geräte eindeutig "keine Berechtigungen" in der Liste an, sodass dies auch nicht die Ursache für dieses Problem ist.

geffchang
quelle
meine frage ist warum? Haben Sie einige Links und alles, damit ich eine vollständige Vorstellung davon bekomme, +1 für die Antwort!
Hemantsb
0

Ich bin mir nicht sicher, warum Linux normalerweise keinen bestimmten ADB-Treiber benötigt.

Es gibt jedoch einen "universellen" Windows USB ADB-Treiber, der mit den meisten Android-Geräten funktioniert. Es wurde von Koushik Dutta (Koush) entwickelt, einem berühmten Android-Entwickler, der an ClockworkMod arbeitet. Es sollte ganz gut für Sie funktionieren. Hier herunterladen: http://koush.com/post/universal-adb-driver

Neil Schaper
quelle
Ich denke, Sie haben meine Frage falsch verstanden. Meine Frage ist, warum dieses Verhalten vorliegt. Und ich kenne den universellen ADB-Treiber.
Hemantsb
0

Wie andere bereits geantwortet haben, gibt es unter Linux einen gemeinsamen USB-Treiber, den adb verwendet. Es scheint, dass es in Windows keinen gemeinsamen USB-Treiber gibt, daher verwendet adb den "bereitgestellten" Treiber - für jedes Gerät / Hersteller unterschiedlich.

miko
quelle
1
In Windows ist kein universeller Treiber vorinstalliert . Es gibt jedoch eine, wie Neil betonte . Auf der anderen Seite: Es gibt kein Kies unter Linux, daher benötigen Sie keinen Kies-Treiber #D
Izzy