Android Studio 在Windows上通过Wi-Fi(Android 11+)进行adb:如何保持固定端口或自动连接?

9w11ddsr  于 2023-02-09  发布在  Android
关注(0)|答案(7)|浏览(543)

无线adb连接在我的Android 11手机+ Windows工作站上运行良好。
但这并不方便,因为每次手机WiFi断开/重新连接时,我都必须:
1.在Android设置中打开无线调试。
1.请注意端口号XXXXX,该端口号每次都会更改!
1.在计算机上运行adb connect 192.168.1.10:XXXXX
是否有办法跳过步骤2,方法是:

  • 修理港口吗
  • 让Windows自动检测新端口上的手机?(文档似乎暗示在MacOS上不需要步骤2和3,一旦配对完成,我想知道这是如何工作的)
um6iljoc

um6iljoc1#

您可以使用nmap动态获取端口并连接到它。
这是我解决办法
adb connect <device_ip>:$(nmap $IP -p 37000-44000 | awk "/\/tcp/" | cut -d/ -f1)
仅扫描端口37000 - 44000就足够了。此外,应启用无线调试,并且在nmap扫描期间需要解锁设备。如果nmap第一次未找到端口,请再次运行。
我已将该命令添加到别名中,以便易于运行
例如:
alias adbw='adb connect 192.168.0.7:$(nmap $IP -p 37000-44000 | awk "/\/tcp/" | cut -d/ -f1)'
要下次连接:
1.解锁器械
1.启用无线调试(可以将其添加到状态栏图标)
1.如果设置了别名,则运行adbw
Ex输出:
connected to 192.168.0.7:38395

oxcyiej7

oxcyiej72#

您可以在adb tcpip重新启动之前固定端口
与动态端口配对连接后
尝试adb tcpip 5555
然后你可以使用adb connect ip:5555直到重新启动(ya重新启动后,你必须与动态端口连接,并再次设置tcpip为5555)
编辑:每当我重新启动手机时,我都会运行这个命令

adbw() {
    adb connect $IP:$1
    adb tcpip 5555
    adb disconnect
    adb connect $IP:5555
}
sf6xfgos

sf6xfgos3#

我喜欢Build3r的答案,所以我把它移植到powershell,你只需要安装nmap这是可用于Windows:
nmap YOUR_IP -p 37000-44000 | Where-Object{$_ -match "tcp open"} | ForEach-Object {$_.split("/")[0]}
我在PATH中的python脚本中使用了该函数

ret=subprocess.run(["powershell","-command",F'nmap {ip} -p 37000-44000 | Where-Object{{$_ -match "tcp open"}} | ForEach-Object {{$_.split("/")[0]}}'],capture_output=True)
port=ret.stdout.decode().strip()
zkure5ic

zkure5ic4#

由于Android Studio的最新更新,这个问题现在得到了解决。
所有步骤现在都可以自动执行:
1.在Android设置中打开无线调试。→这可以通过一个简单的Tasker配置文件自动完成:当连接到你的办公室wifi,设置一个自定义设置,以启用无线调试如下:

或者如果你不需要全自动化,你可以添加一个快速开关,在Pixel 3上,它可以在Settings > System > Developer options > Quick settings developer tiles > Wireless debugging中完成

  1. Android Studio Bumblebee 2021.1.1现在会自动(几秒钟后)检测设备并连接到它!🎉不再复制端口号。
lvjbypge

lvjbypge5#

Android通过服务类型为._adb-tls-connect._tcp的mDNS/DNS-SD广播连接详细信息。
你可以使用avahi-browse之类的工具来发现启用了无线adb的Android设备。

$ avahi-browse --terminate --resolve _adb-tls-connect._tcp
+    br0 IPv6 adb-26df62cd-sGvUmf                           _adb-tls-connect._tcp local
+    br0 IPv4 adb-26df62cd-sGvUmf                           _adb-tls-connect._tcp local
+ enp5s0 IPv6 adb-26df62cd-sGvUmf                           _adb-tls-connect._tcp local
=    br0 IPv6 adb-26df62cd-sGvUmf                           _adb-tls-connect._tcp local
   hostname = [Android.local]
   address = [10.0.0.199]
   port = [37531]
   txt = ["v=ADB_SECURE_SERVICE_VERSION"]
=    br0 IPv4 adb-26df62cd-sGvUmf                           _adb-tls-connect._tcp local
   hostname = [Android.local]
   address = [10.0.0.199]
   port = [37531]
   txt = ["v=ADB_SECURE_SERVICE_VERSION"]
= enp5s0 IPv6 adb-26df62cd-sGvUmf                           _adb-tls-connect._tcp local
   hostname = [Android.local]
   address = [10.0.0.199]
   port = [37531]
   txt = ["v=ADB_SECURE_SERVICE_VERSION"]

然后您可以使用服务名称进行连接。

$ adb connect adb-26df62cd-sGvUmf
connected to adb-26df62cd-sGvUmf._adb-tls-connect._tcp

或者使用地址和端口。

$ adb connect 10.0.0.199:37531
connected to 10.0.0.199:37531
y3bcpkx1

y3bcpkx16#

我发现,一旦你配对了设备,你就再也不会被要求任何东西来连接到那个设备(除非你后来手动撤销权限)。
要从adb配对设备,首先必须确保此检查表中的以下内容:
1.您位于同一网络上(例如:笔记本电脑和手机)
1.您已在电话上激活无线调试
一旦你确认了这些东西,你必须去开发者菜单在你的手机(一个你可以找到无线调试选项)。进入该子菜单,并前往选项“与代码配对”。一个弹出窗口与某些数据将显示。与视线,你去终端,把这个命令:

abd pair <your-device-ip>:<device-port> <pairing-code>

完成后,当您在笔记本电脑中执行adb devices时,您将始终在设备列表中看到该设备(如果完成了检查表中的所有要点)

amrnrhlw

amrnrhlw7#

Build3ranswer基础上构建,下面是PowerShell代码段,以便获得Windows上无线adb的一行解决方案:

adb connect $IP`:$(((nmap $IP -p 37000-44000 | sls tcp) -Split '/')[0])

您需要事先通过以下方式定义设备IP(DHCP永久租约将派上用场):

$IP="192.168.0.69"

在使用此代码片段之前,需要一些关于adb配对的文档:https://developer.android.com/studio/command-line/adb#wireless-android11-command-line

相关问题