news 2026/5/29 19:22:32

「安卓开发辅助工具按键精灵」xml全分辨率插件jsd插件脚本教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
「安卓开发辅助工具按键精灵」xml全分辨率插件jsd插件脚本教程

在处理界面上文字提取的问题,我通常会选择使用jsd插件,感觉用起来挺方便,以往在使用jsd插件的时候就是按照命令提供例子的方法直接使用,这次想自己分析一下每个命令。

jsd插件主要是对节点的处理,我也只分析和节点相关的命令,并且这篇文章不是关于怎么使用jsd插件的,仅仅是记录我在使用时遇到的一些问题,或者觉得有意思的地方。

(1)jsdvip.FindNode 查找节点

①参数:一共是4个参数

参数1:必选,字符串型,节点信息。

参数2:字符串型,可选,保存变量。

参数3:可选,数值型,节点下标,节点初始下标为0

参数4:可选,数值型,执行超时时间,单位毫秒,默认执行10毫秒。

参数2,3,4不区分顺序

②返回值

布尔值,成功返回true,失败返回null。

这里边值得分析的地方是参数2,“字符串”当做变量保存节点信息。

jsdvip.FindNode("By.text('雷电游戏中心')","node")

这个node里面到底存放了什么?

经过测试是16位的十六进制字符串,类似这样0210A5C80EC32786

这个内容是可以用GetNodeInfo命令“解析”出了

(2)jsdvip.GetNodeInfo 获取节点所有信息

jsdvip.FindNode("By.text('雷电游戏中心')","node") dim tb=jsdvip.GetNodeInfo("node")

命令介绍例子中是遍历返回值,说明返回值是数组或者字典形式,直接转json查看。

Import "jsdvip.luae" jsdvip.StartServer jsdvip.FindNode("By.text('雷电游戏中心')","node") dim tb=jsdvip.GetNodeInfo("node") TracePrint encode.tabletojson(tb)

输出结果:

{ "1": "雷电游戏中心", "2": [208, 202], "3": [147, 138, 270, 267], "clickable": true, "checkable": false, "checked": false, "longClickable": true, "point": [208, 202], "focusable": true, "desc": "雷电游戏中心", "focused": false, "res": "", "rect": [147, 138, 270, 267], "pkg": "com.android.launcher3", "scrollable": false, "selected": false, "enabled": true, "text": "雷电游戏中心", "clazz": "android.widget.TextView" }

这种json结果可以一目了然的知道所有值,以及怎么去提取它。

(3)jsdvip.FindNodeS和jsdvip.GetNodeInfoAll

这两个命令是上面两个命令的“复数”,之前的命令时获取第一个符合要求的节点信息,这两个是获取所有符合的节点信息。

Import "jsdvip.luae" jsdvip.StartServer jsdvip.FindNodes("By.text('下载')","node") dim tb=jsdvip.GetNodeInfoAll("node") TracePrint encode.tabletojson(tb)

分析方法一样看结果:

[ ["下载", "下载", "下载", "下载", "下载", "下载", "下载", "下载", "下载"], [ [821, 24], [72, 421], [189, 421], [306, 421], [423, 421], [540, 421], [657, 421], [774, 421], [891, 421] ], [ [809, 17, 833, 31], [48, 412, 96, 430], [165, 412, 213, 430], [282, 412, 330, 430], [399, 412, 447, 430], [516, 412, 564, 430], [633, 412, 681, 430], [750, 412, 798, 430], [867, 412, 915, 430]

输出结果是3维数组,并且只有3组数据,分别是文字、中心坐标,范围坐标。

(4)jsdvip.ForeachNodes 遍历结果集

上面说node这个变量是什么时,并没有说它怎么来的,因为我是通过这个命令获取到的,下面是遍历所有节点信息,用复数形式nodes,这个没有强制要求就是为了区分一下。

Import "jsdvip.luae" jsdvip.StartServer jsdvip.FindNodes("By.text('下载')","nodes") dim tb=jsdvip.ForeachNodes("nodes") TracePrint encode.TableToJson(tb)

输出结果:

[

"C803A1C0055D7B72",

"BA0C238A50E33351",

"74B09CB1843640E8",

"EAA551527BFF7063",

"7FDA3526F94EE9C6",

"1F8C860CEAF77FFC",

"70C2C94E400DD268",

"BD01F5BC2D773B9E",

"630A8CAA81642DA1"

看输出结果,猜测每一个字符串应该是一个节点信息,为了验证猜测是否正确,直接把字符串当做node使用。

Import "jsdvip.luae" jsdvip.StartServer dim tb=jsdvip.GetNodeInfo("C803A1C0055D7B72") TracePrint encode.TableToJson(tb)

输出结果:

{

"1": "下载",

"2": [821, 24],

"3": [809, 17, 833, 31],

"longClickable": false,

"text": "下载",

"focused": false,

"clickable": false,

"enabled": true,

"checked": false,

"selected": false,

"clazz": "android.widget.TextView",

"checkable": false,

"rect": [809, 17, 833, 31],

"res": "com.android.flysilkworm:id\/title_view",

"point": [821, 24],

"pkg": "com.android.flysilkworm",

"scrollable": false,

"focusable": false,

"desc": ""

}

这个结果和findnode获取的node是一样的,所以猜测node是这个16位的十六进制字符串。

除了上面说的这些命令以外,比较有意思的还有父级节点、同级节点、子级节点。

举个例子:根据QQ群消息获取用户名称

Import "jsdvip.luae" jsdvip.StartServer jsdvip.FindLv "By.text('len命令')", 2, "node" jsdvip.FindChlid("node","By.res('com.tencent.mobileqq:id/chat_item_nick_name')","chlid") TracePrint jsdvip.GetText("chlid")

每一个层级关系在获取后都用上面说的方法先输出节点信息,确认没问题了,在继续层级关系处理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 21:07:48

代码复现:LEARNING FAST AND SLOW FORONLINE TIME SERIES FORECASTING

基于上一篇文章文献阅读:LEARNING FAST AND SLOW FORONLINE TIME SERIES FORECASTING-CSDN博客过后,这里去根据论文中的代码仓库进行了一个实验。尊重原创代码:GitHub - DMIRLAB-Group/LSTD 问题 这里发现给的配置文件不是很全面&#xff0c…

作者头像 李华
网站建设 2026/5/26 15:13:31

密码管理器:单主密码管所有,是便捷福音还是风险陷阱?

在数字时代,每个人的生活都被密密麻麻的账号密码包裹:社交软件、购物平台、办公系统、金融账户……为了安全,我们被反复提醒“不要重复使用密码”“密码需包含大小写字母、数字和特殊符号”;可为了记忆,不少人又不得不…

作者头像 李华
网站建设 2026/5/23 16:08:38

T113 logo g2d 旋转

文章目录1、环境介绍2、前言3、内核设备树配置4、内核配置5、uboot 设备树配置6、验证7、参考文章8、总结1、环境介绍 硬件:小智 T113 板卡 软件:原厂 Tina5.0 SDK v1.2(Buildroot) 2、前言 我目前使用的屏幕分辨率是280*1424…

作者头像 李华
网站建设 2026/5/29 15:02:38

Java程序员转AI大模型:拒绝内卷,用技术沉淀换职业新赛道

当Java开发的岗位竞争进入“内卷”模式,AI大模型的爆发恰好为你打开了职业突破口。你不必担心多年积累的Spring Boot、微服务经验付诸东流——企业级开发锤炼的工程化思维、系统稳定性把控能力,正是大模型从实验室走向生产的“刚需能力”。转型AI大模型&…

作者头像 李华
网站建设 2026/5/28 13:43:45

【收藏必备】2025年AI大模型完全指南:从入门到精通,附获取与使用技巧

本文详细介绍了AI大模型的种类(语言、向量、视觉、多模态等)、获取途径(官方、第三方付费/免费、逆向工程)及使用方法(智能体、提示词优化等)。文章强调尽管AI技术已高度发展,但普通用户使用场景仍有限,旨在帮助小白全面了解大模型生态,掌握从…

作者头像 李华
网站建设 2026/5/20 23:55:24

Fluke福禄克754 753 725 724 726过程校验仪

‌福禄克754(Fluke 754/754 PLUS)是福禄克公司推出的多功能过程校验仪‌,专为工业现场校准、维护和故障诊断设计,支持HART通信协议,可测量和输出电压、电流、温度、压力等多种信号。‌‌ 1‌‌ 2 核心功能与技术特点 ‌…

作者头像 李华