半自动开启adb无线调试

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 牙叔教程 简单易懂

牙叔教程 简单易懂


无线调试是什么

安卓11增加了无线调试开关, 也就是完全不用数据线, 只要手机和电脑在同一个局域网, 就可以进行adb调试,

无线调试开启方法请参考: Wi-Fi 调试(Android 11 及更高版本,无需借助 USB)


无线调试流程

  1. 每次连接的ip基本是固定的, 但是port端口是随机的, 所以每次都要获取最新的端口
  2. 在命令行中输入 adb connect 192.168.101.31:38549


看上去只有两步, 但是每一步都有N步, 细分下来是这样的步骤:

  1. 手机回到桌面
  2. 眼睛看设置图标在哪里
  3. 点击设置图标
  4. 往下翻找到更多设置
  5. 再往下翻找到开发者选项
  6. 再往下翻找到无线调试
  7. ......


是不是步骤细分之后, 特别特别的繁琐, 凡事就怕细究,

下面我们来做成半自动的方法, 就不用每次都做这么繁琐的事情了


半自动无线调试流程

  1. 获取ip和port, 并用机器人发送到钉钉
  2. 手动复制钉钉消息中的命令
  3. 点击bat


看上去只有3个步骤, 实际上细究下来, 还是有些麻烦, 不过起码比上面的繁琐程度低一些


源码讲解


获取ip和port

我是小米11pro, 有些代码只有小米才能用, 比如 .className("miui.widget.ClearableEditText")

获取ip的代码流程已经有非常详细的注释了, 相信使用小米手机的用户能看懂


这是autojs执行的代码

function getIpPort() {
  // 打开设置
  app.startActivity({
    packageName: "com.android.settings",
    className: "com.android.settings.SubSettings",
  });
  text("搜索系统设置项").visibleToUser(true).boundsInside(0, 0, device.width, device.height).waitFor();
  // 点击搜索框
  let view = idEndsWith("input").visibleToUser(true).boundsInside(0, 0, device.width, device.height).findOne();
  view.parent().parent().click();
  view = text("取消").visibleToUser(true).boundsInside(0, 0, device.width, device.height).waitFor();
  // 输入 无线调试
  view = visibleToUser(true)
    .className("miui.widget.ClearableEditText")
    .boundsInside(0, 0, device.width, device.height)
    .findOne();
  view.setText("无线调试");
  // 点击 无线调试
  view = text("无线调试")
    .className("android.widget.TextView")
    .visibleToUser(true)
    .boundsInside(0, 0, device.width, device.height)
    .findOne();
  view.parent().parent().click();
  // 获取ip和端口
  view = textMatches(/192\.168.*/)
    .className("android.widget.TextView")
    .visibleToUser(true)
    .boundsInside(0, 0, device.width, device.height)
    .findOne();
  return view.text();
}


用机器人发送到钉钉

添加机器人的方法, 也有详细的注释, 跟着操作即可.

找这个添加机器人的入口, 我都花了一些时间, 因为钉钉的界面和原来还不一样.

注意一下发送的消息, 直接就是 adb connect 192.168.101.31:38549,

一会你复制的时候, 就是复制这条消息


这是autojs执行的代码

function sendInfo(info) {
  // 打开钉钉群聊
  // 点击右上角设置
  // 点击智能群助手
  // 点击添加机器人
  // 点击添加机器人
  // 点击自定义
  // 点击添加
  let token = "78a6e03a7854e5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  let url = "https://oapi.dingtalk.com/robot/send?access_token=" + token;
  var temp = http.postJson(url, { msgtype: "text", text: { content: 'adb connect ' + info + " \n\n来自 牙叔教程" } });
  log(temp.body.string());
}

到了这一步, 需要手动复制一下 adb connect 192.168.101.31:38549


点击bat

这段代码的意思是

获取剪贴板内容, 然后cmd执行剪贴板内容, 精华部分是第一句


这是电脑执行的代码, 写入一个bat文件, 双击bat文件即可

' 2>nul&@start wscript -e:vbs "%~f0"&goto :eof
Set objHTML=CreateObject("htmlfile")
ClipboardText=objHTML.ParentWindow.ClipboardData.GetData("text")
set fso=wscript.createobject("scripting.filesystemobject")
set file=fso.opentextfile("123.txt",2,true)
file.writeline ClipboardText
Set obj = createobject("wscript.shell")
obj.run "cmd /c " & ClipboardText


上面的代码巧妙利用 bat 和 vbs 的语法特征,让同一个文件,被 cmd.exe 识别成批处理,让 wscrpt.exe 识别成 vbs,并且同时符合两者的语法,并且保证都没有错误,保证两者的高度兼容。就叫它 bat/vbs 复合编程吧 (Hybrid Programming)


start wscript -e:vbs "%~f0"


cmd.exe 识别成:启动 wscript.exe ,其参数是:
① -e:vbs 设定以vbs解析文件自身
② "%~f0" 指这个批处理本身。


wscript.exe 把这句识别成:调用一个叫 start 的函数,函数参数是 wscript 这个变量,然后用这个函数的结果来 减去 e。接下来是又是一个 : ,分行,然后又是调用一个名叫 vbs 的函数,参数是字符: "%~f0"


这句是最为精巧的,因为它成功的让 vbs 引擎解释了一段批处理,而且没有错误!当然这些 start()、vbs()函数是不存在的,但是会被 cmd.exe 当成命令执行。为什么不用 wscript //e:vbs "%~f0" 来执行呢?vbs解析会出错的,呵呵


环境

手机: Mi 11 Pro

Android版本: 11

Autojs版本: 9.0.11

电脑: win10


参考

批处理中直接执行vbs的方法
批处理保存剪贴板信息


名人名言


思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程


声明


部分内容来自网络
本教程仅用于学习, 禁止用于其他用途


相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
5月前
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
131 0
|
8月前
|
网络协议 Shell Android开发
Android 深入学习ADB调试原理(1)
Android 深入学习ADB调试原理(1)
341 1
|
8月前
|
安全 Java Shell
Android13 adb input 调试命令使用和源码解析
Android13 adb input 调试命令使用和源码解析
965 0
|
8月前
|
Shell Android开发
Android Activity重写dump方法实现通过adb调试代码
Android Activity重写dump方法实现通过adb调试代码
98 0
|
网络协议 Android开发 虚拟化
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
114 0
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
|
开发者
华为手机如何进行ADB调试
华为手机如何进行ADB调试
1505 0
|
开发工具 Android开发 开发者
Appium 移动端自动化 - Android SDK连接安卓手机,adb连接一加8手机USB调试实例演示,连接一加8手机不显示USB调试选项问题排查
Appium 移动端自动化 - Android SDK连接安卓手机,adb连接一加8手机USB调试实例演示,连接一加8手机不显示USB调试选项问题排查
501 0
|
XML 网络协议 Android开发
Android 源码添加无线调试 ADB 功能
Android 源码添加无线调试 ADB 功能
523 0
|
程序员 Shell 开发工具
737.【踩坑指南】调试adb连接模拟器
737.【踩坑指南】调试adb连接模拟器
221 0
|
Android开发 开发者
半自动开启adb无线调试(二)
牙叔教程 简单易懂
593 0