触动脚本常见错误及修复:代码2因参数类型不匹配(如table传给InStr),需tostring转换;代码7因包名错误或APP未安装,应核对包名并用appIsRunning检测;代码0为语法缺失,如For缺Step值、While无条件、Dim不能赋值;H5点击无效时改用ADB input命令或touchInputDown/Up;iOS越狱设备卡死需定期kill backboardd并延时。

触动精灵脚本运行时突然弹出错误提示框,代码停在某一行不动,根本不知道哪里写错了,这种问题每天都在开发者群里高频出现。
错误代码2:参数类型不匹配
这是最常被误判为“脚本写错”的假性故障。比如调用InStr函数时传入了table而非string:
错误写法:TracePrint InStr(1, tableA, stringA),其中tableA是数组,但InStr第二个参数必须是字符串。
直接后果是脚本立即中断,错误行号精准指向该行,但新手常去检查前后逻辑而忽略参数本身。
修复方法:在调用前强制转为字符串——TracePrint InStr(1, tostring(tableA), stringA)。
【关键提醒】不要依赖函数自动类型转换,触动引擎对类型校验极严,nil、table、boolean传给期待string的函数必报错代码2。
错误代码7:找不到包名或APP未安装
当使用runApp("com.xxx.app")启动应用却失败时,引擎返回错误代码7,说明系统压根没识别到这个包名。
第一步:确认包名拼写全小写且无空格,比如微信是com.tencent.mm,不是com.tencent.MM或com.tencent.wechat。
第二步:进手机设置→应用管理→找到目标APP→点击“应用信息”,滚动到底部复制真正的包名——有些国产APP会动态改包名。
第三步:用appIsRunning("com.xxx.app")先检测是否已安装,返回0表示未安装,此时再报错代码7就不用怀疑脚本问题了。
这一步操作起来很简单,直接把文件拖进去就行。
错误代码0:语法结构缺失
方法一:For循环缺步长值
错误写法:For i = 0 To 10 Step Next → 缺少步长数字,引擎无法解析循环增量。
正确写法:For i = 0 To 10 Step 1 Next 或简写为 For i = 0 To 10 Next(默认步长为1)。
方法二:While循环无判断条件
错误写法:While Wend → 引擎读到While后发现后面啥也没有,直接崩溃。
正确写法:Dim a = 1; While a == 1; TracePrint "running"; a = 0; Wend。
方法三:变量定义即赋值
错误写法:Dim a = 1 → 触动不支持声明同时初始化。
正确写法:Dim a; a = 1。
这些错误不会等运行到那行才暴露,编辑器保存时就会标红报错代码0,属于编译期错误。
安卓H5页面点击无反应
现象:脚本显示坐标点击成功,但网页按钮毫无反应,尤其在WebView内嵌H5场景高频发生。
原因:安卓原生触摸事件被H5层拦截,touchDown/touchUp发的是系统级事件,但某些H5框架只响应input mouse tap这类模拟输入事件。
第一步:改用ADB命令绕过引擎封装——os.execute("input mouse tap 600 900"),其中600和900替换成实际坐标。
第二步:如果仍无效,换输入设备类型——os.execute("input touchscreen tap 600 900"),部分厂商ROM要求明确指定touchscreen而非mouse。
第三步:终极方案,用触动专用函数分步模拟——touchInputDown(600, 900); mSleep(30); touchInputUp(600, 900),注意中间必须加至少20ms延时,否则事件队列丢帧。
【不可逆操作】一旦启用touchInputDown/Up系列函数,就不能再混用touchDown/touchUp,否则坐标系错乱导致后续所有点击偏移。
iOS越狱设备卡死(点击失效)
现象:脚本运行2小时左右,屏幕点击完全失灵,但后台仍在执行日志打印,重启SpringBoard可临时恢复。
适配iOS 11~14系统:在主循环里每100分钟插入os.execute("killall -9 backboardd")。
适配iOS 15及以上有根越狱:改用绝对路径ts_execute("/usr/bin/killall -9 backboardd"),否则系统找不到killall命令。
适配iOS 15及以上无根越狱:路径变为ts_execute("/var/jb/usr/bin/killall -9 backboardd"),/var/jb/是paleraN越狱的根目录挂载点。
注意:执行kill命令后必须跟mSleep(2000),否则SpringBoard还没重启完成脚本就继续执行,导致坐标错乱。


















