Lua ADB 接口文档
adb 源码的基础上封装了一个lua访问adb的接口文档,以下是adb基本操作接口
Lua ADB 接口文档
模块引入
local luaadb = require("luaadb") -- 引入 ADB 模块
local currentdevice = "192.168.1.81:5555" -- 全局设备 ID(可配置)
1. 设备管理
listDevices()
列出所有连接的设备。
- 返回值:
string
(JSON 格式设备列表)
local devices = luaadb.listDevices()
print("Devices: " .. devices)
tcpip(port)
切换设备到 TCP/IP 模式。
- 参数:
port
(int, 默认 5555) - 返回值:
string
(执行结果)
local result = luaadb.tcpip(currentdevice, 5555)
print("TCP/IP Mode: " .. result)
connect(addr)
通过网络连接设备。
- 参数:
addr
(string, 如"192.168.1.81:5555"
) - 返回值:
int
(0=成功, 非0=失败)
local status = luaadb.connect("192.168.1.81:5555")
print("Connect Status: " .. status)
disconnect(addr)
断开设备连接。
- 参数:
addr
(string) - 返回值:
int
(0=成功)
luaadb.disconnect("192.168.1.81:5555")
2. 文件操作
pull(remotePath, localPath)
从设备拉取文件。
- 参数:
remotePath
(string, 设备路径)localPath
(string, 本地路径)
- 返回值:
int
(0=成功)
luaadb.pull("/sdcard/test.txt", "./test.txt", currentdevice)
push(localPath, remotePath)
推送文件到设备。
- 参数:
localPath
(string)remotePath
(string)
- 返回值:
int
(0=成功)
luaadb.push("./test.txt", "/sdcard/test.txt", currentdevice)
pushDir(localPath, remotePath)
推送整个目录到设备。
- 参数: 同
push
- 返回值:
int
(0=成功)
luaadb.pushDir("./mydir", "/sdcard/mydir", currentdevice)
3. Shell 命令
runShellCommand(commandAndArgs)
执行 ADB Shell 命令。
- 参数:
commandAndArgs
(string, 如"pm list packages"
) - 返回值:
string
(命令输出)
local output = luaadb.runShellCommand("pm list packages", currentdevice)
print("Packages: " .. output)
runCommandTimeout(cmd, timeout)
带超时的 Shell 命令。
- 参数:
cmd
(string)timeout
(long long, 毫秒)
- 返回值:
string
(输出或超时错误)
local result = luaadb.runCommandTimeout(currentdevice, "dumpsys battery", 5000)
print("Battery Info: " .. result)
4. 应用管理
pmListPackages(isthird)
列出设备上的应用。
- 参数:
isthird
(bool, true=仅第三方应用) - 返回值:
string
(JSON 格式应用列表)
local apps = luaadb.pmListPackages(currentdevice, true)
print("Third-party Apps: " .. apps)
install(localpath)
安装 APK。
- 参数:
localpath
(string, 本地 APK 路径) - 返回值:
int
(0=成功)
luaadb.install(currentdevice, "./app.apk", "-r -t") -- -r 替换, -t 允许测试包
uninstall(packagename)
卸载应用。
- 参数:
packagename
(string, 如"com.example.app"
) - 返回值:
string
(执行结果)
luaadb.uninstall(currentdevice, "com.example.app")
forceStopApp(packagename)
强制停止应用。
- 参数: 同
uninstall
- 返回值:
string
(结果)
luaadb.forceStopApp(currentdevice, "com.example.app")
5. 输入模拟
inputkeyevent(keycode)
模拟按键事件。
- 参数:
keycode
(string, 如"KEYCODE_HOME"
) - 返回值:
string
(结果)
luaadb.inputkeyevent(currentdevice, "KEYCODE_HOME")
click(x, y)
模拟屏幕点击。
- 参数:
x
,y
(int) - 返回值:
string
(结果)
luaadb.click(currentdevice, 500, 1000)
swipe(x1, y1, x2, y2, duration)
模拟滑动。
- 参数:
x1
,y1
(起始坐标)x2
,y2
(结束坐标)duration
(int, 毫秒)
- 返回值:
string
(结果)
luaadb.swipe(currentdevice, 300, 1000, 300, 500, 300) -- 向上滑动
6. 权限管理
pmgrant(packagename, permission)
授予应用权限。
- 参数:
packagename
(string)permission
(string, 如"android.permission.CAMERA"
)
- 返回值:
string
(结果)
luaadb.pmgrant(currentdevice, "com.example.app", "android.permission.CAMERA")
pmrevoke(packagename, permission)
撤销应用权限。
- 参数: 同
pmgrant
- 返回值:
string
(结果)
luaadb.pmrevoke(currentdevice, "com.example.app", "android.permission.CAMERA")
7. 系统信息
getProperty(name)
获取系统属性。
- 参数:
name
(string, 如"ro.build.version.sdk"
) - 返回值:
string
(属性值)
local sdk = luaadb.getProperty(currentdevice, "ro.build.version.sdk")
print("SDK Version: " .. sdk)
getAllProperty()
获取所有系统属性。
- 返回值:
string
(JSON 格式属性列表)
local props = luaadb.getAllProperty(currentdevice)
print("All Properties: " .. props)
wmsize()
获取屏幕分辨率。
- 返回值:
string
(如"1080x1920"
)
local size = luaadb.wmsize(currentdevice)
print("Screen Size: " .. size)
8. 高级功能
root()
尝试以 Root 权限重启 ADB。
- 返回值:
string
(结果)
local rootStatus = luaadb.root(currentdevice)
print("Root Status: " .. rootStatus)
remount()
重新挂载 /system
为可写。
- 返回值:
string
(结果)
local remountStatus = luaadb.remount(currentdevice)
print("Remount Status: " .. remountStatus)
完整示例
local luaadb = require("luaadb")
local currentdevice = "192.168.1.81:5555"-- 1. 连接设备
luaadb.connect(currentdevice)-- 2. 安装 APK
luaadb.install(currentdevice, "./app.apk", "-r")-- 3. 启动应用
luaadb.startappByPackageName(currentdevice, "com.example.app")-- 4. 模拟点击
luaadb.click(currentdevice, 500, 1000)-- 5. 卸载应用
luaadb.uninstall(currentdevice, "com.example.app")-- 6. 断开连接
luaadb.disconnect(currentdevice)
注意事项
- 设备 ID:全局变量
currentdevice
可配置,避免硬编码。 - 错误处理:检查返回值(如
int
类型接口返回 0 表示成功)。 - 超时控制:对耗时操作(如
install
)建议使用runCommandTimeout
。