DeviceFarmer/STF项目API使用指南:设备管理与远程调试

DeviceFarmer/STF项目API使用指南:设备管理与远程调试

stf stf 项目地址: https://gitcode.com/gh_mirrors/stf/stf

概述

DeviceFarmer/STF(Smartphone Test Farm)是一个强大的移动设备管理平台,它提供了一套完整的RESTful API接口,允许开发者通过编程方式管理测试设备。本文将详细介绍STF API的核心功能和使用方法,帮助开发者快速掌握设备管理、远程调试等关键操作。

API基础架构

STF API基于Swagger规范构建,这意味着:

  1. 接口定义清晰规范,符合RESTful设计原则
  2. 支持自动生成多种语言的客户端SDK
  3. 提供交互式API文档,便于开发者探索和测试接口

认证机制

STF采用OAuth 2.0认证机制,使用API前需要获取访问令牌:

  1. 登录STF Web界面
  2. 进入"设置"→"密钥"选项卡
  3. 生成新的访问令牌(注意:令牌仅显示一次,请妥善保存)

使用令牌时,需要在每个请求的Header中加入:

Authorization: Bearer YOUR-TOKEN-HERE

核心API功能详解

设备管理

获取设备列表

获取STF平台管理的所有设备信息(包括离线设备):

GET /api/v1/devices

可选参数:

  • fields:指定返回字段,如serial,using,ready
获取特定设备详情

通过设备序列号查询特定设备状态:

GET /api/v1/devices/{serial}
用户设备操作
  1. 占用设备(相当于Web界面的"使用"按钮):

    POST /api/v1/user/devices
    

    请求体需包含设备序列号:

    {"serial":"设备序列号"}
    
  2. 释放设备(相当于"停止使用"):

    DELETE /api/v1/user/devices/{serial}
    
  3. 查询用户当前占用的设备

    GET /api/v1/user/devices
    

远程调试功能

STF API提供了强大的远程调试支持:

  1. 建立远程连接

    POST /api/v1/user/devices/{serial}/remoteConnect
    

    返回示例:

    {
      "success": true,
      "remoteConnectUrl": "IP地址:端口号"
    }
    

    获取URL后,可通过adb connect IP地址:端口号连接设备。

  2. 断开远程连接

    DELETE /api/v1/user/devices/{serial}/remoteConnect
    

重要提示:使用远程调试前,请确保已将ADB公钥添加到STF系统中,否则设备可能处于未授权状态。

实用示例

Shell脚本示例

#!/bin/bash

# 设备管理函数库
function add_device {
  # 占用设备实现
  response=$(curl -X POST -H "Content-Type: application/json" \
           -H "Authorization: Bearer $STF_TOKEN" \
           --data "{\"serial\": \"$DEVICE_SERIAL\"}" $STF_URL/api/v1/user/devices)
  # 处理响应...
}

function remote_connect {
  # 建立远程连接实现
  response=$(curl -X POST -H "Authorization: Bearer $STF_TOKEN" \
            $STF_URL/api/v1/user/devices/$DEVICE_SERIAL/remoteConnect)
  # 处理响应并连接ADB...
}

function remove_device {
  # 释放设备实现
  response=$(curl -X DELETE -H "Authorization: Bearer $STF_TOKEN" \
            $STF_URL/api/v1/user/devices/$DEVICE_SERIAL)
  # 处理响应...
}

Node.js示例

设备连接与远程调试
const Swagger = require('swagger-client');

async function connectDevice(serial) {
  const client = await new Swagger({
    url: 'API地址',
    usePromise: true,
    authorizations: {
      accessTokenAuth: new Swagger.ApiKeyAuthorization('Authorization', 'Bearer 令牌', 'header')
    }
  });

  // 检查设备状态
  const deviceRes = await client.devices.getDeviceBySerial({
    serial: serial,
    fields: 'serial,present,ready,using,owner'
  });
  
  const device = deviceRes.obj.device;
  if (!device.present || !device.ready || device.using || device.owner) {
    throw new Error('设备不可用');
  }

  // 占用设备
  const addRes = await client.user.addUserDevice({
    device: { serial: device.serial, timeout: 900000 }
  });
  
  if (!addRes.obj.success) {
    throw new Error('占用设备失败');
  }

  // 获取远程连接URL
  const connectRes = await client.user.remoteConnectUserDeviceBySerial({
    serial: device.serial
  });
  
  return connectRes.obj.remoteConnectUrl;
}

最佳实践建议

  1. 错误处理:所有API调用都应包含完善的错误处理逻辑
  2. 资源释放:使用完设备后务必调用释放接口
  3. 超时设置:占用设备时设置合理的超时时间
  4. 字段过滤:只请求必要的字段以提高性能
  5. 日志记录:记录关键操作日志便于问题排查

总结

STF API为移动设备管理提供了强大的编程接口,通过合理使用这些接口,开发者可以:

  • 实现自动化设备分配和释放
  • 构建持续集成环境中的设备管理模块
  • 开发自定义的设备监控和管理工具
  • 集成到现有的测试框架中

掌握这些API的使用,将显著提升移动设备测试和开发的效率。

stf stf 项目地址: https://gitcode.com/gh_mirrors/stf/stf

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明树来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值