草庐IT

【Android】ADB无线连接Android设备

宾有为 2023-04-05 原文

目录

简介

Android Debug Bridge,简称adb,是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

  • 客户端:用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
  • 守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。
  • 服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。

无线连接的条件

使用adb无线连接设备,应具备以下条件:

  • 一台安装了Android Studio开发工具的电脑。
  • 一台与电脑处于同一网段的Android设备(一般可通过连接相同wifi、宽带实现网段相同)。
  • 在电脑使用cmd执行 ping <Android设备ip地址> 能够ping通。

adb连接设备

方法一

当满足上述提到的条件,就可以开始连接了。

打开cmd.exe或Android Studio软件里面底部的Terminal工具,输入以下命令:

adb connect <ip地址>:5555

连接上的设备可以通过执行adb devices命令查看

adb devices

设备连接上,就可以查看并对设备进行安装调试的工作了

连接上的设备可通过执行adb disconnect <ip地址>:5555断开连接

adb disconnect <ip地址>:5555

部分设备默认端口不是5555,需要手动修改,请看下方的修改端口号。

方法二

使用方法二进行adb连接,应该是出现了使用方法一连接不通adb的情况,这时候就可以使用方法二来进行连接。

  1. 需要将USB线(可以传输数据的USB线)连接安卓和开发电脑,在开发者选项中开启USB调试,并将USB配置为MTP(多媒体传输)。
  2. 在电脑上打开cmd命令行窗口,输入adb devices,如果出现有设备,表示电脑已通过USB连接上手机。
  3. 接着在cmd命令行窗口输入两条命令:
    adb root   <!-- 使用root权限重新启动adbd -->
    adb shell  <!-- 进入到Android系统的shell -->
    
  4. 输入命令,将设备端口改为5555,将5555改为-1则表示打开adb的USB调试功能。
    setprop.service.adb.tcp.port 5555
    
  5. 输入exit命令,退出shell。
  6. 设置目标设备以监听端口 5555 上的 TCP/IP 连接。
    adb tcpip 5555
    
  7. 拔掉USB线,输入connect连接命令即可完成连接。
    adb connect <ip地址>:5555
    

修改端口号

方法一

端口号修改,使用到Github上标星31.5k的AndroidUtilCode,该工具有提供相关类在Android设备上执行cmd命令。

引入:

implementation 'com.blankj:utilcodex:1.30.1'

Java代码:

ShellUtils.CommandResult openAdb = ShellUtils.execCmd("setprop service.adb.tcp.port 5555", AppUtils.isAppRoot());

AndroidUtilCode使用教程

方法二

使用数据线连接上设备,执行命令adb tcpip 5555,将端口号重置为5555。

adb tcpip 5555

修改端口号后,拔掉数据线,执行adb命令出现连接失败的情况,这是修改失败了,可尝试下方问题集合的第二点解决问题。

值得注意的是,Android官方在Android 11+的设备推出了升级版的无线调试,届时直接扫描Android studio开发工具生成的二维码即可连接,简单又便捷。

辅助工具

adb工具的使用前提是必须先连接上设备

android-tool

android-tool是一个Flutter编写的程序,支持Windows、Mac、Linux系统,它将adb的众多命令封装成一个个小小的功能,极大的提高了执行adb相关操作的效率。

链接:用Flutter开发一个桌面端ADB工具应用

scrcpy-gui

scrcpy-gui是一个无需root权限即可在pc端操控Android设备的工具。

链接:scrcpy-gui

问题集合

1、missing port in specification: tcp:192.168.31.209
原因:缺少端口。
解决方案:加上端口,默认为5555

2、cannot connect to 192.168.31.209:5555: 由于目标计算机积极拒绝,无法连接。 (10061)
原因:端口号不对。
解决方案:安装一个app使用adb命令配置端口号。最好是使用数据线连接上设备,执行adb tcpip 5555命令监听端口 5555 上的 TCP/IP 连接,响应restarting in TCP mode port: 5555后,拔掉数据线执行连接命令即可。

3、ping不通怎么办?

解决方案

  • 检查ping的ip地址是否正确,pc端的ip地址与移动端的ip地址网段是否相同。
  • 若提示无法访问目标主机,如果核对ip、网段都没错,是移动端设备还没有root,不允许你访问

    需要下载相关的root工具将设备给root掉,root成功就可以ping通。
    设备root成功,若是还不能够ping通,请切换无线连接的WiFi再次尝试。

其它问题暂未遇到,如本文提供方法无法处理,请查看下方的参考文档。若无法连接,请放弃使用adb无线连接的方案,改用可传输数据的数据线进行连接。

参考文档

有关【Android】ADB无线连接Android设备的更多相关文章

  1. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  2. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  3. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  4. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  5. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  6. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  7. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  8. ruby-on-rails - 禁用设备的 :confirmable on-the-fly to batch-generate users - 2

    Devise是一个Ruby库,它为我提供了这个User类:classUser当写入:confirmable时,注册时会发送一封确认邮件。上周我不得不批量创建300个用户,所以我在恢复之前注释掉了:confirmable几分钟。现在我正在为用户批量创建创建一个UI,因此我需要即时添加/删除:confirmable。(我也可以直接修改Devise的源码,但我宁愿不去调和它)问题:如何即时添加/删除:confirmable? 最佳答案 WayneConrad的解决方案:user=User.newuser.skip_confirmation

  9. ruby-on-rails - 连接字符串时如何在 <%=%> block 内输出 html_safe? - 2

    考虑一下:现在这些情况:#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2我需要用其他字符串输出URL。我如何保证&符号不会被转义?由于我无法控制的原因,我无法发送&。求助!把我的头发拉到这里:\编辑:为了澄清,我实际上有一个像这样的数组:@images=[{:id=>"fooid",:url=>"http://

  10. ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字 - 2

    我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d

随机推荐