Jak mogę połączyć się z Androidem za pomocą ADB przez TCP? [Zamknięte]

879

Próbuję debugować aplikację na telefonie Motorola Droid , ale mam problemy z połączeniem się z urządzeniem przez USB. Mój serwer programistyczny to 64-bitowa maszyna wirtualna z systemem Windows 7 działająca w Hyper-V , więc nie mogę połączyć się bezpośrednio przez USB w gościu lub z hosta.

Zainstalowałem kilka różnych rozwiązań USB-over-TCP, ale wydaje się, że połączenie ma problemy, ponieważ monitor ADB zgłasza, że ​​„urządzenie devicemonitor nie rozpoczęło monitorowania” wielokrotnie. Czy istnieje sposób połączenia bezpośrednio z klienta na maszynie programistycznej z demonem na urządzeniu za pomocą sieci zamiast połączenia USB lub innych wykonalnych opcji?

JDM
źródło
75
Po podłączeniu przez USB: adb tcpip 5555. Odłącz USB, wyświetl adres IP telefonu Settings > About Phone > Status. Teraz adb connect 192.168.x.xi to wszystko. Bez narzędzi, bez oprogramowania. Po prostu działa.
andreszs
1
To, co powiedział Andrew - są to oficjalne instrukcje ze strony Google dla programistów Androida , bez konieczności rootowania. Właśnie pracowałem na moim nierootowanym telefonie HTC Desire 810 (oczywiście wymaga włączenia opcji dla programistów).
Jeff Ward,
Jeśli usługa adb działa na porcie 5037, to dlaczego lokalizuje urządzenia w zakresie od 5555 do 5585?
Shivam Aggarwal,
@Andrew Czy mogę używać aplikacji, takich jak ten , aby otworzyć i zamknąć otwór bez komputera na Nexusie 6 bez dostępu administratora? Niepokoją mnie kwestie bezpieczeństwa, które mogą wyniknąć z pozostawienia portu 5555 otwartego, gdy jestem w sieci publicznej i nie używam telefonu do programowania.
DaveTheMinion

Odpowiedzi:

1205

Proces ręczny

Z urządzenia, jeśli jest zrootowane

Zgodnie z postem na XDA-Developers , możesz włączyć ADB przez Wi-Fi z urządzenia za pomocą poleceń:

su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

Możesz go wyłączyć i przywrócić ADB do słuchania na USB za pomocą

setprop service.adb.tcp.port -1
stop adbd
start adbd

Z komputera, jeśli masz już dostęp USB (nie wymaga rootowania)

Jeszcze łatwiej jest przejść na Wi-Fi, jeśli masz już USB. Z wiersza poleceń na komputerze, do którego podłączone jest urządzenie przez USB, wydaj polecenia

adb tcpip 5555
adb connect 192.168.0.101:5555

Zastąp 192.168.0.101adres IP, który jest faktycznie przypisany do twojego urządzenia. Po zakończeniu możesz rozłączyć się z sesją adb tcp, uruchamiając:

adb disconnect 192.168.0.101:5555

Adres IP tabletu można znaleźć na dwa sposoby:

Ręczne wykrywanie adresu IP:

Przejdź do ustawień WiFi Androida, kliknij przycisk menu na pasku akcji (pionowa elipsa), naciśnij Zaawansowane i zobacz adres IP u dołu ekranu.

Użyj ADB, aby odkryć IP:

Wykonaj następujące polecenie za pomocą adb:

adb shell ip -f inet addr show wlan0

Informowanie demona ADB o powrocie do słuchania przez USB

adb usb

Aplikacje do automatyzacji procesu

Istnieje również kilka aplikacji w Google Play, które automatyzują ten proces. Szybkie wyszukiwanie sugeruje adbWireless , WiFi ADB i ADB WiFi . Wszystkie wymagają dostępu do konta root, ale adbWireless wymaga mniejszej liczby uprawnień.

Brian
źródło
3
Czy potrzebujesz do tego dostępu root? Wydaje mi się, że mogę uruchamiać polecenia za pomocą terminala, ale tak naprawdę to nie działa ...
JJ
6
@ JJ - Niestety tak. Wymagane rootowanie.
Kingsolmn,
178
Drugie rozwiązanie ( adb tcipip 5555i adb connect ...nie jest konieczne
rootowanie
11
adb tcpip <port>nadal wymaga albo ro.kernel.qemuwłaściwość być ustawiony (działa w trybie emulacji), ro.secureaby być 0 (czyli zakorzenione urządzenie), lub ro.debuggablei service.adb.rootbyć ustawiony na 1. adbdprostu nie otworzyć połączenie TCP / IP, jeśli żadne z powyższych jest spełniony. Zobacz części netmite.com/android/mydroid/system/core/adb/adb.c na adb_main temat securezmiennej. adbdna moim nieukartowanym 2.3.7 Android w ogóle nie przechodzi w tryb TCP / IP.
soulseekah
2
Świetny! Drugie rozwiązanie naprawdę nie wymaga rootowania!
Grzegorz D.
132

Jest to bardzo proste, jeśli Twój telefon jest zrootowany.

Pobierz emulator terminala z Google Play (wiele jest bezpłatnych). Upewnij się, że urządzenie z Androidem jest podłączone do Wi-Fi i uzyskaj adres IP Wi-Fi . Otwórz program terminala i wpisz:

su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

Teraz przejdź do komputera (zakładając, że używasz systemu Windows) i utwórz skrót na pulpicie dla „cmd.exe” (bez cudzysłowów).

Kliknij prawym przyciskiem myszy skrót cmd i wybierz "Run as Administrator"

Przejdź do swojego android-sdk-windows\toolsfolderu

Rodzaj:

adb connect ***wifi.ip.address***:5555

(example: adb connect 192.168.0.105:5555)

adb powinien teraz powiedzieć, że masz połączenie.

Uwaga: jeśli jesteś zbyt szybki, aby wydać polecenie połączenia, może się nie powieść. Spróbuj więc co najmniej dwa razy w odstępie pięciu sekund, zanim powiesz, że to nie działa.

norman
źródło
6
Ta odpowiedź była dla mnie lepsza, ponieważ wyjaśniła, którą część należy wykonać na urządzeniu, a którą na komputerze.
Eduardo,
5
PRZED „adb tcpip 5555„ DO ”adb kill-server”. PO „adb connect 192.168.0.101:5555„ DO ”urządzenia adb„ LUB ”powłoka adb (połączenie nie uruchamia powłoki).
samis,
Próbowałem, adb tcpip 5555a następnie druga osoba wykonała adb connect myIP:5555na swoim komputerze. Mógł zainstalować aplikację na moim telefonie, ale nie mógł jej zdalnie debugować. Czy można zdalnie debugować? Na moim telefonie było okno dialogowe na waiting for debuggerzawsze.
Angelina
Czy to powoduje, że ustawienia są trwałe po ponownym uruchomieniu?
Hritik
Czy to działa z adresem IPv6 przez mobilny internet?
CaptainFreedom
94
  1. Podłącz urządzenie przez USB i upewnij się, że działa debugowanie, a następnie uruchom:

    adb tcpip 5555
    adb connect <DEVICE_IP_ADDRESS>:5555
  2. Odłącz USB i kontynuuj bezprzewodowe debugowanie.

  3. Gdy skończysz i chcesz wrócić do debugowania USB, uruchom:

    adb -s <DEVICE_IP_ADDRESS>:5555

Aby znaleźć adres IP urządzenia, przejdź do Settings > Wi-Fi > Advanced > IP Addressurządzenia lub uruchom adb shell netcfg.

Nie wymaga rootowania. Jednocześnie można debugować tylko jedno urządzenie.

Zobacz ten post XDA .

adbKomenda znajduje się w platform-toolsfolderze Android SDK.

Ribin Haridas
źródło
2
W rzeczywistości możesz podłączyć wiele urządzeń jednocześnie, jeśli postępujesz w odpowiedniej kolejności. Wystarczy ustawić tcpip na 5555 indywidualnie dla każdego telefonu, a następnie wydać polecenie połączenia dla każdego telefonu i voilá, wszystkie są podłączone do adb.
andreszs
Debugowanie jest nieco wolniejsze, jeśli mój telefon jest podłączony w ten sposób. Czasami zasypia i powoduje natychmiastowe rozłączenie.
Aron Lorincz
Na niektórych urządzeniach opóźnienie między poleceniem adb tcpip a poleceniem adb connect musi być bardzo małe, w przeciwnym razie nie będzie działać. Dla mnie to też działałoadb tcpip 5555 && adb connect <DEVICE_IP_ADDRESS>:5555
vhamon,
61

Załóżmy, że zapisałeś ścieżkę adb do ścieżki środowiska Windows

  1. Aktywuj tryb debugowania w Androidzie

  2. Podłącz do komputera przez USB

  3. Otwórz typ wiersza polecenia: adb tcpip 5555

  4. Odłącz tablet lub smartfon od komputera

  5. Typ otwartego wiersza polecenia: adb connect IPADDRESS(IPADDRESS to adres DHCP / IP tabletu lub smartfona, który można znaleźć przez Wi-Fi -> aktualnie podłączona sieć)

Teraz w wierszu polecenia powinieneś zobaczyć wynik: podłączony do xxx.xxx.xxx.xxx:5555

MapleLover
źródło
Dziękujemy za sekwencję kroków i dokładne podanie, kiedy należy odłączyć komputer.
Manju
53

Od adb --help:

connect <host>:<port>         - Connect to a device via TCP/IP

Nawiasem mówiąc, jest to opcja wiersza polecenia.

Spróbuj podłączyć telefon do Wi-Fi, a następnie uzyskaj jego adres IP z routera. To nie będzie działać w sieci komórkowej.

Port to 5554.

Nathan
źródło
1
Próbowałem tego z 5555-5558, a teraz 5554 i to nie działa z jakiegoś powodu. Zasadniczo z wiersza poleceń: adb kill-server adb connect 10.10.10.100:5554 z wynikiem * demona nie działa. uruchamianie teraz * * demon uruchomił się pomyślnie * nie można połączyć się z 10.10.10.100:5554 Mogę pingować ip urządzenia z poziomu stacji roboczej. Kiedy stan wyjściowy „demon uruchomił się pomyślnie”, czy nie powinien odnosić się do demona na urządzeniu? Czy to możliwe, że używa emulatora? Jak zapewnić / sprawdzić, czy demon działa na urządzeniu? dzięki
JDM
2
powinieneś najpierw, adb tcpip portponieważ domyślnie jest to debugowanie przez USB. Po tym ostatnim możesz się połączyć connect host:porti powinno działać
Aiden Strydom
„adb tcpip port” dosłownie? , który po prostu zwraca ciąg „błąd: nie znaleziono urządzenia” - czy jest literówka? Czy powinienem tu coś wymienić?
BrainSlugs83
3
AHHH !! Zrozumiałem, że domyślny numer portu dla CyanogenMod to 5555! MIŁY. : D
BrainSlugs83
@Michael może to działać w niektórych sieciach komórkowych, ale ich konfiguracje sieciowe to w zasadzie czarne skrzynki - nie wiesz, kiedy / czy jesteś za zaporą, czy porty są blokowane, czy trwa translacja NAT itp.
BrainSlugs83
45

Dla użytkowników systemu Windows:

Krok 1:
Musisz włączyć opcje programisty w telefonie z Androidem.
W ten sposób możesz włączyć opcje programistyczne.
• Otwórz Ustawienia> Informacje> Informacje o oprogramowaniu> Więcej.
• Następnie dotknij siedem razy „Numer kompilacji”, aby włączyć opcje programisty.
• Wróć do menu Ustawienia, a teraz zobaczysz tam „Opcje programisty”.
• Stuknij i włącz Debugowanie USB z menu na następnym ekranie.

Krok 2:

Otwórz cmd i wpisz adb.
jeśli okaże się, że polecenie adb nie jest prawidłowym poleceniem, musisz dodać ścieżkę do zmiennej środowiskowej.

• Najpierw przejdź do folderu zainstalowanego SDK
Postępuj zgodnie z tą ścieżką, a ta ścieżka jest tylko przykładem. D: \ softwares \ Development \ Andoird \ SDK \ sdk \ platform-tools \; D: \ softwares \ Development \ Andoird \ SDK \ sdk \ tools;
• Teraz wyszukaj w ustawieniach zaawansowanych systemu Windows

wprowadź opis zdjęcia tutaj

Otwórz zmienną środowiskową.

wprowadź opis zdjęcia tutaj

następnie otwórz ścieżkę i wklej następującą ścieżkę, to jest przykład.
Twoja ścieżka SDK jest inna niż moja, użyj swojej. D: \ softwares \ Development \ Andoird \ SDK \ sdk \ platform-tools \;
D: \ softwares \ Development \ Andoird \ SDK \ sdk \ tools;

wprowadź opis zdjęcia tutaj

Krok 3:

Otwórz cmd i wpisz adb. jeśli nadal widzisz, że polecenie adb jest nieprawidłowe, oznacza to, że ścieżka nie została poprawnie ustawiona, wykonaj powyższe kroki.

wprowadź opis zdjęcia tutaj

Teraz możesz podłączyć swój telefon z Androidem do komputera.

Otwórz cmd i wpisz adb urządzenia, a zobaczysz swoje urządzenie. Znajdź swój adres IP telefonu.

wprowadź opis zdjęcia tutaj

Wpisz: - adb tcpip 5555

wprowadź opis zdjęcia tutaj

Uzyskaj adres IP swojego telefonu

adb shell netcfg

Teraz,

adb connect "IP address of your phone"

Teraz uruchom swój projekt na Androida, a jeśli nie zobaczysz swojego urządzenia, wpisz ponownie adres IP swojego telefonu

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Użytkownicy systemów Linux i macOS :

Krok 1: otwórz terminal i zainstaluj adb za pomocą

sudo apt-get install android-tools-adb android-tools-fastboot

Podłącz telefon za pomocą kabla USB do komputera. Wpisz następujące polecenie w terminalu

adb tcpip 5555

Za pomocą adb połącz swój adres IP telefonu z systemem Android.

Usuń swój telefon.

Raghav Thakkar
źródło
36

Z komputera na nierootowanym urządzeniu

(Pamiętaj, że można to zrobić również przy użyciu zrootowanego urządzenia, ale możesz użyć powłoki na zrootowanym urządzeniu, które nie wymaga połączenia USB)

Po pierwsze, otwórz wiersz polecenia (CMD). Jeśli korzystasz z Android Studio lub IntelliJ, jest tam konsola, z której możesz korzystać.

Jeśli dodałeś adb do ścieżki, możesz pominąć część cd.


Jeśli to możliwe, otwórz lokalizację SDK, kliknij prawym przyciskiem myszy i naciśnij „uruchom wiersz polecenia tutaj”. Nie wszystkie mają tę opcję, więc musisz także wykonać następujące (/ te) polecenia:

Windows: zmień dysk (jeśli dotyczy)

D: 

Uzyskaj dostęp do narzędzi SDK i platformy. Zastąp tę ścieżkę swoją lokalizacją zestawu SDK:

cd /sdk/path/here/platform-tools

Teraz masz dostęp do mostu debugującego Androida.


Po podłączeniu urządzenia do komputera:

adb tcpip <port> 
adb connect <ip>:<port>

Gdzie <port>jest port, z którym chcesz się połączyć (domyślnie jest 5555) i <ip>adres IP urządzenia, z którym chcesz się połączyć.

Uwaga: 5555jest domyślnym portem i wystarczy wpisać adres IP, aby go połączyć. Jeśli używasz niestandardowego portu, możesz przynajmniej trochę poprawić bezpieczeństwo. Debugowanie USB przez Wi-Fi może być nadużywane, ale tylko wtedy, gdy urządzenie jest podłączone do komputera, który chce nadużyć urządzenia. Korzystanie z portu innego niż domyślny utrudnia przynajmniej połączenie.

Jeśli korzystasz z niestandardowego portu, pamiętaj o dodaniu go po adresie IP. Zapisywanie żadnego portu się nie łączy, 5555a jeśli go nie użyjesz, połączenie się nie powiedzie.

Adres IP urządzenia można znaleźć na dwa sposoby:

  • W zależności od urządzenia dokładne nazwy mogą się różnić. Otwórz ustawienia i przejdź do Informacje o urządzeniu -> Status -> Adres IP

  • Użyj ADB, aby uzyskać adres IP

Z konsoli wykonaj:

adb shell ip -f inet addr show wlan0

A po zakończeniu połączenia możesz odłączyć urządzenie od komputera, wykonując:

adb disconnect <ip>:<port>

Lub brak adresu IP, aby odłączyć wszystkie urządzenia. Jeśli korzystałeś z niestandardowego portu, musisz określić, z którego portu się rozłączyć . Domyślnie jest tu również 5555.

Aby wyłączyć port (jeśli jest to coś, co chcesz zrobić), wykonaj następujące polecenie z podłączonym urządzeniem:

adb usb

Lub możesz ponownie uruchomić urządzenie, aby usunąć połączenie tcpip

Z komputera na zrootowanym urządzeniu

Po pierwsze, potrzebujesz dostępu do powłoki. Możesz podłączyć urządzenie za pomocą kabla USB i użyć adb shelllub pobrać aplikację z Google Play, FDroid lub innego źródła.

Następnie wykonujesz:

su
setprop service.adb.tcp.port <port>
stop adbd
start adbd

Aby podłączyć urządzenie, postępuj tak jak w wersji niezrootowanej adb connect <ip>:<port>.

A jeśli chcesz wyłączyć port i wrócić do słuchania USB:

setprop service.adb.tcp.port -1
stop adbd
start adbd

Możesz również użyć wtyczki Android Studio, aby zrobić to za Ciebie (nie pamiętam teraz nazwy), a dla zrootowanych użytkowników istnieje również możliwość pobrania aplikacji na Androida w celu skonfigurowania połączenia telefonicznego (prawdopodobnie połączenie adb jest nadal wymagane ).

Niektóre telefony mają ustawienie w opcjach programistycznych (dotyczy to niektórych nierootowanych telefonów, choć prawdopodobnie także telefonów zrootowanych), które umożliwiają przełączanie ADB przez Wi-Fi z samego urządzenia bez rootowania lub połączenia z komputerem, aby go uruchomić. Chociaż jest to mało telefonów

Zoe
źródło
adb shell ip -f inet addr show wlan0 Czy adres IP i obsługa portów mają być podstawione gdzieś indziej?
Michael
nie w tej linii. To jest sposób na uzyskanie adresu IP. Nic tam nie powinno być zastąpione w tym wierszu
Zoe
33

Musiałem uruchomić zarówno USB, jak i TCPIP dla ADB (nie pytaj), więc wykonałem następujące czynności (korzystając ze wskazówek, które inni napisali od programistów xda)

Używanie adb shell:

su
#Set the port number for adbd
setprop service.adb.tcp.port 5555

#Run the adbd daemon *again* instead of doing stop/start, so there
#are two instances of adbd running.
adbd &

#Set the port back to USB, so the next time ADB is started it's
#on USB again.
setprop service.adb.tcp.port -1

exit
tranzystor 1
źródło
Nie działa: adbd nie znaleziono. adbd jest zwykle uruchamiany przez start adbd. Ale może w jakimś folderze jest skrypt / plik wykonywalny?
KrisWebDev,
1
Na moją miłość, to jest /sbin/adbd. To może się różnić w zależności od telefonu. Oczywiście musisz być zrootowany ... Jeśli nie jesteś zrootowany, nie będziesz mógł uzyskać dostępu / sbin.
tranzystor1
32

Aby podłączyć tablet za pomocą portu TCP. Upewnij się, że system i urządzenie są podłączone do tej samej sieci.

  1. Otwórz konsolę cmd.exe
  2. Rodzaj adb tcpip 5555
  3. Przejdź do System -> Opcja programowania -> Debugowanie USB -> Odznacz to dla połączenia TCPIP
  4. Wpisz adb connect 192.168.1.2adres IP urządzenia
  5. Połączono z 192.168.1.2

Połączono za pomocą przekierowania portów Spróbuj wykonać przekierowanie portów,

adb forward tcp: <PC port>tcp:<device port>

lubić:

adb forward tcp: 5555 tcp: 5555.

C: \ Users \ abc> adb forward tcp: 7612 tcp: 7612

C: \ Users \ abc> adb tcpip 7612 restartuje się w trybie TCP port: 7612

C: \ Users \ abc> adb connect 10.0.0.1:7612

podłączony do 10.0.0.1:7612

Jeśli pojawi się komunikat o błędzie: nie znaleziono urządzenia podłącz urządzenie USB do systemu, a następnie wykonaj tę samą procedurę.
dla zrootowanego urządzenia

setprop service.adb.tcp.port 5555
stop adbd
start adbd
Rinkesh
źródło
2
suNajpierw napisz w konsoli, aby uzyskać zrootowaną konsolę.
Ponury
30

Nie wiem, jak podłączyć urządzenie w ogóle bez połączenia USB, ale jeśli uda ci się to podłączyć na innym komputerze, możesz przełączyć adbd w tryb TCP, wydając

adb tcpip <port>

z terminala i połącz się z urządzeniem przez Wi-Fi z dowolnego komputera w sieci poprzez:

adb connect <ip>:<port>

Być może możliwe jest również przełączenie do trybu TCP z terminala w urządzeniu.

Christoph
źródło
Ze wszystkich skomplikowanych odpowiedzi, które spotkały się z ogromnym poparciem, ta 8-letnia odpowiedź jest najprostsza i nie wymaga rootowania. Wystarczy wpisać „adb connect <ip>: 5555” i będzie można go wdrożyć.
RogerW,
29

Najpierw musisz podłączyć urządzenie przez USB

Następnie podłącz urządzenie do WIFI i uzyskaj adres IP. Wciąż łącząc się za pomocą usb, wpisz to w wierszu poleceń lub przez terminal Android Studio

adb tcpip 5555
adb connect <device IP>:5555

Zobaczysz te wiadomości:

restarting in TCP mode port: 5555
connected to 172.11.0.16:5555

Teraz odłącz kabel USB, a Twój logcat nadal będzie normalny

Gotowy. Cieszyć się

Joolah
źródło
To zadziałało. Jednak. Po wykonaniu tych kroków nie mogę już wrócić do emulatora. Propozycje?
Tim Scott
Musisz zrestartować adb za pomocą: <adb kill-server>, a następnie <adb start-server>
Joolah,
21

Jeśli chcesz łatwo podłączyć urządzenie do uruchamiania, debugowania lub wdrażania aplikacji na Androida przez Wi-Fi, możesz użyć opracowanej przeze mnie wtyczki IntelliJ typu open source. Tutaj jest kod i tutaj plugin gotowy do użycia.

Użycie jest dość proste. Tutaj masz gif:

wprowadź opis zdjęcia tutaj

Pedro Vicente Gómez Sánchez
źródło
Wystąpił błąd: „Nie znaleziono polecenia„ adb ”. Sprawdź instalację
zestawu
1
Musisz zadeklarować zmienną środowiskową o nazwie ANDROID_HOME. Ale mam PR oczekujący na sprawdzenie, aby tego uniknąć. W wersji 1.2 zamierzam opublikować w przyszłym tygodniu wtyczka będzie działać tylko z zainstalowanym IntelliJ :)
Pedro Vicente Gómez Sánchez
Używam komputera Mac, nie widzisz ikony w AS? Czy najpierw muszę zrobić coś ręcznego?
proszek366
1
Opublikowałem już nową wersję, w której zmienna środowiskowa ANDROID_HOME nie jest już potrzebna. @ powder366 musisz zainstalować wtyczkę ze sklepu z wtyczkami IntelliJ i zainstalować ją ręcznie. Wszystkie instrukcje potrzebne do zainstalowania i używania wtyczki znajdują się w pliku Readme projektu, patrz github.com/pedrovgs/AndroidWiFiADB
Pedro Vicente Gómez Sánchez
@ PedroVicenteGómezSánchez Thanks. Wybrałem niewłaściwą wtyczkę, istnieje inna wtyczka o podobnej nazwie ...
powder366
11

Jak powiedział Brian:

Zgodnie z postem na XDA-Developers, możesz włączyć ADB przez WiFi z urządzenia za pomocą poleceń

setprop service.adb.tcp.port 5555

przestań adbd

zacznij adbd

Możesz go wyłączyć i przywrócić ADB do słuchania na USB za pomocą

setprop service.adb.tcp.port -1

przestań adbd

zacznij adbd

Jeśli masz już dostęp do portu USB, przejście na korzystanie z Wi-Fi jest jeszcze łatwiejsze. Z wiersza poleceń na komputerze, do którego podłączone jest urządzenie przez USB, wydaj polecenia

adb tcpip 5555

adb connect 192.168.0.101:5555

Informowanie demona ADB o powrocie do słuchania przez USB

adb usb

Istnieje również kilka aplikacji w Android Market, które automatyzują ten proces.

To działa. Musisz tylko uzyskać dostęp do powłoki Androida i wpisać te polecenia ...

Na rynku jest jeszcze jedno (łatwiejsze) rozwiązanie: adbBezprzewodowe, automatycznie ustawi telefon.

Korzeń jest wymagany! dla obu...

oczywiście
źródło
2
... ale tylko jeśli telefon jest zrootowany.
android.weasel
Asus Transformer 301 - Nie wymaga pracy root
Aiden Strydom
9
adb tcpip 5555

Dziwne, ale działa to tylko dla mnie, jeśli mam podłączony kabel USB, wtedy mogę odłączyć USB i przejść do niego ze wszystkim innym ADB.

i to samo po powrocie do usb,

adb usb

będzie działać tylko wtedy, gdy usb jest podłączony.

Nie ma znaczenia, czy wydam

setprop service.adb.tcp.port 5555

lub

setprop service.adb.tcp.port -1

następnie zatrzymaj i uruchom adbd, wciąż potrzebuję kabla USB lub to nie działa.

Więc jeśli mój ADB przez USB nie działał, założę się, że nie byłbym również w stanie włączyć ADB przez WiFi.

Chris
źródło
8

Aby przełączać tryby TCP i USB za pomocą jednego polecenia, możesz dodać to do /init.rc:

on property:service.adb.tcp.port=*
    restart adbd

on property:service.adb.tcp.enable=1
    setprop service.adb.tcp.port 5555

on property:service.adb.tcp.enable=0
    setprop service.adb.tcp.port -1

A teraz możesz użyć właściwości, service.adb.tcp.enableaby włączyć lub wyłączyć nasłuchiwanie na porcie 5555. Uruchom, netstataby sprawdzić, czy nasłuchuje. Jak widać, uruchomi się również, jeśli chcesz zmienić service.adb.tcp.portręcznie.

programista błędów
źródło
8

Funkcja Bash:

function adb-connect-to-wifi {
    ip="$(adb shell ip route | awk '{print $9}')"
    port=5555
    adb tcpip ${port}
    adb connect ${ip}:${port}
}
jedenaście
źródło
7

KROK 1.

Upewnij się, że zarówno komputer hosta adb, jak i urządzenie z Androidem są w tej samej sieci Wi-Fi.

KROK 2.

Połącz urządzenie z Androidem z komputerem za pomocą kabla USB. Jak tylko to zrobisz, komputer hosta wykryje twoje urządzenie, a adb zacznie działać w trybie USB na komputerze. Możesz sprawdzić podłączone urządzenia, adb devicesupewniając się, że adb działa w trybie USB, wykonując adb usb.

$ adb usb
restarting in USB mode
$ adb devices
List of devices attached
ZX1D63HX9R  device


KROK 3.

Uruchom ponownie adb w trybie tcpip za pomocą tego polecenia:

$ adb tcpip 5556
restarting in TCP mode port: 5556


KROK 4.

Znajdź adres IP urządzenia z Androidem. Można to zrobić na kilka sposobów:

  • SPOSÓB: 1 Przejdź do Ustawienia -> Informacje o telefonie / tablecie -> Status -> Adres IP.
  • SPOSÓB: 2 Przejdź do listy dostępnych sieci Wi-Fi. Ten, z którym jesteś połączony, dotknij tego i poznaj swój adres IP.
  • SPOSÓB: 3 spróbuj $ adb shell netcfg.

Teraz, gdy znasz adres IP swojego urządzenia, podłącz do niego hosta adb.

$ adb connect 192.168.0.102:5556
already connected to 192.168.0.102:5556
$ adb devices
List of devices attached
ZX1D63HX9R  device
192.168.0.102:5556  device


KROK 5.

Odłącz kabel USB i powinieneś być podłączony do urządzenia. Jeśli go nie widzisz, adb devicespo prostu połącz się ponownie, używając polecenia z poprzedniego kroku:

$ adb connect 192.168.0.102:5556
connected to 192.168.0.102:5556
$ adb devices
List of devices attached
192.168.0.102:5556  device

Albo jesteś gotowy, aby przejść teraz, albo będziesz musiał zabić swój serwer adb przez wykonanie adb kill-server i jeszcze raz wszystkie kroki.

Mam nadzieję, że to pomaga!


Odniesienie:

Wir
źródło
Dodatkowo możesz uzyskać adres IP swojego urządzenia za pomocą tego skryptu na Uniksie: adb shell ip -f inet addr show wlan0 | grep inet | echo -n $ (grep -Eo '[0-9 \. \ /]') | echo -n $ (grep -Eo '^ [^ \ /] *') | sed 's / // g'
ahsan.dev
@Eddy Istnieją wątpliwości, że zarówno system, jak i urządzenie mobilne / tablet muszą być połączone przez Wi-Fi lub system podłączony przez sieć LAN i tablet podłączony za pomocą routera WIFi tej samej sieci. Proszę to
wyjaśnić
@ i-Droid Nie wiem, dlaczego oba muszą łączyć się w tej samej sieci. może ADB używa specjalnego protokołu routingu sieci. Nie mam pojęcia ani głębokich badań na ten temat. Jeśli jesteś zainteresowany, zapraszamy do wyjaśnienia i podzielenia się ze mną, dzięki!
Eddy,
6

Są to kroki, które podążyłem i zadziałały dla mnie,

  1. powłoka adb ifconfig (stąd adres IP urządzenia)

  2. adb tcpip 7777 (podłącz adb do jakiegoś portu)

  3. adb connect „ipaddress”: 7777

Tom Taylor
źródło
5

Możesz także użyć przekierowania lokalnego portu SSH. Ale nadal wymaga kabla USB. Podłącz telefon za pomocą USB do komputera (hosta) z uruchomionym sshd. Na zdalnym komputerze (gościu) uruchom klienta SSH zdolnego do przekazywania / tunelowania portów. Przykład:

plink -L 5037:localhost:5037 <host_IP_address>

Korzystam z tej konstrukcji, aby podłączyć urządzenie do maszyny wirtualnej. Eltima USB na Ethernet nie był wystarczająco stabilny (przekroczony limit czasu podczas debugowania).

Tunelowanie SSH działa za darmo i jest bardziej niezawodne.

Ron
źródło
4

Inne odpowiedzi są mylące. Znacznie prostsze w użyciu adbWireless:

http://ppareit.github.com/AdbConnect/

Wystarczy zainstalować aplikację na telefonie, aby przełączyć debugowanie przez Wi-Fi, zainstalować wtyczkę Eclipse i gotowe.


źródło
Do jakiej wtyczki Eclipse masz na myśli? Edycja: Nevermind. Znaleźć go, klikając link w odpowiedzi.
ArtOfWarfare
Jest to jednak tylko root
Zoe
3

Złożyłem plik wsadowy do automatycznego włączania i łączenia ADB przez TCP z urządzeniem podłączonym przez USB. Dzięki temu nie musisz ręcznie wpisywać adresu IP.

@echo off
setlocal

REM Use a default env variable to find adb if possible
if NOT "%AndroidSDK%" == "" set PATH=%PATH%;%AndroidSDK%\platform-tools

REM If off is first parameter then we turn off the tcp connection.
if "%1%" == "off" goto off

REM Set vars
set port=%1
set int=%2
if "%port%" == "" set port=5557
if "%int%" == "" set int=wlan0

REM Enable TCP
adb -d wait-for-device tcpip %port%

REM Get IP Address from device
set shellCmd="ip addr show %int% | grep 'inet [0-9]{1,3}(\.[0-9]{1,3}){3}' -oE | grep '[0-9]{1,3}(\.[0-9]{1,3}){3}' -oE"
for /f %%i in ('adb wait-for-device shell %shellCmd%') do set IP=%%i

REM Connect ADB to device
adb connect %IP%:%port%

goto end

:fail
echo adbWifi [port] [interface]
echo adbWifi off
goto end

:off
adb wait-for-device usb

:end
Felizk
źródło
3

Oto rozszerzenie odpowiedzi Briana za pomocą Bluetooth:

  1. W systemie Linux korzystaj z Blueman, aby współdzielić Internet z komputerem swoim urządzeniem przez Bluetooth:

    $ sudo apt-get install blueman
    $ blueman-manager
    Pair them: Search devices after enabling Bluetooth
    on your phone and making it visible
    $ blueman-services
    Network > [X] Network Access Point (NAP)
    Your Phone > Settings > Bluetooth > Paired Device > [X] Internet access
  2. Użyj sieci Bluetooth do poleceń ADB:

    $ adb tcpip 5555
    $ adb connect $(adb shell ip -f inet addr show bt-pan | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n1):5555

Po zakończeniu, aby powrócić do trybu USB:

$ adb disconnect
$ adb usb

Uwaga: Bluetooth 3.0 i 4.0 mogą zwiększać prędkość do 24 Mbit / s .

Wernight
źródło
3

Kroki :

  1. su - Aby przejść do superużytkownika.
  2. setprop service.adb.tcp.port 5555 - Aby określić Port TCP - 5555 jest tutaj numerem portu
  3. stop adbd - Aby zatrzymać usługę adbd.
  4. start adbd - Aby uruchomić usługę ADBD.

działa to doskonale z sshmoim komputerem z systemem Windows

Próbuję to zrobić przy rozruchu na moim telefonie komórkowym Cyanogen lub uruchomić to za pomocą Plink. Z plink nie mogę uruchomić powłoki z su po prawej ... polecenie sudo lub su nie działa. Podczas uruchamiania nie wiem, jak to działa! Mój program powłoki działa z ssh zsu -c "sh /storage/sdcard1/start_adb.sh" ostatnimi 3 poleceniami (bez su -)

Dzięki

początkujący
źródło
2

Jedna dodatkowa uwaga (nauczyłem się na własnej skórze): Nie powinieneś mieć jednocześnie aktywnego połączenia VPN swojej firmy ...

TuomasG
źródło
2

Musisz zrobić następujące rzeczy:

  • Najpierw dodaj ADB do ścieżki środowiska.
  • W swoim CLI wpisz to polecenie adb connect YOUR_DEVICE_IP: PORT_NUMBER (przykład adb connect 192.168.100.100:5555 )
noman404
źródło
2

Istnieją dwa sposoby połączenia urządzenia z Androidem z ADB przez TCP?

Pierwszy sposób

Wykonaj następujące kroki

Najpierw użyj poniższego polecenia, aby uzyskać adres IP urządzenia

adb shell ifconfig

WYJŚCIE powyższej komendy

wlan0     Link encap:UNSPEC    Driver icnss
          inet addr:XXX.XXX.X.XX  Bcast:XXX.XXX.X.XXX

Przy pomocy powyższej komendy znajdziesz adres IP podłączonego urządzenia

Teraz użyj polecenia poniżej

adb tcpip 5555

Powyższe polecenie zrestartuje ten port TCP: 5555

Teraz użyj polecenia poniżej, aby podłączyć urządzenie

adb connect XXX.XXX.X.XXX:5555
            ^^^ ^^^ ^ ^^^
        IP Address of device

Drugi sposób

Możesz użyć wtyczki Android Studio Android device with ADB

Android WiFi ADB - wtyczka IntelliJ / Android Studio

Wtyczka IntelliJ i Android Studio utworzona w celu szybkiego połączenia urządzenia z Androidem przez Wi-Fi w celu zainstalowania, uruchomienia i debugowania aplikacji bez podłączenia USB. Naciśnij jeden przycisk i zapomnij o kablu USB

Sprawdź ten artykuł, aby uzyskać więcej informacji

Połącz urządzenie z Androidem i Wi-Fi w Android Studio

Nilesh Rathod
źródło
2

Mam ten sam problem, ale prosty hack adb reverse tcp:<PORT> tcp:<PORT> dla mnie zadziałał . Pozwala systemowi akceptować żądania TCP.

Dziękuję za przeczytanie

Radha Manohar
źródło
1

Użyj aplikacji adbwireless, aby włączyć telefon, a następnie użyj adb connect z komputera z systemem Windows, aby z nim porozmawiać. Aplikacja adbwireless w telefonie mówi, jak się z nią połączyć, podając adres IP i wszystko.

O wiele mniej zabawną alternatywą jest połączenie przez USB, poinstruowanie telefonu, aby używał protokołu TCPIP przez adb tcpip 5555, a następnie odłączyć USB, a następnie użyć połączenia adb. Jest to o wiele trudniejsze, ponieważ w ten sposób musisz samodzielnie ustalić adres IP telefonu (adbwireless informuje o adresie IP), musisz połączyć się przez USB i musisz uruchomić adb tcpip (adbwireless też się tym zajmuje).

Więc: zainstaluj adbwireless na swoim telefonie. Użyj tego. Jest to możliwe, robię to rutynowo w systemie Linux i Windows.

ConcernedParty
źródło
1

W moim systemie wyglądało to tak:

Na moim urządzeniu z Androidem w mojej powłoce Linux prosty „ifconfig” nie podał mi adresu IP. Musiałem wpisać:

ifconfig eth0

-lub-

netcfg

aby uzyskać mój adres IP. (Wiedziałem, że eth0 został skonfigurowany, ponieważ widziałem go w moim dmesg.) Następnie wykonałem:

setprop service.adb.tcp.port -1

przestań adbd

zacznij adbd

Następnie na moim polu Win7 (tym z uruchomionym Eclipse 3.7.1). Otworzyłem wiersz polecenia do

\ android-sdk \ platform-tools>

bez uruchamiania jako administrator. Potem zrobiłem

adb connect 12.345.678.90

Nigdy nie stawiam portu. Gdybym zrobił

adb tcpip 5555

powiedział, że nie może znaleźć urządzenia, więc nic nie pojawiło się na mojej liście „urządzeń adb”. To znaczy, działa to tylko wtedy, gdy NIE wykonam powyższego polecenia tcpip.

Mogę zrobić „powłokę adb” i zadzierać z moim urządzeniem z Androidem. Ale moje urządzenie z Androidem nie pojawia się teraz w mojej zakładce Run-> Run Configurations-> Target. Z drugiej strony, jeśli ustawię opcję Zakładka celu na automatyczną. Następnie, gdy uruchamiam aplikację za pomocą polecenia Uruchom-> Uruchom, działa ona na moim urządzeniu z Androidem, nawet jeśli moje urządzenie z Androidem nie jest nawet wymienione jako jeden z moich celów.

Joe C.
źródło
1

Sprawiłem, że to działało. Nie użyłem żadnego kabla USB.

  • aplikacja adb bezprzewodowa.
  • Uruchom. To ustawi IP i port; Następnie w dos

    cd C:\Program Files\Android\android-sdk\platform-tools adb connect "192.168.2.22:8000 "enter"

Połączony.

zawietrzny
źródło