简介
TM助手是一款专业的移动开发辅助工具,提供强大的Lua脚本引擎和完善的设备授权管理系统。
系统要求
- Android 7.0 及以上
- 需要网络连接
- 建议2GB以上内存
安装配置
1. 下载安装
从下载中心下载最新版本的TM助手APK文件,安装到Android设备上。
2. 注册登录
首次使用需要注册账号:
- 输入手机号
- 获取验证码
- 完成注册
3. 设备激活
联系管理员获取授权码,在应用中激活设备。
快速上手
第一个Lua脚本
创建一个简单的Hello World脚本:
-- hello.lua
print("Hello, TM助手!")
-- 显示Toast消息
toast("欢迎使用TM助手")
-- 获取设备信息
local deviceId = getDeviceId()
print("设备ID: " .. deviceId)
运行脚本
- 打开TM助手应用
- 在IDE中编写Lua脚本
- 点击"运行"按钮
- 查看日志输出
点击模块 (TmClick)
TmClick模块提供屏幕坐标点击功能,支持ROOT和无障碍服务两种模式。
基本用法
-- 点击屏幕坐标 (500, 1000)
tmClick(500, 1000)
-- 延迟后点击
sleep(1000) -- 等待1秒
tmClick(300, 800)
函数说明
| 函数 | 参数 | 返回值 | 说明 |
|---|---|---|---|
tmClick(x, y) |
x: 横坐标 y: 纵坐标 |
boolean | 点击指定坐标,成功返回true |
工作模式
- ROOT模式:使用
input tap命令,速度快,精度高 - 无障碍模式:使用AccessibilityService,无需ROOT权限
提示
应用会自动检测设备是否ROOT,并选择最佳模式。建议在设置中手动选择模式以获得更好的性能。
示例:连续点击
-- 连续点击5次
for i = 1, 5 do
tmClick(500, 1000)
sleep(500) -- 每次点击间隔0.5秒
end
toast("点击完成")
颜色比对模块 (TmCmpColor)
TmCmpColor模块用于比较屏幕指定坐标的颜色,常用于判断界面状态。
基本用法
-- 检查坐标 (100, 200) 的颜色是否为红色
if tmCmpColor(100, 200, "#FF0000") then
print("颜色匹配")
else
print("颜色不匹配")
end
函数说明
| 函数 | 参数 | 返回值 | 说明 |
|---|---|---|---|
tmCmpColor(x, y, color) |
x: 横坐标 y: 纵坐标 color: 颜色值 |
boolean | 比较颜色,匹配返回true |
颜色格式
颜色值使用十六进制格式:#RRGGBB
#FF0000- 红色#00FF00- 绿色#0000FF- 蓝色#FFFFFF- 白色#000000- 黑色
颜色容差
系统默认颜色容差为10(RGB每个通道),即实际颜色与期望颜色的RGB值相差在10以内都会被认为匹配。
注意
颜色比对需要截图权限。首次使用时,系统会请求屏幕录制权限。
示例:等待界面加载
-- 等待按钮变为绿色(表示可点击)
local maxWait = 10 -- 最多等待10秒
local waited = 0
while waited < maxWait do
if tmCmpColor(500, 1000, "#00FF00") then
print("按钮已就绪")
tmClick(500, 1000)
break
end
sleep(500)
waited = waited + 0.5
end
if waited >= maxWait then
print("等待超时")
end
示例:多点颜色检测
-- 检查多个坐标的颜色
local points = {
{x = 100, y = 200, color = "#FF0000"},
{x = 300, y = 400, color = "#00FF00"},
{x = 500, y = 600, color = "#0000FF"}
}
local allMatch = true
for i, point in ipairs(points) do
if not tmCmpColor(point.x, point.y, point.color) then
print("坐标 (" .. point.x .. ", " .. point.y .. ") 颜色不匹配")
allMatch = false
break
end
end
if allMatch then
print("所有颜色都匹配")
-- 执行后续操作
end
更多模块
TM助手还提供了更多实用模块,持续更新中...
即将推出的模块
图像识别
在屏幕上查找指定图片
文字识别
OCR识别屏幕文字内容
手势操作
滑动、长按等手势模拟
输入模块
模拟键盘输入文字
截图保存
截取屏幕并保存图片
通知模块
发送系统通知消息
需要新功能?
如果您有新的模块需求,欢迎通过邮件或社区反馈给我们。我们会根据需求优先级进行开发。
Lua基础
变量和数据类型
-- 变量定义
local name = "TM助手"
local version = 1.0
local isActive = true
-- 表(数组/字典)
local arr = {1, 2, 3, 4, 5}
local dict = {
name = "张三",
age = 25,
city = "杭州"
}
函数定义
-- 函数定义
function greet(name)
return "Hello, " .. name
end
-- 调用函数
local message = greet("TM助手")
print(message)
条件语句
local score = 85
if score >= 90 then
print("优秀")
elseif score >= 60 then
print("及格")
else
print("不及格")
end
循环语句
-- for循环
for i = 1, 10 do
print(i)
end
-- while循环
local count = 0
while count < 5 do
print(count)
count = count + 1
end
Lua API
基础API
| 函数 | 说明 | 示例 |
|---|---|---|
toast(message) |
显示Toast消息 | toast("Hello") |
sleep(ms) |
延迟执行(毫秒) | sleep(1000) |
getDeviceId() |
获取设备ID | local id = getDeviceId() |
log(message) |
输出日志 | log("Debug info") |
HTTP请求
-- GET请求
local response = http.get("https://api.example.com/data")
print(response.body)
-- POST请求
local data = {
name = "张三",
age = 25
}
local response = http.post("https://api.example.com/user", data)
print(response.statusCode)
文件操作
-- 读取文件
local content = file.read("/sdcard/test.txt")
print(content)
-- 写入文件
file.write("/sdcard/test.txt", "Hello World")
-- 检查文件是否存在
if file.exists("/sdcard/test.txt") then
print("文件存在")
end
示例代码
示例1:自动签到
-- 自动签到脚本
function autoCheckIn()
toast("开始自动签到")
-- 模拟点击签到按钮
click(500, 1000)
sleep(2000)
-- 检查签到结果
local result = getText()
if string.find(result, "签到成功") then
toast("签到成功!")
return true
else
toast("签到失败")
return false
end
end
-- 执行签到
autoCheckIn()
示例2:数据采集
-- 数据采集脚本
function collectData()
local data = {}
-- 采集数据
for i = 1, 10 do
local item = {
id = i,
title = getText(100, 200 + i * 100),
time = os.time()
}
table.insert(data, item)
sleep(500)
end
-- 保存数据
local json = JSON.encode(data)
file.write("/sdcard/data.json", json)
toast("数据采集完成")
end
collectData()
示例3:定时任务
-- 定时任务脚本
function scheduleTask()
while true do
local hour = os.date("%H")
-- 每天早上8点执行
if hour == "08" then
toast("开始执行任务")
-- 执行任务逻辑
doTask()
-- 等待1小时
sleep(3600000)
end
-- 每分钟检查一次
sleep(60000)
end
end
function doTask()
-- 任务逻辑
print("执行任务...")
end
scheduleTask()
WebSocket
TM助手内置WebSocket服务,用于IDE与设备之间的实时通信。
连接WebSocket
WebSocket服务地址:ws://设备IP:8081
消息格式
{
"type": "execute",
"code": "print('Hello')"
}
提示
WebSocket主要用于IDE与设备的通信,一般情况下不需要手动处理。
HTTP服务
TM助手内置HTTP服务,用于接收IDE的脚本执行请求。
服务地址
HTTP服务地址:http://设备IP:8080
执行脚本
POST
/execute
{
"code": "print('Hello World')"
}
调试技巧
日志输出
-- 使用print输出日志
print("调试信息")
-- 使用log函数
log("Debug: " .. tostring(value))
-- 输出表内容
function printTable(t)
for k, v in pairs(t) do
print(k .. " = " .. tostring(v))
end
end
错误处理
-- 使用pcall捕获错误
local success, error = pcall(function()
-- 可能出错的代码
local result = riskyOperation()
return result
end)
if not success then
print("错误: " .. error)
toast("操作失败")
end
性能优化
- 避免在循环中进行耗时操作
- 合理使用sleep()控制执行频率
- 及时释放不需要的资源
- 使用局部变量提高性能