半自动开启adb无线调试(二)

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

牙叔教程 简单易懂


上次写了一篇 半自动开启adb无线调试

用的时候发现, 无线调试开关有时候自己就关闭了,

那么此时, 打开无线调试页面后, 页面是空的

无线调试必须在开启状态我们才能获取到IP和端口

获取IP和端口的新流程

  1. 打开开发者选项
  2. 滑动页面, 让无线调试按钮出现
  3. 确保打开无线按钮调试开关, 就是右边的蓝色按钮
  4. 点击无线调试按钮, 打开无线调试页面
  5. 获取ip和端口
  6. 发送消息到钉钉


// 每次adb无线调试都要自己打开开发者模式 查看端口
// 打开无线调试界面
// 把ip和端口发送到钉钉
engines.all().map((ScriptEngine) => {
  if (engines.myEngine().toString() !== ScriptEngine.toString()) {
    ScriptEngine.forceStop();
  }
});
threads.start(function () {
  let view = text("立即开始").visibleToUser(true).boundsInside(0, 0, device.width, device.height).findOne();
  view.click();
});
// 请求截图
if (!requestScreenCapture()) {
  toast("请求截图失败");
  exit();
}
/* -------------------------------------------------------------------------- */
let info = getIpPort();
sendInfo(info);
function sendInfo(info) {
  // 打开钉钉群聊
  // 点击右上角设置
  // 点击智能群助手
  // 点击添加机器人
  // 点击添加机器人
  // 点击自定义
  // 点击添加
  let token = "78axxxxxxxxxxxxxxxxxxxxxxxxx9b8e7549eb";
  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());
}
function slide() {
  let view = idEndsWith("recycler_view")
    .visibleToUser(true)
    .boundsInside(0, 0, device.width, device.height)
    .findOne(1000);
  view && view.scrollForward();
  sleep(1000);
}
function appearWirelessDebugging() {
  for (var i = 0; i < 2; i++) {
    let view = text("无线调试").visibleToUser(true).boundsInside(0, 0, device.width, device.height).findOne(1000);
    if (view) {
      log("无线调试按钮 出现");
      return true;
    } else {
      slide();
    }
  }
  return false;
}
function getWirelessDebuggingSwitchView() {
  let view = text("无线调试").visibleToUser(true).boundsInside(0, 0, device.width, device.height).findOne();
  let parentView = view.parent().parent();
  let rect = parentView.bounds();
  view = className("android.widget.Switch")
    .visibleToUser(true)
    .boundsInside(rect.left, rect.top, rect.right, rect.bottom)
    .findOne();
  return view;
}
function getWirelessDebuggingSwitchStatus() {
  let view = getWirelessDebuggingSwitchView();
  let rect = view.bounds();
  let centerPoint = {
    x: rect.centerX(),
    y: rect.centerY(),
  };
  var img = captureScreen();
  let currentColor = images.pixel(img, centerPoint.x, centerPoint.y);
  log(colors.toString(currentColor));
  let blue = "#ff0d84ff";
  let r = colors.isSimilar(blue, currentColor);
  return r;
}
function openWirelessDebuggingSwitch() {
  threads.start(function () {
    let view = text("允许").visibleToUser(true).boundsInside(0, 0, device.width, device.height).findOne(3000);
    if (view) {
      view.click();
    }
  });
  let view = getWirelessDebuggingSwitchView();
  view.click();
  sleep(1000);
}
function getIpPort() {
  // 打开开发者选项
  let intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
  app.startActivity(intent);
  log("等待 开发者选项 出现 start");
  text("开发者选项")
    .visibleToUser(true)
    .boundsInside(0, 0, device.width, device.height / 2)
    .waitFor();
  log("等待 开发者选项 出现 end");
  if (!appearWirelessDebugging()) {
    return "滑动 2 次后, 没有找到无线调试按钮";
  }
  let status = getWirelessDebuggingSwitchStatus();
  log("无线开关状态: " + status);
  if (!status) {
    openWirelessDebuggingSwitch();
  }
  // 点击 无线调试
  let view = text("无线调试")
    .className("android.widget.TextView")
    .visibleToUser(true)
    .boundsInside(0, 0, device.width, device.height)
    .findOne();
  view.parent().parent().click();
  text("设备名称")
    .visibleToUser(true)
    .boundsInside(0, 0, device.width, device.height / 2)
    .waitFor();
  // 获取ip和端口
  view = textMatches(/192\.168.*/)
    .className("android.widget.TextView")
    .visibleToUser(true)
    .boundsInside(0, 0, device.width, device.height)
    .findOne();
  return view.text();
}


环境

手机: Mi 11 Pro

Android版本: 11

Autojs版本: 9.0.11

电脑: win10

名人名言


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


声明


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

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

热门文章

最新文章