基于adbkit的android设备管理(精简版stf)

 更新时间:2023年09月12日 15:11:29   作者:椒排  
这篇文章主要为大家介绍了基于adbkit的android设备管理(精简版stf)详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

起因

是看到stf(设备管理平台)有开源了adbkit这个精简的adb交互库,又觉得部署stf太麻烦了,就想着用adbkit实现一个精简的设备管理,用于自动化测试

思路

先引入adbkit

前期首先这是一个node项目,先引入adbkit

npm install adbkit --save

监听设备

把多个android手机插入同一台电脑,如果每次都用adb devices去查询,未免有些太过麻烦,而adbkit提供了监听的方法

const client = AdbInteraction.getInstance().getClient()
client.trackDevices().then((tracker) => {
  tracker.on("add", async (device) => {
   console.log(device.id)
  }
}

其中的device.id就是设备的serial号(即adb devices中的id)

设备管理

当设备连接后,可以在监听事件中对设备分配一个端口,并绑定端口

const client = AdbInteraction.getInstance().getClient()
const bridge = {}
client.trackDevices().then((tracker) => {
  tracker.on("add", async (device) => {
    // 指定一个端口,或者可以写一个方法去分配
    const availablePort = 3000
    // 创建一个adb usb连接
    bridge[serial] = client.createTcpUsbBridge(serial, { auth: () => Promise.resolve() })
    // 绑定端口
    bridge[serial].listen(availablePort).on("error", (e) => {
        console.log("err" + e)
    })
    // 设备信息写入数据库
    // 如serial号,port号
  }
}

这里我们假设分配3001端口给刚刚连接到的设备,直接执行命令

adb connect ip:3001

这里的ip是插着android设备的那台主机,这样我们就成功连接了设备

管理多个设备

按照这个思路,我们可以同时开发出一套服务,通过调用接口来查询当前连接着的设备
我们选用koa2的框架

git clone https://github.com/javieraviles/node-typescript-koa-rest.git

然后进行这个项目的教学进行常规部署

npm install
npm run watch-server

在controller层定义接口(有点像spring)

我们可以从controller定义一个接口,去从数据库中读取我们刚才保存过的数据

@request("get", "/devices")
@summary("Find devices")
public static async deviceList(ctx: any): Promise<void> {
  console.log(ctx.query.biz)
  ctx.status = 200;
  // 这里的数据来源于数据库,可自定义实现
  ctx.body = DeviceDbManager.getInstance().fetchDeviceList();
}

我们可以返回这样的格式

[
  {
  "serial": "#####",
  "ip": "192.168.x.x",
  "port": 3001,
  "connStatus": 1,
  "updateTime": "2023-08-31T04:53:55.113Z"
  }
]

至此就可以实现一个简单的设备管理,查询

也可以对设备进行借用、释放等操作

完整的项目也在这个地址分享 https://github.com/sonar-su/android-device-manager

以上就是基于adbkit的android设备管理(精简版stf)的详细内容,更多关于adbkit android设备管理的资料请关注脚本之家其它相关文章!

相关文章

  • Android自定义橡皮擦效果

    Android自定义橡皮擦效果

    这篇文章主要为大家详细介绍了Android自定义橡皮擦效果,橡皮擦擦图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Anroid四大组件service之本地服务的示例代码

    Anroid四大组件service之本地服务的示例代码

    本篇文章主要介绍了Anroid四大组件service之本地服务的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Android 更改 Toast 的默认位置方法

    Android 更改 Toast 的默认位置方法

    下面小编就为大家带来一篇Android 更改 Toast 的默认位置方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Android自定义控件简单实现侧滑菜单效果

    Android自定义控件简单实现侧滑菜单效果

    这篇文章主要为大家详细介绍了Android自定义控件打造史上最简单的侧滑菜单的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Android编程使用自定义shape实现shadow阴影效果的方法

    Android编程使用自定义shape实现shadow阴影效果的方法

    这篇文章主要介绍了Android编程使用自定义shape实现shadow阴影效果的方法,涉及Android中xml文件布局的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Android OKHttp源码解析Https安全处理

    Android OKHttp源码解析Https安全处理

    这篇文章主要为大家介绍了Android OKHttp源码解析Https安全处理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android对话框自定义标题 对话框标题美化操作

    Android对话框自定义标题 对话框标题美化操作

    这篇文章主要为大家详细介绍了Android对话框自定义标题的相关资料,如何对对话框标题进行美化操作,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android性能优化之图片大小,尺寸压缩综合解决方案

    Android性能优化之图片大小,尺寸压缩综合解决方案

    随着Android手机的越来越先进,给我们开发者而言传递的图片也是越来越大,这个时候我们可以对一些没有必要原图展示的图片进行压缩,这篇文章主要给大家介绍了关于Android性能优化之图片大小,尺寸压缩的综合解决方案,需要的朋友可以参考下
    2022-04-04
  • Android Admob接入原理及完整教程示例

    Android Admob接入原理及完整教程示例

    这篇文章主要为大家介绍了Android Admob接入原理及完整教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android SDK中的Support兼容包详解

    Android SDK中的Support兼容包详解

    这篇文章主要介绍了Android SDK中的Support兼容包详解,本文详细区分了Support Library的版本区别、各种Theme的概念和使用注意事项等内容,需要的朋友可以参考下
    2015-05-05

最新评论