基于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 .aar文件用法小结

    创建Android库的方法及Android .aar文件用法小结

    本文给大家介绍了创建Android库的方法及Android中 .aar文件生成方法与用法详解,涉及到创建库模块操作步骤及开发注意事项,需要的朋友参考下吧
    2017-12-12
  • Android下拉刷新官方版

    Android下拉刷新官方版

    这篇文章主要介绍了Android下拉刷新官方版的的相关资料,帮助大家实现Android下拉刷新,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Android如何在root设备上开启ViewServer详解

    Android如何在root设备上开启ViewServer详解

    这篇文章主要给大家介绍了关于Android中如何在root设备上开启ViewServer的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-12-12
  • 自定义View之kotlin绘制折线图实例教程

    自定义View之kotlin绘制折线图实例教程

    折线图是我们在开发中经常会遇到的一个需求,下面这篇文章主要给大家介绍了关于自定义View之kotlin绘制折线图的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-09-09
  • Kotlin Dispatchers协程调度器源码深入分析

    Kotlin Dispatchers协程调度器源码深入分析

    Kotlin协程不是什么空中阁楼,Kotlin源代码会被编译成class字节码文件,最终会运行到虚拟机中。所以从本质上讲,Kotlin和Java是类似的,都是可以编译产生class的语言,但最终还是会受到虚拟机的限制,它们的代码最终会在虚拟机上的某个线程上被执行
    2022-11-11
  • Android 自定义View实现抽屉效果

    Android 自定义View实现抽屉效果

    这篇文章主要介绍了Android 自定义View实现抽屉效果的相关资料,需要的朋友可以参考下
    2017-05-05
  • Android Jetpack组件DataBinding详解

    Android Jetpack组件DataBinding详解

    这篇文章主要介绍了Android Jetpack组件DataBinding,DataBinding有很多优势,其中最明显是代码更加简洁,可读性会更高。部分和UI控件有关的代码可以在布局文件当中完成,本文给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • 说说Android的UI刷新机制的实现

    说说Android的UI刷新机制的实现

    这篇文章主要介绍了说说Android的UI刷新机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 详解Android使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayou实现手指滑动效果

    详解Android使用CoordinatorLayout+AppBarLayout+CollapsingToolbarL

    这篇文章主要为大家详细介绍了Android使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayou实现手指滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Android标题栏中添加返回按钮功能

    Android标题栏中添加返回按钮功能

    标题栏中的返回按钮在实际使用中用的比较多,今天就来讲讲我在项目开发中的使用经历,需要的朋友参考下吧
    2017-04-04

最新评论