更新记录

1.0.0(2026-06-27) 下载此版本

初次提交


平台兼容性

uni-app(5.14)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × × × × × × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

laoqianjunzi-otg

laoqianjunzi-otg 是一个面向 uni-app x 的 UTS 插件,聚焦 Android 设备调试与控制场景,统一提供本机 Shell、OTG ADB、Wi-Fi ADB、无线调试配对、设备交互与结果持久化能力。

适用场景

  • 在 Android 设备上执行本机 Shell 命令
  • 通过 OTG 线连接另一台 Android 设备并执行 ADB 命令
  • 通过局域网、无线调试配对或服务发现连接 Wi-Fi ADB 设备
  • 获取远端设备信息、分辨率、截图、文本输入等调试辅助能力
  • 通过自身设备无线调试配对服务,完成当前设备的本机配对链路

平台实现状态

平台 状态 说明
Android 已实现 当前正式实现平台
iOS 未实现 调用会返回 9011002
Harmony 未实现 调用会返回 9011002

当前示例页 uni_modules/laoqianjunzi-otg/pages/index.uvue 按 Android 实机调试场景设计。

环境要求

  • uni-app x
  • HBuilderX 5.07+
  • Android minSdkVersion: 28
  • 使用 OTG 时,当前设备需支持 USB Host
  • 使用 Wi-Fi ADB 服务发现、前台保活时,需具备局域网与通知相关权限
  • 使用 Shizuku 时,目标设备需已安装并完成授权

Android 侧声明能力

插件已在 utssdk/app-android/AndroidManifest.xml 中声明以下关键能力:

  • android.hardware.usb.host
  • ACCESS_NETWORK_STATE
  • ACCESS_WIFI_STATE
  • INTERNET
  • NEARBY_WIFI_DEVICES
  • CHANGE_WIFI_MULTICAST_STATE
  • POST_NOTIFICATIONS
  • FOREGROUND_SERVICE
  • FOREGROUND_SERVICE_CONNECTED_DEVICE

如果你的业务只使用部分链路,可以先调用 getCoreCapabilities() 决定是否展示对应 UI,再按需触发更重的连接或调试流程。

安装与导入

将插件放入项目的 uni_modules 目录后,可以直接从插件根路径导入:

import {
  getPluginInfo,
  getCoreCapabilities,
  listOtgDevices,
  connectOtg,
  runOtgCommand
} from '@/uni_modules/laoqianjunzi-otg'

不要直接从 utssdk/app-android/index.uts 这样的具体平台文件导入。

API 设计约定

1. 插件信息与能力矩阵

  • getPluginInfo():读取插件基础信息,返回 pluginIdpluginVersionplatformimplementation
  • getCoreCapabilities():读取当前端可用能力矩阵,适合在页面初始化时决定展示哪些调试面板

2. 统一结果结构

插件大量使用以下结果结构:

  • LqjBooleanResultok + value
  • LqjStringResultok + value
  • LqjShellExecResultokmodecommandstdoutstderrexitCode
  • LqjOtgConnectionResult / LqjWifiConnectionResult:连接结果与状态说明

当调用失败时,通常会附带:

  • errCode
  • errMsg

推荐业务写法:先判断 ok,再消费 valuestdout 或连接状态字段。

能力总览

基础信息与环境检测

API 说明
getPluginInfo() 插件信息
getCoreCapabilities() 核心能力矩阵
isUsbHostSupported() 当前设备是否支持 USB Host
isRootAvailable() 当前设备 Root 能力是否可用
isShizukuAvailable() Shizuku 是否已安装且可用
hasShizukuPermission() 是否已获得 Shizuku 权限
requestShizukuPermission() 触发 Shizuku 授权
isWirelessDebuggingSupported() 是否支持无线调试
isWifiLanConnected() 是否连接到局域网
isNotificationPermissionGranted() 通知权限是否已授予

本机 Shell 与流式输出

API 说明
execLocalShell(command, mode) 执行本机命令,mode 支持 basic / root
execShizukuShell(command) 通过 Shizuku 执行本机命令
sanitizeAdbShellCommand(command) 清洗待执行命令
startShellStream(command, mode) 启动流式命令
readShellStreamOutput() 读取流式输出
stopShellStream() 停止流式命令
isShellStreamRunning() 当前是否存在运行中的流式命令

OTG ADB

API 说明
listOtgDevices() 扫描可见的 OTG 设备
requestOtgPermission(deviceId) 请求指定 USB 设备授权
hasOtgPermission(deviceId) 查询指定设备是否已授权
connectOtg(deviceId) 连接 OTG ADB 设备
runOtgCommand(command) 向当前 OTG 设备执行命令
disconnectOtg() 断开 OTG 连接

Wi-Fi ADB

API 说明
connectWifiAdb(host, port) 直接连接 Wi-Fi ADB
pairWifiAdb(host, pairingPort, pairingCode) 仅执行配对
pairAndConnectWifiAdb(host, pairingPort, pairingCode) 配对完成后自动连接
disconnectWifiAdb() 断开 Wi-Fi ADB
runWifiAdbCommand(command) 向当前 Wi-Fi ADB 设备执行命令
startWifiAdbDiscovery() 开始发现无线调试服务
stopWifiAdbDiscovery() 停止发现服务
isWifiAdbDiscoveryRunning() 服务发现是否运行中
getWifiPairingServices() 获取 pairing 服务列表
getWifiConnectServices() 获取 connect 服务列表
buildWifiPairingQrText(sessionId, pairingCode) 生成可用于二维码承载的文本

保存设备与快速重连

API 说明
saveWifiAdbDevice(host, port, deviceName, isOwnDevice, isPaired) 保存设备记录
getSavedWifiAdbDevices() 获取已保存设备
forgetSavedWifiAdbDevice(deviceId) 删除已保存设备
reconnectSavedWifiAdbDevice(deviceId) 按记录直接重连

自身设备无线调试配对

API 说明
openWirelessDebuggingSettings() 打开系统无线调试设置页
startSelfWifiPairingService() 启动自身设备配对服务
submitSelfWifiPairingCode(pairingCode) 提交配对码
getSelfWifiPairingState() 读取自身配对状态
stopSelfWifiPairingService() 停止自身配对服务

已连接设备与远端交互

以下能力同时适用于当前已连接的 otgwifi 设备:

API 说明
getConnectedDevices() 获取当前缓存连接
getDeviceInfo(mode) 读取设备信息
getResolution(mode) 读取屏幕分辨率
sendText(text, mode) 向目标设备输入文本
sendTap(x, y, mode) 发送点击事件
sendKeyEvent(code, mode) 发送按键事件
sendSwipeEvent(x1, y1, x2, y2, mode) 发送滑动事件
screenshot(mode) 触发截图并返回结果
getAppList(mode) 获取应用列表
installApp(localPath, mode) 安装应用
uninstallApp(packageName, mode) 卸载应用

终端辅助与文件输出

API 说明
addCommandHistory(command) 写入命令历史
getCommandHistory() 读取命令历史
clearCommandHistory() 清空命令历史
addBookmark(command) 添加命令收藏
removeBookmark(command) 删除命令收藏
getBookmarks() 读取收藏
clearBookmarks() 清空收藏
getCommandSuggestions(input, includePackages) 获取命令建议
saveOutputText(fileName, content) 保存文本输出
listSavedOutputFiles() 读取已保存输出文件
openSavedOutputFile(path) 打开已保存文件
shareSavedOutputFile(path) 分享已保存文件

远端文件管理

API 说明
listRemoteFiles(path, mode) 列出远端目录
makeRemoteDirectory(path, mode) 创建远端目录
renameRemotePath(oldPath, newPath, mode) 重命名远端路径
deleteRemotePath(path, mode) 删除远端路径
copyRemotePath(sourcePath, destPath, move, mode) 复制或移动远端路径
downloadRemoteFile(remotePath, localPath, mode) 从远端拉取文件
uploadLocalFile(localPath, remotePath, mode) 上传本地文件到远端

推荐调用顺序

本机命令

  1. getCoreCapabilities()
  2. isRootAvailable()isShizukuAvailable()
  3. sanitizeAdbShellCommand()
  4. execLocalShell()execShizukuShell()

OTG 调试

  1. isUsbHostSupported()
  2. listOtgDevices()
  3. requestOtgPermission(deviceId)
  4. connectOtg(deviceId)
  5. runOtgCommand() / getDeviceInfo('otg') / screenshot('otg')
  6. disconnectOtg()

Wi-Fi ADB 调试

如果你已经知道主机和端口:

  1. connectWifiAdb(host, port)
  2. runWifiAdbCommand()
  3. saveWifiAdbDevice()
  4. disconnectWifiAdb()

如果你需要从无线调试流程进入:

  1. isWirelessDebuggingSupported()
  2. startWifiAdbDiscovery()
  3. getWifiPairingServices() / getWifiConnectServices()
  4. pairWifiAdb()pairAndConnectWifiAdb()
  5. runWifiAdbCommand()

示例

读取插件信息与能力矩阵

import { getPluginInfo, getCoreCapabilities } from '@/uni_modules/laoqianjunzi-otg'

const plugin = getPluginInfo()
const capabilities = getCoreCapabilities()

console.log(plugin)
console.log(capabilities)

OTG 调试最小链路

import {
  listOtgDevices,
  requestOtgPermission,
  connectOtg,
  runOtgCommand
} from '@/uni_modules/laoqianjunzi-otg'

const devices = listOtgDevices()
if (devices.length > 0) {
  const deviceId = devices[0].deviceId
  const permission = requestOtgPermission(deviceId)
  if (permission.ok && permission.value) {
    const connected = connectOtg(deviceId)
    if (connected.ok && connected.connected) {
      const shell = runOtgCommand('getprop ro.product.model')
      console.log(shell.stdout)
    }
  }
}

Wi-Fi ADB 配对并连接

import { pairAndConnectWifiAdb, runWifiAdbCommand } from '@/uni_modules/laoqianjunzi-otg'

const connection = pairAndConnectWifiAdb('192.168.1.20', 37001, '123456')
if (connection.ok && connection.connected) {
  const result = runWifiAdbCommand('getprop ro.serialno')
  console.log(result.stdout)
}

错误码

错误码 含义
9011001 参数无效
9011002 当前平台不支持该能力
9011003 本机命令执行失败
9011004 Root 不可用或未授权
9011005 USB Manager 不可用
9011006 未发现可用的 ADB OTG 设备
9011007 OTG 设备尚未授权
9011008 OTG ADB 连接失败
9011009 OTG ADB 尚未连接
9011010 OTG 命令执行失败
9011011 WiFi ADB 连接失败
9011012 WiFi ADB 尚未连接
9011013 WiFi ADB 命令执行失败
9011014 Shizuku 不可用
9011015 Shizuku 权限未授予
9011016 Shizuku 命令执行失败
9011017 WiFi 前台服务启动失败
9011018 WiFi ADB 服务发现失败
9011019 WiFi ADB 配对后自动连接失败

示例页说明

本插件内置了一个面向 Android 的演示页:

  • 路径:uni_modules/laoqianjunzi-otg/pages/index.uvue
  • 目标:串起本机命令、OTG ADB、Wi-Fi ADB、自身设备配对四类典型流程
  • 特点:只调用当前正式 API,不展示任何旧接口入口

如果你要在业务项目中接入,建议先跑通示例页,再把你真正需要的按钮和流程拆到业务页面中。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议