DeviceHub项目远程ADB服务器配置与数据持久化实践

DeviceHub项目远程ADB服务器配置与数据持久化实践

项目背景

DeviceHub是一个基于STF框架扩展的设备管理平台,用于远程管理和控制Android设备。近期项目进行了架构调整,将Provider组件从主机运行迁移到Docker容器中运行,这带来了一些配置上的变化。

配置变更要点

1. 远程ADB服务器配置

在旧版本中,用户可以通过直接在主机上运行命令来连接远程ADB服务器:

MONGODB_PORT_27017_TCP=mongodb://localhost:27017 stf provider --connect-sub "tcp://localhost:7250" --connect-push "tcp://localhost:7270" --storage-url "http://10.99.0.59:8082" --public-ip 10.99.0.59 --allow-remote --adb-host 10.99.0.112 --adb-port 5037

新版本推荐完全在Docker环境中运行,需要在docker-compose-prod.yaml中修改provider服务的配置:

devicehub-provider:
    build: .
    image: vkcom/devicehub
    container_name: devicehub-provider
    env_file:
        - scripts/variables.env
    command: stf provider --name devicehub-provider --allow-remote --adb-host 10.99.0.112 --adb-port 5037 --no-cleanup --connect-sub tcp://devicehub-triproxy-dev:7250 --connect-push tcp://devicehub-triproxy-dev:7270 --storage-url https://${STF_DOMAIN}:${STF_PORT}/ --public-ip https://${STF_DOMAIN}:${STF_PORT} --min-port=12010 --max-port=12100 --heartbeat-interval 10000 --screen-ws-url-pattern "wss://${STF_DOMAIN}:${STF_PORT}/d/devicehub-provider/<%= publicPort %>/"

2. ADB健康检查配置

对于使用远程ADB服务器的情况,还需要修改adbd服务的健康检查配置:

adbd:
    container_name: adbd
    image: "devicefarmer/adb:latest"
    healthcheck:
        test: nc -vz 10.99.0.112 5037  # 修改为实际的ADB服务器地址

常见问题解决方案

1. 设备服务安装失败

当出现INSTALL_FAILED_VERSION_DOWNGRADE错误时,表示设备上已安装了较新版本的STFService。解决方案:

  1. 手动卸载设备上的DeviceHubService应用
  2. 重新连接设备
  3. 系统会自动安装正确版本的服务

2. 数据持久化问题

早期版本中,用户和组数据在容器重启后会丢失。最新版本已通过以下方式解决:

  1. 为MongoDB配置了持久化存储卷
  2. 确保数据目录在容器重启后保持不变
  3. 修改了容器启动顺序,确保数据服务先于应用服务启动

最佳实践建议

  1. 升级流程:更新项目代码后,建议:

    • 备份重要数据
    • 停止并删除旧容器
    • 重新创建容器以应用新配置
  2. 网络配置

    • 确保Docker容器能访问到远程ADB服务器
    • 检查防火墙设置,开放必要的端口
  3. 设备管理

    • 定期检查设备上的Agent版本
    • 遇到控制问题时,首先尝试重新安装Agent

通过以上配置和解决方案,用户可以顺利地将DeviceHub部署在Docker环境中,并实现稳定的远程设备管理功能。

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

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

抵扣说明:

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

余额充值