Làm cách nào tôi có thể kết nối với Android với ADB qua TCP? [đóng cửa]


879

Tôi đang cố gắng gỡ lỗi một ứng dụng trên Motorola Droid , nhưng tôi gặp một số khó khăn khi kết nối với thiết bị qua USB. Máy chủ phát triển của tôi là máy ảo Windows 7 64 bit chạy trong Hyper-V và vì vậy tôi không thể kết nối trực tiếp qua USB trong máy khách hoặc từ máy chủ.

Tôi đã cài đặt một vài giải pháp USB qua TCP khác nhau, nhưng kết nối dường như có vấn đề do trình giám sát ADB báo cáo "người phát hiện không thể bắt đầu theo dõi" nhiều lần. Có cách nào để kết nối trực tiếp từ máy khách trên máy phát triển với daemon trên thiết bị bằng mạng thay vì kết nối USB hoặc có thể là các tùy chọn khả thi khác không?


75
Khi được kết nối qua USB : adb tcpip 5555. Ngắt kết nối USB, xem IP điện thoại từ Settings > About Phone > Status. Bây giờ adb connect 192.168.x.xvà đó là nó. Không có công cụ, không có phần mềm. Chỉ cần hoạt động.
andreszs 16/2/2015

1
Những gì Andrew nói - đây là những hướng dẫn chính thức từ trang web dành cho nhà phát triển Android của Google , không cần root. Chỉ hoạt động trên HTC One m8 chưa root của tôi (tất nhiên yêu cầu phải bật tùy chọn nhà phát triển.).
Jeff Ward

Nếu dịch vụ adb chạy ở cổng 5037 thì tại sao nó lại định vị các thiết bị trong phạm vi 5555 đến 5585?
Shivam Aggarwal

@Andrew Tôi có thể sử dụng một ứng dụng như thế này để mở và đóng cổng mà không cần máy tính trên Nexus 6 không có quyền truy cập root không? Tôi lo ngại về các vấn đề bảo mật có thể phát sinh từ việc mở cổng 5555 khi tôi ở trên mạng công cộng và không sử dụng điện thoại để phát triển.
DaveTheMinion

Câu trả lời:


1205

Quy trình thủ công

Từ thiết bị của bạn, nếu nó được root

Theo một bài đăng trên xda-developers , bạn có thể kích hoạt ADB qua Wi-Fi từ thiết bị bằng các lệnh:

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

Và bạn có thể vô hiệu hóa nó và đưa ADB trở lại để nghe trên USB với

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

Từ máy tính, nếu bạn đã có quyền truy cập USB (không yêu cầu root)

Việc chuyển sang sử dụng Wi-Fi thậm chí còn dễ dàng hơn nếu bạn đã có USB. Từ một dòng lệnh trên máy tính có thiết bị được kết nối qua USB, hãy ra lệnh

adb tcpip 5555
adb connect 192.168.0.101:5555

Đảm bảo thay thế 192.168.0.101bằng địa chỉ IP thực sự được gán cho thiết bị của bạn. Khi bạn đã hoàn tất, bạn có thể ngắt kết nối khỏi phiên tbp adb bằng cách chạy:

adb disconnect 192.168.0.101:5555

Bạn có thể tìm địa chỉ IP của máy tính bảng theo hai cách:

Khám phá IP thủ công:

Đi vào cài đặt WiFi của Android, nhấp vào nút menu trong thanh hành động (dấu chấm lửng dọc), nhấn Nâng cao và xem địa chỉ IP ở cuối màn hình.

Sử dụng ADB để khám phá IP:

Thực hiện lệnh sau qua adb:

adb shell ip -f inet addr show wlan0

Để bảo daemon ADB quay lại nghe qua USB

adb usb

Ứng dụng để tự động hóa quy trình

Ngoài ra còn có một số ứng dụng trên Google Play tự động hóa quá trình này. Một tìm kiếm nhanh cho thấy AdbW không dây , WiFi ADBADB WiFi . Tất cả những điều này đòi hỏi quyền truy cập root, nhưng adbWurdy yêu cầu ít quyền hơn.


3
Bạn có cần quyền truy cập root để làm điều này? Tôi dường như có thể chạy các lệnh bằng thiết bị đầu cuối, nhưng nó thực sự không hoạt động ...
JJ

6
@ JJ - Thật không may, có. Yêu cầu root.
Kingsolmn

178
Đối với giải pháp thứ hai ( adb tcipip 5555adb connect ...không có root cần thiết.
Rực rỡ

11
adb tcpip <port>vẫn đòi hỏi một trong hai ro.kernel.qemutài sản được thiết lập (chạy trong chế độ giả lập), ro.securelà 0 (tức là một thiết bị bắt nguồn từ), hay ro.debuggableservice.adb.rootđược thiết lập để 1. adbdđơn giản là sẽ không mở một kết nối TCP / IP nếu không có ở trên được đáp ứng. Xem phần netmite.com/android/mydroid/system/core/adb/adb.c adb_main về securebiến. adbdtrên bản 2.3.7 chưa được phân phối của tôi, Android hoàn toàn không vào chế độ TCP / IP.
soulseekah

2
Tuyệt quá! Giải pháp thứ hai thực sự không cần root!
Grzegorz D.

132

Điều này thực sự đơn giản nếu điện thoại của bạn đã được root.

Tải xuống trình giả lập thiết bị đầu cuối từ Google Play (có rất nhiều bản miễn phí). Đảm bảo rằng thiết bị Android của bạn được kết nối với Wi-Fi của bạn và nhận địa chỉ IP Wi-Fi . Mở chương trình đầu cuối và gõ:

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

Bây giờ hãy truy cập vào máy tính của bạn (giả sử rằng bạn đang sử dụng Windows) và tạo một lối tắt trên màn hình nền cho "cmd.exe" (không có trích dẫn).

Nhấp chuột phải vào phím tắt cmd và chọn "Run as Administrator"

Thay đổi android-sdk-windows\toolsthư mục của bạn

Kiểu:

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

(example: adb connect 192.168.0.105:5555)

adb nên nói rằng bạn đã kết nối.

Lưu ý: nếu bạn quá nhanh để đưa ra lệnh kết nối thì có thể thất bại. Vì vậy, hãy thử cách nhau ít nhất hai lần năm giây trước khi bạn nói điều này không hiệu quả.


6
Câu trả lời này tốt hơn cho tôi vì nó giải thích rằng phần nào nên được thực hiện trên thiết bị và phần nào trên máy tính.
Eduardo

5
TRƯỚC "adb tcpip 5555" DO "adb kill-server". SAU "adb kết nối 192.168.0.101:5555" DO "thiết bị adb" HOẶC "vỏ adb" (kết nối không bắt đầu shell).
samis

Tôi đã thử adb tcpip 5555và sau đó người khác thực hiện adb connect myIP:5555trên PC của họ. Anh ta có thể cài đặt một ứng dụng vào điện thoại của tôi nhưng anh ta không thể gỡ lỗi từ xa. Có thể gỡ lỗi từ xa? Trên điện thoại của tôi có một hộp thoại waiting for debuggermãi mãi.
Angelina

Điều này có làm cho các cài đặt liên tục trên các lần khởi động lại không?
Hritik

Điều này có hoạt động với địa chỉ ipv6 qua internet di động không?
CaptainFreedom

94
  1. Kết nối thiết bị qua USB và đảm bảo gỡ lỗi đang hoạt động, sau đó chạy:

    adb tcpip 5555
    adb connect <DEVICE_IP_ADDRESS>:5555
  2. Ngắt kết nối USB và tiến hành gỡ lỗi không dây.

  3. Khi bạn đã hoàn tất và muốn chuyển về gỡ lỗi USB, hãy chạy:

    adb -s <DEVICE_IP_ADDRESS>:5555

Để tìm địa chỉ IP của thiết bị, hãy truy cập Settings > Wi-Fi > Advanced > IP Addressthiết bị của bạn hoặc chạy adb shell netcfg.

Không cần root. Mỗi lần chỉ có một thiết bị có thể được gỡ lỗi.

Xem bài đăng XDA này .

Các adblệnh nằm trong platform-toolsthư mục của Android SDK.


2
Trên thực tế, bạn có thể kết nối nhiều thiết bị cùng một lúc, nếu bạn thực hiện đúng thứ tự. Chỉ cần đặt tcpip thành 5555 riêng cho mỗi điện thoại, sau đó ban hành lệnh kết nối cho mỗi điện thoại và voilá, tất cả chúng đều được kết nối với adb.
andreszs 16/2/2015

Gỡ lỗi chậm hơn một chút nếu điện thoại của tôi được kết nối theo cách này. Ngoài ra, đôi khi nó ngủ và điều đó gây ra sự ngắt kết nối ngay lập tức.
Aron Lorincz 21/07/2015

Trên một số thiết bị, độ trễ giữa lệnh tbpip adblệnh kết nối adb phải rất thấp nếu không nó không hoạt động. Ngoài ra, đối với tôi, nó hoạt động bằng cách thực hiệnadb tcpip 5555 && adb connect <DEVICE_IP_ADDRESS>:5555
vhamon

61

Giả sử bạn đã lưu đường dẫn adb vào đường dẫn môi trường Windows của bạn

  1. Kích hoạt chế độ gỡ lỗi trong Android

  2. Kết nối với PC qua USB

  3. Mở loại dấu nhắc lệnh: adb tcpip 5555

  4. Ngắt kết nối máy tính bảng hoặc điện thoại thông minh của bạn khỏi máy tính

  5. Loại dấu nhắc lệnh mở: adb connect IPADDRESS(IPADDRESS là địa chỉ DHCP / IP của máy tính bảng hoặc điện thoại thông minh của bạn, bạn có thể tìm thấy bằng Wi-Fi -> mạng được kết nối hiện tại)

Bây giờ trong dấu nhắc lệnh, bạn sẽ thấy kết quả như: được kết nối với xxx.xxx.xxx.xxx:5555


Cảm ơn về trình tự các bước và đề cập chính xác khi nào ngắt kết nối PC.
Manju

53

Từ adb --help:

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

Đó là một tùy chọn dòng lệnh bằng cách này.

Bạn nên thử kết nối điện thoại với Wi-Fi và sau đó lấy địa chỉ IP từ bộ định tuyến của bạn. Nó sẽ không hoạt động trên mạng di động.

Cổng là 5554.


1
Tôi đã thử điều đó với 5555-5558 và bây giờ là 5554 và nó không hoạt động vì một số lý do. Về cơ bản từ một dòng lệnh: adb kill-server adb kết nối 10.10.10.100:5554 với kết quả là * daemon không chạy. bắt đầu ngay bây giờ * * daemon bắt đầu thành công * không thể kết nối với 10.10.10.100:5554 Tôi có thể ping ip của thiết bị từ máy trạm dev. Khi trạng thái đầu ra "daemon bắt đầu thành công", nó có nên được đề cập đến daemon trên thiết bị không? Có phải nó đang cố gắng sử dụng trình giả lập có thể? Làm cách nào để đảm bảo / xác thực trình nền đang chạy trên thiết bị? cảm ơn
JDM

2
trước tiên bạn nên adb tcpip portmặc định là gỡ lỗi qua usb. Sau đó, bạn có thể kết nối connect host:portvà nó sẽ hoạt động
Aiden Strydom 13/03/13

"Cổng adb tcpip" theo nghĩa đen? chỉ trả về chuỗi "lỗi: không tìm thấy thiết bị" - có lỗi đánh máy không? Hay tôi nên thay thế một cái gì đó ở đây?
BrainSlugs83

3
À !! Hình dung ra, số cổng mặc định cho CyanogenMod là 5555! ĐẸP. : D
BrainSlugs83

@Michael nó có thể hoạt động trên một số mạng di động, nhưng cấu hình mạng của chúng về cơ bản là các hộp đen - bạn không biết khi nào / nếu bạn đứng sau tường lửa, nếu các cổng bị chặn, nếu dịch NAT đang diễn ra, v.v.
BrainSlugs83

45

Đối với người dùng Windows:

Bước 1:
Bạn phải bật tùy chọn Nhà phát triển trong điện thoại Android của mình.
Bạn có thể bật tùy chọn Nhà phát triển bằng cách này.
• Mở Cài đặt> Giới thiệu> Thông tin phần mềm> Khác.
• Sau đó nhấn vào nút Build Build số bảy lần để bật tùy chọn Nhà phát triển.
• Quay trở lại menu Cài đặt và bây giờ bạn sẽ có thể thấy các tùy chọn Nhà phát triển trực tuyến ở đó.
• Chạm vào nó và bật Gỡ lỗi USB từ menu trên màn hình tiếp theo.

Bước 2:

Mở cmd và gõ adb.
nếu bạn thấy adb không phải là lệnh hợp lệ thì bạn phải thêm một đường dẫn đến biến môi trường.

• Trước tiên, hãy chuyển đến thư mục đã cài đặt SDK của bạn
Thực hiện theo đường dẫn này và đường dẫn này chỉ là một ví dụ. D: \ phần mềm \ Phát triển \ Andoird \ SDK \ sdk \ platform-tools \; D: \ phần mềm \ Phát triển \ Andoird \ SDK \ sdk \ tools;
• Bây giờ tìm kiếm trên cài đặt nâng cao hệ thống cửa sổ

nhập mô tả hình ảnh ở đây

Mở biến Môi trường.

nhập mô tả hình ảnh ở đây

sau đó mở đường dẫn và dán đường dẫn sau đây là một ví dụ.
Đường dẫn SDK của bạn khác với đường dẫn của tôi. D: \ phần mềm \ Phát triển \ Andoird \ SDK \ sdk \ platform-tools \;
D: \ phần mềm \ Phát triển \ Andoird \ SDK \ sdk \ tools;

nhập mô tả hình ảnh ở đây

Bước 3:

Mở cmd và gõ adb. nếu bạn vẫn thấy adb không phải là lệnh hợp lệ thì đường dẫn của bạn chưa được đặt đúng theo các bước trên.

nhập mô tả hình ảnh ở đây

Bây giờ bạn có thể kết nối điện thoại Android của bạn với PC.

Mở cmd và nhập thiết bị adb và bạn có thể thấy thiết bị của mình. Tìm địa chỉ IP điện thoại của bạn.

nhập mô tả hình ảnh ở đây

Loại: - adb tcpip 5555

nhập mô tả hình ảnh ở đây

Nhận địa chỉ IP của điện thoại của bạn

adb shell netcfg

Hiện nay,

adb connect "IP address of your phone"

Bây giờ hãy chạy dự án Android của bạn và nếu không thấy thiết bị của bạn thì hãy nhập lại adb kết nối địa chỉ IP của điện thoại của bạn

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Đối với người dùng Linux và macOS :

Bước 1: mở terminal và cài đặt adb bằng

sudo apt-get cài đặt android-tools-adb android-tools-fastboot

Kết nối điện thoại của bạn qua cáp USB với PC. Gõ lệnh sau trong terminal

adb tcpip 5555

Sử dụng adb, kết nối địa chỉ IP điện thoại Android của bạn.

Hủy bỏ điện thoại của bạn.


36

Từ một máy tính trên một thiết bị không root

(Lưu ý rằng điều này cũng có thể được thực hiện bằng cách sử dụng thiết bị đã root, nhưng bạn có thể sử dụng trình bao trên thiết bị đã root mà không cần kết nối USB)

Đầu tiên, mở dấu nhắc lệnh (CMD). Nếu bạn sử dụng Android Studio hoặc IntelliJ, có một bảng điều khiển đi kèm trong đó bạn có thể sử dụng.

Nếu bạn đã thêm adb vào đường dẫn, bạn có thể bỏ qua phần cd.


Nếu có thể, hãy mở vị trí SDK, nhấp chuột phải và nhấn "bắt đầu nhắc lệnh tại đây". Không phải tất cả đều có tùy chọn này, do đó bạn cũng phải thực hiện các lệnh này (/ These):

Windows: thay đổi ổ đĩa (nếu có)

D: 

Và truy cập sdk và các công cụ nền tảng. Thay thế đường dẫn này bằng vị trí SDK của bạn:

cd /sdk/path/here/platform-tools

Bây giờ bạn có quyền truy cập vào cầu gỡ lỗi Android.


Với thiết bị được kết nối với máy tính, hãy làm:

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

Trong trường hợp <port>là cổng bạn muốn kết nối tới (mặc định là 5555) và <ip>là địa chỉ IP của thiết bị bạn muốn kết nối tới.

Xin lưu ý: 5555là cổng mặc định và chỉ cần ghi địa chỉ IP kết nối nó. Nếu bạn sử dụng một cổng tùy chỉnh, ít nhất bạn có thể cải thiện bảo mật một chút. Gỡ lỗi USB qua Wi-Fi có thể bị lạm dụng, nhưng chỉ khi thiết bị được kết nối với máy tính muốn lạm dụng thiết bị. Sử dụng một cổng không mặc định ít nhất làm cho nó khó kết nối hơn một chút.

Nếu bạn sử dụng một cổng tùy chỉnh, hãy đảm bảo thêm nó sau IP. Viết không có cổng kết nối 5555và nếu bạn không sử dụng thì kết nối sẽ thất bại.

Bạn có thể tìm địa chỉ IP của thiết bị theo hai cách:

  • Tùy thuộc vào thiết bị của bạn, tên chính xác có thể khác nhau. Mở cài đặt và đi đến Giới thiệu về thiết bị -> Trạng thái -> Địa chỉ IP

  • Sử dụng ADB để lấy IP

Từ bàn điều khiển, làm:

adb shell ip -f inet addr show wlan0

Và sau khi kết thúc kết nối, bạn có thể ngắt kết nối thiết bị khỏi máy tính bằng cách thực hiện:

adb disconnect <ip>:<port>

Hoặc không có IP để ngắt kết nối tất cả các thiết bị. Nếu bạn đã sử dụng một cổng tùy chỉnh, bạn phải chỉ định cổng nào cần ngắt kết nối . Mặc định là 5555 ở đây là tốt.

Để tắt cổng (nếu đó là điều bạn muốn làm), bạn thực hiện lệnh này với thiết bị được kết nối:

adb usb

Hoặc bạn có thể khởi động lại thiết bị để xóa kết nối tcpip

Từ một máy tính trên một thiết bị đã root

Đầu tiên, bạn cần truy cập vào vỏ. Bạn có thể kết nối thiết bị bằng cáp usb và sử dụng adb shellhoặc tải xuống ứng dụng từ Google Play, FDroid hoặc một số nguồn khác.

Sau đó, bạn làm:

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

Và để kết nối thiết bị, bạn làm như trong phiên bản chưa root bằng cách thực hiện adb connect <ip>:<port>.

Và nếu bạn muốn tắt cổng và quay lại nghe USB:

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

Bạn cũng có thể sử dụng plugin Android Studio để làm điều đó cho mình (không nhớ tên ngay bây giờ) và đối với người dùng đã root cũng có tùy chọn tải xuống ứng dụng Android để thiết lập kết nối điện thoại (có thể vẫn cần kết nối adb ).

Một số điện thoại có cài đặt trong tùy chọn dành cho nhà phát triển (điều này áp dụng cho một số điện thoại chưa được phân phối, mặc dù có thể một số điện thoại đã root) cho phép bật ADB qua Wi-Fi từ chính thiết bị mà không cần root hoặc kết nối máy tính để khởi động. Mặc dù có rất ít điện thoại có điều đó


adb shell ip -f inet addr show wlan0 Là địa chỉ IP và hỗ trợ cổng sẽ được thay thế ở một nơi nào đó?
Michael

không phải trong dòng đó. Đó là cách để lấy IP. Không có gì trong đó nên được thay thế trong dòng đó
Zoe

33

Tôi cần để cả USB và TCPIP hoạt động cho ADB (không hỏi), vì vậy tôi đã làm như sau (sử dụng các hướng dẫn mà người khác đã đăng từ các nhà phát triển xda)

Sử dụng 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

Không hoạt động: không tìm thấy adbd. adbd thường được khởi chạy thông qua bắt đầu adbd. Nhưng có lẽ có một kịch bản / thực thi trong một số thư mục?
KrisWebDev

1
Trên gnex của tôi, nó /sbin/adbd. Điều đó có thể thay đổi qua điện thoại. Tất nhiên, bạn phải được root ... Nếu bạn chưa root, bạn sẽ không thể truy cập / sbin.
bóng bán

32

Để kết nối máy tính bảng của bạn bằng cổng TCP. Đảm bảo hệ thống và thiết bị của bạn được kết nối với cùng một mạng.

  1. Mở giao diện điều khiển cmd.exe
  2. Kiểu adb tcpip 5555
  3. Chuyển đến Hệ thống -> Tùy chọn phát triển -> Gỡ lỗi USB -> Bỏ chọn nó để kết nối TCPIP
  4. Nhập adb connect 192.168.1.2đây là địa chỉ IP thiết bị của bạn
  5. Đã kết nối với 192.168.1.2

Đã kết nối bằng cổng chuyển tiếp Hãy thử chuyển tiếp cổng,

adb chuyển tiếp tcp: <PC port>tcp:<device port>

giống:

adb chuyển tiếp tcp: 5555 tcp: 5555.

C: \ Người dùng \ abc> adb chuyển tiếp tcp: 7612 tcp: 7612

C: \ Users \ abc> adb tcpip 7612 khởi động lại trong cổng chế độ TCP: 7612

C: \ Users \ abc> adb kết nối 10.0.0.1:7612

kết nối với 10.0.0.1:7612

Nếu bạn gặp lỗi thông báo: không tìm thấy thiết bị kết nối thiết bị usb với hệ thống thì hãy làm theo quy trình tương tự.
cho một thiết bị đã root

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

2
Trong giao diện điều khiển viết suđầu tiên để có được một giao diện điều khiển gốc.
Grim

30

Tôi không biết cách kết nối thiết bị mà không có bất kỳ kết nối USB nào, nhưng nếu bạn có thể kết nối thiết bị đó ở một máy tính khác, bạn có thể chuyển adbd sang chế độ TCP bằng cách phát hành

adb tcpip <port>

từ thiết bị đầu cuối và kết nối với thiết bị của bạn qua wifi từ bất kỳ PC nào trên mạng bằng cách:

adb connect <ip>:<port>

Có lẽ cũng có thể chuyển sang chế độ TCP từ thiết bị đầu cuối trên thiết bị.


Trong tất cả các câu trả lời phức tạp nhận được số lượt truy cập lớn, cậu bé 8 tuổi này trả lời đơn giản nhất và hoạt động không cần root. Chỉ cần nhập 'adb kết nối <ip>: 5555' và nó sẽ có sẵn để được triển khai.
RogerW

29

Trước tiên, bạn phải kết nối thiết bị của mình qua USB

Sau đó kết nối thiết bị của bạn với WIFI và nhận địa chỉ IP. Trong khi vẫn kết nối qua usb, hãy nhập dòng lệnh này hoặc qua Android Studio Terminal

adb tcpip 5555
adb connect <device IP>:5555

Bạn sẽ thấy những thông báo sau:

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

Bây giờ hãy tháo cáp USB và bạn vẫn sẽ thấy logcat của mình như bình thường

Làm xong. Thưởng thức


Điều này đã làm việc. Tuy nhiên. Sau khi thực hiện các bước này, tôi không còn có thể chuyển trở lại trình giả lập. Gợi ý?
Tim Scott

Bạn cần khởi động lại adb của mình bằng: <adb kill-server> và sau đó <adb start-server>
Joolah

21

Nếu bạn muốn dễ dàng kết nối thiết bị của mình để chạy, gỡ lỗi hoặc triển khai các ứng dụng Android qua WiFi, bạn có thể sử dụng Plugin IntelliJ mã nguồn mở mà tôi đã phát triển. Đây là mã và đây là plugin đã sẵn sàng để sử dụng.

Cách sử dụng khá đơn giản. Ở đây bạn có một gif:

nhập mô tả hình ảnh ở đây


Xảy ra lỗi này: "'không tìm thấy adb'command. Xem lại cài đặt SDK Android của bạn.
rostamiani

1
Bạn phải khai báo một biến môi trường có tên ANDROID_HOME. Nhưng tôi có một PR đang chờ xem xét để tránh điều này. Với phiên bản 1.2 tôi sẽ xuất bản vào tuần tới, plugin sẽ hoạt động chỉ với cài đặt IntelliJ :)
Pedro Vicente Gómez Sánchez

Tôi đang sử dụng mac, không thấy biểu tượng trong AS? Tôi có cần phải làm một cái gì đó bằng tay trước?
bột366

1
Tôi đã xuất bản một phiên bản mới trong đó biến môi trường ANDROID_HOME không còn cần thiết nữa. @ Powder366 bạn cần cài đặt plugin từ cửa hàng plugin IntelliJ cài đặt thủ công. Tất cả các hướng dẫn cần thiết để cài đặt và sử dụng plugin đều có trong dự án readme, hãy xem github.com/pedrovgs/AndroidWiFiADB
Pedro Vicente Gómez Sánchez

@ PedroVicenteGómezSánchez Cảm ơn. Tôi đã chọn sai plugin, tồn tại một plugin khác có tên tương tự ...
Powder366

11

Như Brian đã nói:

Theo một bài đăng trên xda-developers, bạn có thể kích hoạt ADB qua WiFi từ thiết bị bằng các lệnh

dịch vụ setprop.adb.tcp.port 5555

ngừng quảng cáo

bắt đầu adbd

Và bạn có thể vô hiệu hóa nó và đưa ADB trở lại để nghe trên USB với

dịch vụ setprop.adb.tcp.port -1

ngừng quảng cáo

bắt đầu adbd

Nếu bạn đã có quyền truy cập USB, việc chuyển sang sử dụng WiFi thậm chí còn dễ dàng hơn. Từ một dòng lệnh trên máy tính có thiết bị được kết nối qua USB, hãy ra lệnh

adb tcpip 5555

adb kết nối 192.168.0.101:5555

Để bảo daemon ADB quay lại nghe qua USB

usb adb

Ngoài ra còn có một số ứng dụng trên Android Market tự động hóa quá trình này.

Nó hoạt động. Bạn chỉ cần truy cập vào vỏ Android và gõ các lệnh đó ...

Một giải pháp khác (dễ dàng hơn) có trên Thị trường: adbWishing, nó sẽ tự động đặt điện thoại của bạn.

Root là bắt buộc! cho cả hai...


2
... nhưng chỉ khi điện thoại bị root.
android.weasel

Asus Transformer 301 - Làm việc không cần root
Aiden Strydom

9
adb tcpip 5555

Thật kỳ lạ, nhưng điều này chỉ hoạt động với tôi nếu tôi có kết nối cáp USB, sau đó tôi có thể rút phích cắm USB và sử dụng nó với mọi thứ khác.

và tương tự khi quay trở lại usb,

adb usb

sẽ chỉ hoạt động nếu usb được kết nối.

Nó không thành vấn đề nếu tôi phát hành

setprop service.adb.tcp.port 5555

hoặc là

setprop service.adb.tcp.port -1

sau đó dừng và bắt đầu adbd, tôi vẫn cần cáp usb hoặc nó không hoạt động.

Vì vậy, nếu ADB qua usb của tôi không hoạt động, tôi cá là tôi cũng không thể bật ADB qua WiFi.


8

Để chuyển giữa chế độ TCP và USB chỉ bằng một lệnh, bạn có thể thêm lệnh này vào /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

Và bây giờ bạn có thể sử dụng thuộc tính service.adb.tcp.enableđể bật hoặc tắt nghe trên cổng 5555. Chạy netstatđể kiểm tra xem nó có nghe không. Như bạn có thể thấy nó cũng sẽ kích hoạt nếu bạn muốn thay đổi service.adb.tcp.portbằng tay.


8

Hàm Bash sử dụng:

function adb-connect-to-wifi {
    ip="$(adb shell ip route | awk '{print $9}')"
    port=5555
    adb tcpip ${port}
    adb connect ${ip}:${port}
}

7

BƯỚC 1.

Đảm bảo cả máy tính chủ adb và thiết bị Android của bạn đều nằm trên cùng một mạng Wifi.

BƯỚC 2.

Kết nối thiết bị Android với máy tính bằng cáp USB của bạn. Ngay sau khi bạn làm điều đó, máy tính chủ của bạn sẽ phát hiện thiết bị của bạn và adb sẽ bắt đầu chạy ở chế độ USB trên máy tính. Bạn có thể kiểm tra các thiết bị được đính kèm adb devicestrong khi đảm bảo rằng adb đang chạy ở chế độ USB bằng cách thực thi adb usb.

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


BƯỚC 3.

Khởi động lại adb trong chế độ tcpip bằng lệnh này:

$ adb tcpip 5556
restarting in TCP mode port: 5556


BƯỚC 4.

Tìm địa chỉ IP của thiết bị Android. Có một số cách để làm điều đó:

  • CÁCH: 1 Chuyển đến Cài đặt -> Giới thiệu về điện thoại / máy tính bảng -> Trạng thái -> Địa chỉ IP.
  • CÁCH: 2 Chuyển đến danh sách các mạng Wi-fi khả dụng. Người mà bạn đã kết nối, chạm vào đó và tìm hiểu IP của bạn.
  • CÁCH: 3 Hãy thử $ adb shell netcfg.

Bây giờ bạn đã biết địa chỉ IP của thiết bị của mình, hãy kết nối máy chủ adb của bạn với thiết bị đó.

$ 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


BƯỚC 5.

Tháo cáp USB và bạn sẽ được kết nối với thiết bị của mình. Nếu bạn không thấy nó adb devicesthì chỉ cần kết nối lại bằng lệnh của bước trước:

$ 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

Bây giờ bạn vẫn ổn hoặc bạn sẽ cần phải giết máy chủ adb của mình bằng cách thực hiện adb kill-servervà thực hiện lại tất cả các bước một lần nữa.

Mong rằng sẽ giúp!


Tài liệu tham khảo:


Ngoài ra, bạn có thể lấy IP của thiết bị của mình bằng tập lệnh này trên Unix: 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 Một nghi ngờ rằng cả hệ thống và thiết bị di động / Máy tính bảng phải được kết nối qua WiFi hoặc hệ thống khác được kết nối qua mạng LAN và máy tính bảng được kết nối bằng bộ định tuyến WIFi của cùng một mạng. Vui lòng làm rõ
iSrinivasan27

@ i-Droid Tôi không biết tại sao cả hai phải kết nối trong cùng một mạng. có thể ADB sử dụng giao thức định tuyến mạng đặc biệt. Tôi không có ý tưởng và không có nghiên cứu sâu về nó. Nếu bạn có hứng thú với nó, vui lòng làm rõ và chia sẻ với tôi, cảm ơn!
Eddy

6

Đây là những bước tôi làm theo và nó hiệu quả với tôi,

  1. adb shell ifconfig (lấy địa chỉ IP của thiết bị từ đây)

  2. adb tcpip 7777 (kết nối adb với một số cổng)

  3. adb kết nối "ipaddress": 7777


5

Bạn cũng có thể sử dụng chuyển tiếp cổng cục bộ SSH. Nhưng nó vẫn liên quan đến cáp USB. Kết nối điện thoại của bạn bằng USB với máy tính (máy chủ) với sshd đang chạy. Trên máy tính (khách) từ xa, khởi động máy khách SSH có khả năng chuyển tiếp / tạo đường hầm. Thí dụ:

plink -L 5037:localhost:5037 <host_IP_address>

Tôi sử dụng cấu trúc này để kết nối thiết bị của mình với một máy ảo. Eltima USB to Ethernet không đủ ổn định (hết thời gian trong khi gỡ lỗi).

SSH đường hầm hoạt động miễn phí và đáng tin cậy hơn.


4

Tôi tìm thấy những câu trả lời khác khó hiểu. Đơn giản hơn nhiều để sử dụng adbWurdy:

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

Chỉ cần cài đặt một ứng dụng trên điện thoại của bạn để chuyển đổi gỡ lỗi qua wifi, cài đặt trình cắm nhật thực và bạn đã hoàn tất.


Bạn đang đề cập đến trình cắm nhật thực nào? Chỉnh sửa: Nevermind. Tìm thấy nó bằng cách theo liên kết trong câu trả lời của bạn.
ArtOfWarfare

Đây chỉ là root mặc dù
Zoe

3

Tôi kết hợp một tệp bó để tự động kích hoạt và kết nối ADB qua TCP, với một thiết bị được kết nối qua USB. Với nó, bạn không cần phải đặt IP thủ công.

@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

3

Đây là phần mở rộng cho câu trả lời của Brian bằng Bluetooth:

  1. Trên Linux, sử dụng Blueman để chia sẻ internet PC với thiết bị của bạn qua 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. Sử dụng mạng Bluetooth cho các lệnh 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

Sau khi hoàn tất để trở về chế độ USB:

$ adb disconnect
$ adb usb

Lưu ý: Bluetooth 3.0 và 4.0 có thể lên tới 24 Mbit / s .


3

Các bước:

  1. su - Để chuyển sang siêu người dùng.
  2. setprop service.adb.tcp.port 5555 - Để chỉ định Cổng tcp - 5555 là số cổng tại đây
  3. stop adbd - Để dừng dịch vụ adbd.
  4. start adbd - Để bắt đầu dịch vụ adbd.

cái này hoạt động hoàn hảo với sshPC Windows của tôi

Tôi cố gắng làm điều này khi khởi động trên điện thoại di động cyanogen của tôi hoặc khởi chạy nó với plink. Với plink tôi không thể khởi chạy shell bằng su ngay ... lệnh sudo hoặc su không hoạt động. Khi khởi động tôi không biết nó hoạt động như thế nào! Chương trình shell của tôi hoạt động từ ssh với su -c "sh /storage/sdcard1/start_adb.sh"3 lệnh cuối (không có su -)

Cảm ơn


2

Thêm một lưu ý (đã học theo cách khó khăn): Bạn không nên kích hoạt kết nối VPN của công ty cùng lúc ...


2

Bạn cần làm những việc sau:

  • Đầu tiên, Thêm ADB vào đường dẫn môi trường của bạn.
  • Từ CLI của bạn, gõ lệnh này adb kết nối YOU_DEVICE_IP: PORT_NUMBER (ví dụ adb kết nối 192.168.100.100:5555 )

2

Có hai cách để kết nối thiết bị Android của bạn với ADB qua TCP?

Cách thứ nhất

Thực hiện theo các bước này

Lần đầu tiên sử dụng lệnh dưới đây để lấy Địa chỉ IP của thiết bị của bạn

adb shell ifconfig

ĐẦU RA của lệnh trên

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

Với lệnh trợ giúp bạn ở trên, bạn sẽ tìm thấy Địa chỉ IP của thiết bị được kết nối

Bây giờ sử dụng lệnh dưới đây

adb tcpip 5555

Lệnh trên sẽ khởi động lại cổng TCP này: 5555

Bây giờ sử dụng lệnh dưới đây để kết nối thiết bị của bạn

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

Cách thứ hai

Bạn có thể sử dụng Plugin Android Studio Android device with ADB

Android WiFi ADB - Plugin IntelliJ / Android Studio

Plugin IntelliJ và Android Studio được tạo để kết nối nhanh thiết bị Android của bạn qua WiFi để cài đặt, chạy và gỡ lỗi các ứng dụng của bạn mà không cần kết nối USB. Nhấn một nút và quên cáp USB của bạn

Vui lòng kiểm tra bài viết này để biết thêm thông tin

Kết nối thiết bị Android với Wifi trong Android Studio


2

Tôi có cấu trúc ở cùng một vấn đề nhưng một hack đơn giản adb reverse tcp:<PORT> tcp:<PORT> đã làm việc cho tôi. Nó cho phép hệ thống chấp nhận các yêu cầu tcp.

Cảm ơn bạn đã đọc


1

Sử dụng ứng dụng không dây để kích hoạt điện thoại, sau đó sử dụng kết nối adb từ máy Windows để nói chuyện với nó. Ứng dụng không dây trên điện thoại cho bạn biết cách kết nối với nó, cung cấp địa chỉ IP và mọi thứ.

Cách thay thế ít thú vị hơn là kết nối qua USB, bảo điện thoại sử dụng TCPIP qua adb tcpip 5555, sau đó ngắt kết nối USB, sau đó sử dụng kết nối adb. Điều này khó hơn nhiều vì cách này bạn phải tự tìm ra địa chỉ IP của điện thoại (adbwless nói với bạn IP), bạn phải kết nối qua USB và bạn cũng phải chạy adb tcpip (adbwless cũng đảm nhiệm việc đó).

Vì vậy: cài đặt adbw không dây trên điện thoại của bạn. Sử dụng nó. Có thể, tôi làm điều đó thường xuyên trên Linux và trên Windows.


1

Trên hệ thống của tôi, nó đã đi như thế này:

Trên thiết bị Android của tôi trong vỏ Linux, một "ifconfig" đơn giản không cung cấp cho tôi địa chỉ IP của tôi. Tôi đã phải gõ:

ifconfig eth0

-hoặc là-

netcfg

để lấy địa chỉ IP của tôi. (Tôi biết eth0 được cấu hình bởi vì tôi thấy nó trong dmesg của tôi.) Sau đó, tôi đã làm:

dịch vụ setprop.adb.tcp.port -1

ngừng quảng cáo

bắt đầu adbd

Sau đó, trên hộp Win7 của tôi (cái đang chạy Eclipse 3.7.1). Tôi đã mở một dấu nhắc lệnh để

\ android-sdk \ công cụ nền tảng>

mà không chạy như admin. Sau đó tôi đã làm một

adb kết nối 12.345.678.90

Tôi không bao giờ đặt một cổng. Nếu tôi đã làm một

adb tcpip 5555

họ nói rằng họ không thể tìm thấy thiết bị sau đó không có gì xuất hiện trong danh sách "thiết bị adb" của tôi. Tức là nó chỉ hoạt động nếu tôi KHÔNG thực hiện lệnh tcpip ở trên.

Tôi có thể thực hiện "vỏ adb" và gây rối với Thiết bị Android của mình. Nhưng Thiết bị Android của tôi không xuất hiện trong Run-> Run Cấu hình-> tab Target ngay bây giờ. Mặt khác, nếu tôi giữ Tab mục tiêu được đặt thành tự động. Sau đó, khi tôi chạy ứng dụng của mình thông qua Run-> Run, nó sẽ chạy trên thiết bị Android của tôi mặc dù thiết bị Android của tôi thậm chí không được liệt kê là một trong những mục tiêu của tôi.


1

Tôi đã làm việc này. Không sử dụng bất kỳ cáp usb.

  • ứng dụng adb không dây.
  • Chạy nó Điều đó sẽ đặt ip và cổng; Sau đó trong dos

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

Đã kết nối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.