Skip to main content

盒子内SDK API 开发文档

MYT-SDK API 接口文档

更新日期 2026-1-16

📌 接口说明

访问地址: http://{主机IP}:8000/swagger

  • 主机IP:设备的网络IP地址(例如:192.168.99.108)
  • 端口:固定为 8000
  • 协议:HTTP

响应格式:所有接口统一返回JSON格式

{
"code": 0,
"message": "ok",
"data": { ... }
}
字段类型说明
codeint状态码,0表示成功,非0表示失败
messagestring状态信息
dataobject返回数据

📚 接口目录

  1. 基本信息
  2. 云机操作
  3. 云机备份
  4. 终端连接
  5. myt_bridge网卡管理
  6. 本地机型数据管理
  7. 接口认证
  8. 服务管理

一、基本信息

1. 获取API版本信息

功能说明:获取当前API版本信息

请求方式:GET

请求URL

http://{主机IP}:8000/info

请求参数:无

请求示例

curl "http://192.168.99.108:8000/info"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"latestVersion": 110,
"currentVersion": 108
}
}

返回字段说明

字段类型说明
latestVersionint线上最新版本号
currentVersionint当前本地版本号

失败返回

{
"code": 500,
"message": "获取版本信息失败",
"data": null
}

注意事项

  • 当 currentVersion < latestVersion 时,建议更新SDK

2. 获取设备基本信息

功能说明:获取当前设备的硬件和系统信息

请求方式:GET

请求URL

http://{主机IP}:8000/info/device

请求参数:无

请求示例

curl "http://192.168.99.108:8000/info/device"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"ip": "192.168.99.108",
"ip_1": "192.168.100.108",
"hwaddr": "AA:BB:CC:DD:EE:FF",
"hwaddr_1": "AA:BB:CC:DD:EE:F1",
"cputemp": 45,
"cpuload": "1.5",
"memtotal": "8GB",
"memuse": "4.2GB",
"mmctotal": "256GB",
"mmcuse": "120GB",
"version": "v1.1.0",
"deviceId": "MYT-P1-001",
"model": "P1",
"speed": "1000Mbps",
"mmcread": "150MB/s",
"mmcwrite": "120MB/s",
"sysuptime": "10天5小时",
"mmcmodel": "Samsung EVO",
"mmctemp": "38",
"network4g": "未连接",
"netWork_eth0": "已连接"
}
}

返回字段说明

字段类型说明
ipstring网口IP
ip_1string网口1的IP
hwaddrstringMAC地址
hwaddr_1stringMAC1地址
cputempintCPU温度
cpuloadstringCPU负载
memtotalstring内存总大小
memusestring内存已使用大小
mmctotalstring磁盘总大小
mmcusestring磁盘已使用大小
versionstring固件版本
deviceIdstring设备ID
modelstring型号版本
speedstring网口速率
mmcreadstring磁盘读取量
mmcwritestring磁盘写入量
sysuptimestring设备运行时间
mmcmodelstring磁盘型号
mmctempstring磁盘温度
network4gstring4G网卡状态
netWork_eth0stringETH0网卡状态

失败返回

{
"code": 500,
"message": "获取设备信息失败",
"data": null
}

二、云机操作

1. 获取安卓云机列表

功能说明:获取设备上所有安卓云机容器列表

请求方式:GET

请求URL

http://{主机IP}:8000/android

请求参数

参数名必选类型说明
namestring根据云机名过滤
runningbool根据云机是否运行过滤,false查询所有
indexNumint根据云机实例位序号过滤(0-24)

请求示例

# 获取所有云机
curl "http://192.168.99.108:8000/android"

# 根据名称过滤
curl "http://192.168.99.108:8000/android?name=test"

# 只获取运行中的云机
curl "http://192.168.99.108:8000/android?running=true"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"count": 2,
"list": [
{
"id": "abc123def456",
"name": "android-01",
"status": "running",
"indexNum": 1,
"dataPath": "/myt/data/android-01",
"modelPath": "/myt/model/android-01",
"image": "registry.example.com/android:v12",
"ip": "192.168.100.101",
"networkName": "myt_bridge",
"portBindings": {},
"dns": "223.5.5.5",
"doboxFps": "60",
"doboxWidth": "1080",
"doboxHeight": "1920",
"doboxDpi": "480",
"mgenable": "0",
"gmsenable": "0",
"s5User": "",
"s5Password": "",
"s5IP": "",
"s5Port": "",
"s5Type": "0",
"created": "2024-01-15 10:30:00",
"started": "2024-01-15 10:31:00",
"finished": "",
"customBinds": [],
"PINCode": ""
}
]
}
}

返回字段说明

字段类型说明
idstring云机容器ID
namestring云机名称
statusstring状态(running/stopped)
indexNumint云机实例位序号
dataPathstring云机Data文件在设备里的路径
modelPathstring云机机型文件在设备里的路径
imagestring云机所用的镜像
ipstring云机局域网IP
networkNamestring容器网卡名称
dnsstring云机DNS
doboxFpsstring云机FPS
doboxWidthstring云机分辨率的宽
doboxHeightstring云机分辨率的高
doboxDpistring云机DPI
mgenablestringmagisk开关,0-关,1-开
gmsenablestringgms开关,0-关,1-开
s5Userstrings5代理用户名
s5Passwordstrings5代理密码
s5IPstrings5代理IP
s5Portstrings5代理端口
s5Typestring代理类型,0-不开启,1-本地域名解析,2-服务器域名解析
createdstring云机容器创建时间
startedstring云机容器上次开启时间
finishedstring云机容器上次关闭时间
customBindsarray自定义文件映射
PINCodestring自定义屏幕锁屏密码

失败返回

{
"code": 500,
"message": "获取云机列表失败",
"data": null
}

2. 创建安卓云机

功能说明:创建一个新的安卓云机容器

请求方式:POST

请求URL

http://{主机IP}:8000/android

请求参数

参数名必选类型说明
namestring云机名称
imageUrlstring镜像完整地址
dnsstring云机DNS,例如223.5.5.5
modelIdstring线上机型ID
modelNamestring线上机型名称
LocalModelstring本地机型名称
modelStaticstring本地静态机型名称(优先级最高)
indexNumint实例序号,P1范围1-24,Q1范围1-12,传0自动分配
sandboxSizestring沙盒大小,例如16GB,32GB
offsetstring云机的开机时间
doboxFpsstring云机FPS
doboxWidthstring云机分辨率的宽
doboxHeightstring云机分辨率的高
doboxDpistring云机DPI
networkobject独立IP设置
startbool创建完成是否开机,默认true
mgenablestringmagisk开关,0-关,1-开,默认0
gmsenablestringgms开关,0-关,1-开,默认0
latitudefloat纬度
longitudefloat经度
countryCodestring国家代码,例如CN,US
portMappingsarray自定义端口映射
s5Userstrings5代理用户名
s5Passwordstrings5代理密码
s5IPstrings5代理IP
s5Portstrings5代理端口
s5Typestring代理类型,0-不开启,1-tun2socks,2-tun2proxy
mytBridgeNamestringmyt_bridge网卡名
customBindsarray自定义文件映射
PINCodestring屏幕锁屏密码,4-8位数字

network对象结构

字段类型说明
gwstring网关,例如192.168.100.1
ipstring云机要设置的IP
subnetstring掩码,例如192.168.100.0/24

portMappings数组元素结构

字段类型说明
containerPortint容器内端口
hostPortint主机端口
hostIPstring主机IP
protocolstring协议(tcp/udp),默认tcp

请求示例

curl -X POST "http://192.168.99.108:8000/android" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01",
"imageUrl": "registry.example.com/android:v12",
"dns": "223.5.5.5",
"modelId": "1",
"indexNum": 1,
"doboxFps": "60",
"doboxWidth": "1080",
"doboxHeight": "1920",
"doboxDpi": "480",
"start": true
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {
"id": "abc123def456789"
}
}

失败返回

{
"code": 500,
"message": "创建云机失败: 镜像不存在",
"data": null
}

注意事项

  • name必须唯一,不能与已有云机重名
  • imageUrl必须是已拉取到本地的镜像地址
  • indexNum范围:P1设备1-24,Q1设备1-12
  • modelStatic优先级高于LocalModel和线上机型

3. 重置安卓云机

功能说明:重置指定的安卓云机

请求方式:PUT

请求URL

http://{主机IP}:8000/android

请求参数

参数名必选类型说明
namestring云机名称
latitudefloat纬度
longitudefloat经度
countryCodestring国家代码,例如CN,US

请求示例

curl -X PUT "http://192.168.99.108:8000/android" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01",
"latitude": 39.9042,
"longitude": 116.4074,
"countryCode": "CN"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "重置云机失败: 云机不存在",
"data": null
}

注意事项

  • 重置会清除云机内的所有数据
  • 重置前请确保已备份重要数据

4. 删除安卓云机

功能说明:删除指定的安卓云机容器

请求方式:DELETE

请求URL

http://{主机IP}:8000/android

请求参数

参数名必选类型说明
namestring云机名称

请求示例

curl -X DELETE "http://192.168.99.108:8000/android" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "删除云机失败: 云机正在运行",
"data": null
}

注意事项

  • 删除操作不可恢复
  • 建议删除前先停止云机

5. 切换安卓镜像

功能说明:切换云机使用的安卓镜像

请求方式:POST

请求URL

http://{主机IP}:8000/android/switchImage

请求参数

参数名必选类型说明
namestring云机名称
imageUrlstring镜像完整地址
modelIdstring机型ID
LocalModelstring本地机型名称
modelStaticstring本地静态机型名称
dnsstring云机DNS
offsetstring云机的开机时间
doboxFpsstring云机FPS
doboxWidthstring云机分辨率的宽
doboxHeightstring云机分辨率的高
doboxDpistring云机DPI
networkobject独立IP设置
startbool切换完成是否开机,默认true
mgenablestringmagisk开关,0-关,1-开
gmsenablestringgms开关,0-关,1-开
latitudefloat纬度
longitudefloat经度
countryCodestring国家代码
s5Userstrings5代理用户名
s5Passwordstrings5代理密码
s5IPstrings5代理IP
s5Portstrings5代理端口
s5Typestring代理类型
customBindsarray自定义文件映射
PINCodestring屏幕锁屏密码

请求示例

curl -X POST "http://192.168.99.108:8000/android/switchImage" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01",
"imageUrl": "registry.example.com/android:v13",
"start": true
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {
"message": "镜像切换成功"
}
}

失败返回

{
"code": 500,
"message": "切换镜像失败: 镜像不存在",
"data": null
}

注意事项

  • 切换镜像会重置云机数据
  • 确保目标镜像已拉取到本地

6. 切换机型

功能说明:切换云机的机型配置

请求方式:POST

请求URL

http://{主机IP}:8000/android/switchModel

请求参数

参数名必选类型说明
namestring云机名称
modelIdstring机型ID
localModelstring本地机型名称
modelStaticstring本地静态机型名称
latitudefloat纬度
longitudefloat经度
countryCodestring国家代码

请求示例

curl -X POST "http://192.168.99.108:8000/android/switchModel" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01",
"modelId": "2",
"countryCode": "US"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "切换机型失败: 机型不存在",
"data": null
}

7. 拉取安卓镜像

功能说明:从镜像仓库拉取安卓镜像到本地

请求方式:POST

请求URL

http://{主机IP}:8000/android/pullImage

请求参数

参数名必选类型说明
imageUrlstring镜像完整地址

请求示例

curl -X POST "http://192.168.99.108:8000/android/pullImage" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "registry.example.com/android:v12"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "拉取镜像失败: 网络连接超时",
"data": null
}

注意事项

  • 拉取镜像可能需要较长时间,取决于网络速度和镜像大小
  • 确保设备有足够的磁盘空间

8. 启动安卓云机

功能说明:启动指定的安卓云机

请求方式:POST

请求URL

http://{主机IP}:8000/android/start

请求参数

参数名必选类型说明
namestring云机名称

请求示例

curl -X POST "http://192.168.99.108:8000/android/start" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "启动云机失败: 云机已在运行",
"data": null
}

9. 关闭安卓云机

功能说明:关闭指定的安卓云机

请求方式:POST

请求URL

http://{主机IP}:8000/android/stop

请求参数

参数名必选类型说明
namestring云机名称

请求示例

curl -X POST "http://192.168.99.108:8000/android/stop" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "关闭云机失败: 云机未运行",
"data": null
}

10. 重启安卓云机

功能说明:重启指定的安卓云机

请求方式:POST

请求URL

http://{主机IP}:8000/android/restart

请求参数

参数名必选类型说明
namestring云机名称

请求示例

curl -X POST "http://192.168.99.108:8000/android/restart" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "重启云机失败",
"data": null
}

11. 获取本地镜像列表

功能说明:获取设备上已拉取的Docker镜像列表

请求方式:GET

请求URL

http://{主机IP}:8000/android/image

请求参数

参数名必选类型说明
imageNamestring根据镜像名过滤

请求示例

curl "http://192.168.99.108:8000/android/image"

# 根据名称过滤
curl "http://192.168.99.108:8000/android/image?imageName=android"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"count": 2,
"list": [
{
"id": "sha256:abc123",
"imageUrl": "registry.example.com/android:v12",
"size": "2.5GB",
"created": "2024-01-10 08:00:00",
"labels": {
"version": "12",
"type": "android"
}
},
{
"id": "sha256:def456",
"imageUrl": "registry.example.com/android:v13",
"size": "2.8GB",
"created": "2024-01-15 10:00:00",
"labels": {
"version": "13",
"type": "android"
}
}
]
}
}

返回字段说明

字段类型说明
idstring镜像ID
imageUrlstring镜像完整地址
sizestring镜像大小
createdstring创建时间
labelsobject镜像labels

失败返回

{
"code": 500,
"message": "获取镜像列表失败",
"data": null
}

12. 删除本地镜像

功能说明:删除设备上的本地Docker镜像

请求方式:DELETE

请求URL

http://{主机IP}:8000/android/image

请求参数

参数名必选类型说明
imageUrlstring要删除的镜像完整地址

请求示例

curl -X DELETE "http://192.168.99.108:8000/android/image" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "registry.example.com/android:v12"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "删除镜像失败: 镜像正在被使用",
"data": null
}

注意事项

  • 正在被云机使用的镜像无法删除
  • 删除前请确保没有云机依赖该镜像

13. 获取本地镜像压缩包列表

功能说明:获取设备上的镜像压缩包文件列表

请求方式:GET

请求URL

http://{主机IP}:8000/android/imageTar

请求参数

参数名必选类型说明
filenamestring根据文件名过滤

请求示例

curl "http://192.168.99.108:8000/android/imageTar"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"count": 2,
"list": [
{
"name": "android_v12.tar",
"size": "2.5GB"
},
{
"name": "android_v13.tar",
"size": "2.8GB"
}
]
}
}

失败返回

{
"code": 500,
"message": "获取镜像压缩包列表失败",
"data": null
}

14. 删除本地镜像压缩包

功能说明:删除设备上的镜像压缩包文件

请求方式:DELETE

请求URL

http://{主机IP}:8000/android/imageTar

请求参数

参数名必选类型说明
filenamestring要删除的镜像压缩包名称

请求示例

curl -X DELETE "http://192.168.99.108:8000/android/imageTar" \
-H "Content-Type: application/json" \
-d '{
"filename": "android_v12.tar"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "删除镜像压缩包失败: 文件不存在",
"data": null
}

15. 导出安卓镜像

功能说明:将本地镜像导出为压缩包文件

请求方式:POST

请求URL

http://{主机IP}:8000/android/image/export

请求参数

参数名必选类型说明
imageUrlstring要导出的镜像完整地址

请求示例

curl -X POST "http://192.168.99.108:8000/android/image/export" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "registry.example.com/android:v12"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {
"filename": "android_v12_20240115.tar"
}
}

失败返回

{
"code": 500,
"message": "导出镜像失败: 磁盘空间不足",
"data": null
}

注意事项

  • 导出过程可能需要较长时间
  • 确保设备有足够的磁盘空间

16. 下载导出后的安卓镜像包

功能说明:下载已导出的镜像压缩包文件

请求方式:GET

请求URL

http://{主机IP}:8000/android/image/download

请求参数

参数名必选类型说明
filenamestring要下载的镜像包名

请求示例

curl "http://192.168.99.108:8000/android/image/download?filename=android_v12.tar" -o android_v12.tar

成功返回

  • 返回文件的二进制数据,浏览器会自动下载

失败返回

{
"code": 500,
"message": "下载失败: 文件不存在",
"data": null
}

17. 导入安卓镜像

功能说明:通过上传tar文件导入安卓镜像

请求方式:POST

请求URL

http://{主机IP}:8000/android/image/import

Content-Typemultipart/form-data

请求参数

参数名必选类型说明
filefile导入镜像包文件,tar格式

请求示例

curl -X POST "http://192.168.99.108:8000/android/image/import" \
-F "file=@android_v12.tar"

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "导入镜像失败: 文件格式错误",
"data": null
}

注意事项

  • 仅支持tar格式的镜像包
  • 导入过程可能需要较长时间

18. 导出安卓云机

功能说明:将安卓云机导出为压缩包

请求方式:POST

请求URL

http://{主机IP}:8000/android/export

请求参数

参数名必选类型说明
namestring云机名称

请求示例

curl -X POST "http://192.168.99.108:8000/android/export" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {
"exportName": "android-01_20240115.zip"
}
}

失败返回

{
"code": 500,
"message": "导出云机失败: 云机正在运行",
"data": null
}

注意事项

  • 建议导出前先停止云机
  • 导出文件包含云机的完整数据

19. 导入安卓云机

功能说明:通过上传文件导入安卓云机

请求方式:POST

请求URL

http://{主机IP}:8000/android/import

Content-Typemultipart/form-data

请求参数

参数名必选类型说明
filefile导入使用本SDK导出的安卓云机
indexNumint实例序号,P1范围1-24,Q1范围1-12
namestring导入后云机名称

请求示例

curl -X POST "http://192.168.99.108:8000/android/import" \
-F "file=@android-01_20240115.zip" \
-F "indexNum=2" \
-F "name=android-02"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"name": "android-02"
}
}

失败返回

{
"code": 500,
"message": "导入云机失败: 实例位已被占用",
"data": null
}

注意事项

  • 仅支持本SDK导出的云机文件
  • indexNum不能与已有云机冲突

20. 获取机型列表

功能说明:获取线上可用的机型列表

请求方式:GET

请求URL

http://{主机IP}:8000/android/phoneModel

请求参数:无

请求示例

curl "http://192.168.99.108:8000/android/phoneModel"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"total": 50,
"list": [
{
"id": "1",
"name": "Samsung Galaxy S23",
"md5": "abc123def456",
"status": "active",
"currentVersion": 1,
"sdk_ver": "v1.1.0",
"createdAt": 1705286400
},
{
"id": "2",
"name": "Xiaomi 14",
"md5": "def456ghi789",
"status": "active",
"currentVersion": 1,
"sdk_ver": "v1.1.0",
"createdAt": 1705286400
}
]
}
}

返回字段说明

字段类型说明
idstring机型ID
namestring机型名称
md5string机型文件MD5
statusstring状态
currentVersionint当前版本
sdk_verstring对应SDK版本
createdAtint64创建时间戳

失败返回

{
"code": 500,
"message": "获取机型列表失败",
"data": null
}

21. 获取国家代码列表

功能说明:获取可用的国家代码列表

请求方式:GET

请求URL

http://{主机IP}:8000/android/countryCode

请求参数:无

请求示例

curl "http://192.168.99.108:8000/android/countryCode"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"count": 200,
"list": [
{
"countryName": "中国",
"countryCode": "CN"
},
{
"countryName": "美国",
"countryCode": "US"
},
{
"countryName": "日本",
"countryCode": "JP"
}
]
}
}

失败返回

{
"code": 500,
"message": "获取国家代码列表失败",
"data": null
}

22. 设置Macvlan

功能说明:设置Macvlan网络配置

请求方式:POST

请求URL

http://{主机IP}:8000/android/macvlan

请求参数

参数名必选类型说明
gwstring网关,例如192.168.100.1
subnetstring掩码,例如192.168.100.0/24

请求示例

curl -X POST "http://192.168.99.108:8000/android/macvlan" \
-H "Content-Type: application/json" \
-d '{
"gw": "192.168.100.1",
"subnet": "192.168.100.0/24"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "设置Macvlan失败: 网关格式错误",
"data": null
}

注意事项

  • 设置后需要重启相关云机才能生效
  • 确保网关和子网配置正确

23. 设置云机容器IP (Macvlan模式)

功能说明:在Macvlan模式下设置云机容器的IP地址

请求方式:POST

请求URL

http://{主机IP}:8000/android/macvlan

请求参数

参数名必选类型说明
namestring云机名称
ipstring云机要设置的IP

请求示例

curl -X POST "http://192.168.99.108:8000/android/macvlan" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01",
"ip": "192.168.100.101"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "设置IP失败: IP已被占用",
"data": null
}

24. 修改云机容器名称

功能说明:修改云机容器的名称

请求方式:POST

请求URL

http://{主机IP}:8000/android/rename

请求参数

参数名必选类型说明
namestring云机当前名称
newNamestring云机新名称

请求示例

curl -X POST "http://192.168.99.108:8000/android/rename" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01",
"newName": "my-android"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "修改名称失败: 新名称已存在",
"data": null
}

注意事项

  • 新名称不能与已有云机重名
  • 建议在云机停止状态下修改

25. 获取机型备份列表

功能说明:获取已备份的机型数据列表

请求方式:GET

请求URL

http://{主机IP}:8000/android/backup/model

请求参数:无

请求示例

curl "http://192.168.99.108:8000/android/backup/model"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"count": 3,
"list": [
{
"name": "samsung_s23_backup"
},
{
"name": "xiaomi_14_backup"
}
]
}
}

失败返回

{
"code": 500,
"message": "获取机型备份列表失败",
"data": null
}

26. 删除机型备份

功能说明:删除指定的机型备份数据

请求方式:DELETE

请求URL

http://{主机IP}:8000/android/backup/model

请求参数

参数名必选类型说明
namestring机型备份文件名称

请求示例

curl -X DELETE "http://192.168.99.108:8000/android/backup/model" \
-H "Content-Type: application/json" \
-d '{
"name": "samsung_s23_backup"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "删除机型备份失败: 文件不存在",
"data": null
}

27. 备份机型数据

功能说明:将V3镜像创建的云机里的机型数据完整备份

请求方式:POST

请求URL

http://{主机IP}:8000/android/backup/model

请求参数

参数名必选类型说明
namestring要备份机型数据的云机名称
suffixstring备份后机型数据的后缀名

请求示例

curl -X POST "http://192.168.99.108:8000/android/backup/model" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01",
"suffix": "backup_20240115"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "备份机型数据失败: 云机不存在",
"data": null
}

注意事项

  • 仅支持V3镜像创建的云机
  • 备份前建议停止云机

28. 导出机型备份数据

功能说明:导出已备份的机型数据

请求方式:POST

请求URL

http://{主机IP}:8000/android/backup/modelExport

请求参数

参数名必选类型说明
namestring备份机型数据文件名称

请求示例

curl -X POST "http://192.168.99.108:8000/android/backup/modelExport" \
-H "Content-Type: application/json" \
-d '{
"name": "samsung_s23_backup"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "导出机型备份失败: 文件不存在",
"data": null
}

29. 导入备份机型数据

功能说明:通过上传ZIP包导入备份的机型数据

请求方式:POST

请求URL

http://{主机IP}:8000/android/backup/modelImport

Content-Typemultipart/form-data

请求参数

参数名必选类型说明
filefile导入备份机型数据ZIP包

请求示例

curl -X POST "http://192.168.99.108:8000/android/backup/modelImport" \
-F "file=@samsung_s23_backup.zip"

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "导入机型备份失败: 文件格式错误",
"data": null
}

注意事项

  • 仅支持ZIP格式的备份文件

30. 安卓云机执行命令

功能说明:在安卓云机内执行命令

请求方式:POST

请求URL

http://{主机IP}:8000/android/exec

请求参数

参数名必选类型说明
namestring云机名称
commandarray执行的命令,数组形式

请求示例

curl -X POST "http://192.168.99.108:8000/android/exec" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01",
"command": ["sd", "-c", "ping -c 5 223.5.5.5"]
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "执行命令失败: 云机未运行",
"data": null
}

注意事项

  • 云机必须处于运行状态
  • command参数为数组格式,例如 ["sd", "-c", "ls -la"]

31. 清理所有未被使用镜像

功能说明:清理设备上所有未被云机使用的镜像

请求方式:POST

请求URL

http://{主机IP}:8000/android/pruneImages

请求参数:无

请求示例

curl -X POST "http://192.168.99.108:8000/android/pruneImages"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"pruneCount": 5,
"releaseSpace": "12.5GB"
}
}

返回字段说明

字段类型说明
pruneCountint清理数量
releaseSpacestring释放空间

失败返回

{
"code": 500,
"message": "清理镜像失败",
"data": null
}

注意事项

  • 此操作不可恢复
  • 仅清理未被任何云机使用的镜像

三、云机备份

1. 获取备份压缩包文件列表

功能说明:获取设备上的云机备份压缩包文件列表

请求方式:GET

请求URL

http://{主机IP}:8000/backup

请求参数

参数名必选类型说明
namestring根据文件名过滤

请求示例

curl "http://192.168.99.108:8000/backup"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"count": 3,
"list": [
{
"name": "android-01_20240115.zip",
"size": "1.2GB"
},
{
"name": "android-02_20240116.zip",
"size": "1.5GB"
}
]
}
}

返回字段说明

字段类型说明
namestring备份压缩包文件名
sizestring备份压缩包大小

失败返回

{
"code": 500,
"message": "获取备份列表失败",
"data": null
}

2. 下载备份压缩包文件

功能说明:下载指定的云机备份压缩包

请求方式:GET

请求URL

http://{主机IP}:8000/backup/download

请求参数

参数名必选类型说明
namestring备份压缩包文件名

请求示例

curl "http://192.168.99.108:8000/backup/download?name=android-01_20240115.zip" -o android-01_20240115.zip

成功返回

  • 返回文件的二进制数据,浏览器会自动下载

失败返回

{
"code": 500,
"message": "下载失败: 文件不存在",
"data": null
}

3. 删除备份压缩包文件

功能说明:删除指定的云机备份压缩包

请求方式:DELETE

请求URL

http://{主机IP}:8000/backup

请求参数

参数名必选类型说明
namestring备份压缩包文件名

请求示例

curl -X DELETE "http://192.168.99.108:8000/backup" \
-H "Content-Type: application/json" \
-d '{
"name": "android-01_20240115.zip"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "删除备份失败: 文件不存在",
"data": null
}

四、终端连接

1. 连接设备SSH

功能说明:通过Web页面连接设备SSH终端

请求方式:GET

请求URL

http://{主机IP}:8000/link/ssh

或直接访问:

http://{主机IP}:8000/ssh

请求参数:无

请求示例

# 在浏览器中直接访问
http://192.168.99.108:8000/ssh

成功返回

  • 返回SSH终端Web页面

注意事项

  • 需要在浏览器中访问
  • 默认用户名:user

2. 修改SSH登录用户密码

功能说明:修改SSH登录用户的密码

请求方式:POST

请求URL

http://{主机IP}:8000/link/ssh/changePwd

请求参数

参数名必选类型说明
usernamestring用户名,默认user
passwordstring新密码

请求示例

curl -X POST "http://192.168.99.108:8000/link/ssh/changePwd" \
-H "Content-Type: application/json" \
-d '{
"username": "user",
"password": "newpassword123"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "修改密码失败",
"data": null
}

注意事项

  • 密码修改后立即生效
  • 请牢记新密码

3. 开关SSH root登录

功能说明:启用或禁止SSH root用户登录

请求方式:POST

请求URL

http://{主机IP}:8000/link/ssh/switchRoot

请求参数

参数名必选类型说明
enablebooltrue-启用root登录,false-禁止root登录

请求示例

curl -X POST "http://192.168.99.108:8000/link/ssh/switchRoot" \
-H "Content-Type: application/json" \
-d '{
"enable": true
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "设置失败",
"data": null
}

注意事项

  • 出于安全考虑,建议禁用root登录

4. 开关SSH服务

功能说明:启用或关闭SSH服务

请求方式:POST

请求URL

http://{主机IP}:8000/link/ssh/enable

请求参数

参数名必选类型说明
enablebooltrue-启用ssh服务,false-关闭ssh服务

请求示例

curl -X POST "http://192.168.99.108:8000/link/ssh/enable" \
-H "Content-Type: application/json" \
-d '{
"enable": true
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "设置SSH服务失败",
"data": null
}

5. 连接容器终端

功能说明:通过Web页面连接云机容器终端

请求方式:GET

请求URL

http://{主机IP}:8000/link/exec

或直接访问:

http://{主机IP}:8000/container/exec

请求参数:无

请求示例

# 在浏览器中直接访问
http://192.168.99.108:8000/container/exec

成功返回

  • 返回容器终端Web页面

注意事项

  • 需要在浏览器中访问
  • 可以选择要连接的云机容器

五、myt_bridge网卡管理

1. 获取myt_bridge网卡列表

功能说明:获取设备上的myt_bridge网卡列表

请求方式:GET

请求URL

http://{主机IP}:8000/mytBridge

请求参数:无

请求示例

curl "http://192.168.99.108:8000/mytBridge"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"count": 2,
"list": [
{
"name": "myt_bridge",
"cidr": "172.17.0.1/16"
},
{
"name": "myt_bridge_lan",
"cidr": "10.0.0.1/16"
}
]
}
}

失败返回

{
"code": 500,
"message": "获取网卡列表失败",
"data": null
}

2. 创建myt_bridge网卡

功能说明:创建新的myt_bridge网卡

请求方式:POST

请求URL

http://{主机IP}:8000/mytBridge

请求参数

参数名必选类型说明
customNamestring自定义名(最多4字符),会拼接在myt_bridge后面
cidrstringCIDR,例如10.0.0.1/16

请求示例

curl -X POST "http://192.168.99.108:8000/mytBridge" \
-H "Content-Type: application/json" \
-d '{
"customName": "lan",
"cidr": "10.0.0.1/16"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "创建网卡失败: 名称已存在",
"data": null
}

注意事项

  • customName最多4个字符
  • 创建后网卡名为 myt_bridge_customName

3. 更新myt_bridge网卡

功能说明:更新myt_bridge网卡的CIDR配置

请求方式:PUT

请求URL

http://{主机IP}:8000/mytBridge

请求参数

参数名必选类型说明
namestring网卡名(全称或自定义名)
newCidrstring新CIDR,例如10.0.0.1/16

请求示例

curl -X PUT "http://192.168.99.108:8000/mytBridge" \
-H "Content-Type: application/json" \
-d '{
"name": "myt_bridge_lan",
"newCidr": "10.0.0.1/24"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "更新网卡失败: 网卡不存在",
"data": null
}

4. 删除myt_bridge网卡

功能说明:删除指定的myt_bridge网卡

请求方式:DELETE

请求URL

http://{主机IP}:8000/mytBridge

请求参数

参数名必选类型说明
namestring网卡名(全称或自定义名)

请求示例

curl -X DELETE "http://192.168.99.108:8000/mytBridge" \
-H "Content-Type: application/json" \
-d '{
"name": "myt_bridge_lan"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "删除网卡失败: 网卡正在被使用",
"data": null
}

注意事项

  • 正在被云机使用的网卡无法删除
  • 删除前请确保没有云机依赖该网卡

六、本地机型数据管理

1. 获取本地机型列表

功能说明:获取设备上的本地机型数据列表

请求方式:GET

请求URL

http://{主机IP}:8000/phoneModel

请求参数:无

请求示例

curl "http://192.168.99.108:8000/phoneModel"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"count": 5,
"list": [
{
"name": "samsung_s23"
},
{
"name": "xiaomi_14"
},
{
"name": "pixel_8"
}
]
}
}

返回字段说明

字段类型说明
namestring机型文件名称

失败返回

{
"code": 500,
"message": "获取本地机型列表失败",
"data": null
}

2. 删除本地机型数据

功能说明:删除指定的本地机型数据

请求方式:DELETE

请求URL

http://{主机IP}:8000/phoneModel

请求参数

参数名必选类型说明
namestring机型文件名称

请求示例

curl -X DELETE "http://192.168.99.108:8000/phoneModel" \
-H "Content-Type: application/json" \
-d '{
"name": "samsung_s23"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "删除本地机型失败: 文件不存在",
"data": null
}

3. 导出本地机型数据

功能说明:导出指定的本地机型数据

请求方式:POST

请求URL

http://{主机IP}:8000/phoneModel/export

请求参数

参数名必选类型说明
namestring机型文件名称

请求示例

curl -X POST "http://192.168.99.108:8000/phoneModel/export" \
-H "Content-Type: application/json" \
-d '{
"name": "samsung_s23"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "导出本地机型失败: 文件不存在",
"data": null
}

4. 导入机型数据

功能说明:通过上传ZIP包导入机型数据

请求方式:POST

请求URL

http://{主机IP}:8000/phoneModel/import

Content-Typemultipart/form-data

请求参数

参数名必选类型说明
filefile导入修改后的机型ZIP包

请求示例

curl -X POST "http://192.168.99.108:8000/phoneModel/import" \
-F "file=@samsung_s23.zip"

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "导入机型数据失败: 文件格式错误",
"data": null
}

注意事项

  • 仅支持ZIP格式的机型数据包

七、接口认证

1. 修改认证密码

功能说明:修改API接口认证密码(默认用户名admin)

请求方式:POST

请求URL

http://{主机IP}:8000/auth/password

请求参数

参数名必选类型说明
newPasswordstring新密码
confirmPasswordstring确认新密码

请求示例

curl -X POST "http://192.168.99.108:8000/auth/password" \
-H "Content-Type: application/json" \
-d '{
"newPassword": "newpassword123",
"confirmPassword": "newpassword123"
}'

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "修改密码失败: 两次密码不一致",
"data": null
}

注意事项

  • 两次输入的密码必须一致
  • 默认用户名为admin
  • 密码修改后立即生效

2. 关闭接口认证

功能说明:关闭API接口认证功能

请求方式:POST

请求URL

http://{主机IP}:8000/auth/close

请求参数:无

请求示例

curl -X POST "http://192.168.99.108:8000/auth/close"

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "关闭认证失败",
"data": null
}

注意事项

  • 关闭认证后,所有接口将无需认证即可访问
  • 出于安全考虑,建议在内网环境下使用

八、服务管理

1. 更新服务

功能说明:在线更新SDK服务到最新版本

请求方式:GET

请求URL

http://{主机IP}:8000/server/upgrade

请求参数:无

请求示例

curl "http://192.168.99.108:8000/server/upgrade"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"msg": "更新成功,服务将自动重启"
}
}

失败返回

{
"code": 500,
"message": "更新失败: 网络连接超时",
"data": null
}

注意事项

  • 更新成功后服务会自动重启
  • 更新过程中请勿断电或断网

2. 通过上传SDK更新服务

功能说明:通过上传SDK压缩包更新服务

请求方式:POST

请求URL

http://{主机IP}:8000/server/upgrade/upload

Content-Typemultipart/form-data

请求参数

参数名必选类型说明
filefileSDK压缩包文件,zip格式

请求示例

curl -X POST "http://192.168.99.108:8000/server/upgrade/upload" \
-F "file=@myt-sdk-v1.2.0.zip"

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "更新失败: 文件格式错误",
"data": null
}

注意事项

  • 仅支持zip格式的SDK压缩包
  • 更新成功后服务会自动重启

3. 清空设备磁盘数据

功能说明:清空设备磁盘上的所有数据(高危操作!)

请求方式:POST

请求URL

http://{主机IP}:8000/server/device/reset

请求参数:无

请求示例

curl -X POST "http://192.168.99.108:8000/server/device/reset"

成功返回

{
"code": 0,
"message": "ok",
"data": {}
}

失败返回

{
"code": 500,
"message": "清空数据失败",
"data": null
}

注意事项

  • ⚠️ 高危操作!此操作将清空设备上的所有数据,不可恢复!
  • 执行前请确保已备份所有重要数据
  • 操作完成后设备将恢复出厂状态

4. 重启设备

功能说明:重启设备

请求方式:POST

请求URL

http://{主机IP}:8000/server/device/reboot

请求参数:无

请求示例

curl -X POST "http://192.168.99.108:8000/server/device/reboot"

成功返回

{
"code": 0,
"message": "ok",
"data": {
"message": "设备将在5秒后重启"
}
}

失败返回

{
"code": 500,
"message": "重启设备失败",
"data": null
}

注意事项

  • 重启过程中所有云机将停止运行
  • 重启完成后需要手动启动云机

附录

错误码说明

错误码说明
0成功
400请求参数错误
401未授权/认证失败
404资源不存在
500服务器内部错误

常见问题

  1. 接口返回401错误

    • 检查是否开启了接口认证
    • 确认认证信息是否正确
  2. 云机创建失败

    • 检查镜像是否已拉取到本地
    • 确认实例序号是否被占用
    • 检查磁盘空间是否充足
  3. 无法连接设备

    • 确认设备IP地址是否正确
    • 检查网络连接是否正常
    • 确认端口8000是否开放