梦入琼楼寒有月,行过石树冻无烟

Auto.js 入门

Auto.js 是一个不需要 Root 权限的 JavaScript 自动化软件,发展至今已经从原来只针对自动化的 JavaScript 扩展语言演变为一个自动化软件,供两种方式给开发者进行使用,一种是提供了 GUI 页面,而另一种是简单的使用 javaScript 来完成一些相应的操作。

1
2
3
Auto.js 开源版本已经不再维护,后续将只会维护 Auto.js Pro 专业版,其专业版内置了 Visual Studio 远程连接以及打包、制作等服务,除了自动化还可以开发 Android 软件并进行打包,同时内置了更加强大的加密方法。

并此提供了自定义权限、启动图和优化还有签名等功能,来通过 Auto.js 实现真正的一个独立 Android 应用的开发。

通过 VS Code 开发 Auto.js

Auto.js 的开发一般通过VS Code 上的 Autojs 扩展或 Android Auto.js 直接进行下载,之后在 Android 或模拟器中打开 Auto.js Client 左侧导航中连接电脑,Auto.js 为我们提供了多种方式。

连接 VS Code \ VS Code 连接 Auto.js

Auto.js 为我们所提供的方法较多,我们首先通过 VS Code 连接 Auto.js 但一般会遇到 connect error:Error:connect ETIMEDOUT xxxxx:9317 的错误,通常难以解决,目前解决此问题的方法是开放 9317 和 8327 端口以通过防火墙规则。

1
在 VS Code 和 Android Auto.js 在一个网络的情况下,且 ADB 模式连接都已失败的情况下,可以采用另一种方法进行连接,VS Code 连接手机的前提下是 Android 已经安装好了 Auto.js

在正常情况下,我们只需要通过 Ctrl+P 的组合键,来调出命令执行页面,之后在表单中输入 >Auto.js Pro:连接新的设备 -> adb 连接手机,即 USB 形式连接,如果出错,可以尝试下述方案,在 Auto.js 中的连接侧栏内,选择连接电脑,输入电脑 IP 即可,但需要主要的是该主机已经安装了VS Code 和相关 Auto.js 扩展,且在开启的情况下进行,即可连接。

对于部分 PC 端 Android 模拟器的选择,建议蓝叠国际版、夜神\MUME\雷电 等,同时也推荐使用 Android Studio & Genymotion 等作为开发主机,但非必要情况下还是建议通过手机投屏最为有效。

1
2
3
4
5
在上述的模拟器中,类似于 Android Studio& Genymotion 等纯 Android 模拟,是基于 X86 架构的,因此对于应用的支持仅限 Google 生态,所以我们下载后 Android 对应 Version 后还需要通过相对应的 Android Version 对 x86 架构进行翻译为 ARM。

由于更多的是针对 Android 对应的系统版本,对于 Android 8,可以通过 [Genymotion_ARM_Translation](https://github.com/m9rco/Genymotion_ARM_Translation/tree/master/package) 来进行添加。

同样的你也可以选择 Genymotion 官方所提出的 Open GApps 服务来根据自己的模拟机版本来进行选择,之后重启即可,感谢 **haku** 为此注释所做出的贡献。

自动化模拟点击

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 检测无障碍服务是否已经启用
auto.waitFor()

// 显示控制台
console.show()

function registerQQ(packageName) {
className("android.widget.TextView").text("QQ").findOne().click()
sleep(300)
click(742.2, 1820.0)
}

// 执行注册
registerQQ(packageName)

在上述的一段小 Demo 中,auto.waitFor() 以及 console.show() 主要用于检测无障碍服务和显示 Auto.js Code 执行过程中所输出的信息,同时在构造方法 registerQQ 内所包含的参数主要介绍如下:

Id Name Info
1 className() 目标应用程序的类名
2 text() 目标应用程序
3 findOne() 查找
4 click() 点击

可以通过在 Android Auto.js 中的左侧导航内,通过开启 :“无障碍服务、悬浮窗” 等较为主要的功能,来进行辅助编写。之后的 sleep() 主要设置延迟,到最后的 click 方法内的 x,y 同样通过 Auto.js 的悬浮窗来进行实现。

Layout at vertical

在提供基础的自动化服务之外,Auto.js 还提供了诸如类似页面空间类似语法,以此来构建自动化应用,以此来适配不同的场景,比如 Layout 中所应用到的垂直布局(vertical):

1
2
3
4
5
ui.layout(
<vertical padding="16">
<input text="user" textColor="black" textSize="16sp" marginTop="16" />
</vertical>
)

通过 Auto.js 所特有的语法来构建一个垂直布局的表单,并通过读个参数来进行选择,在 Auto.js 中作者还提供了一系列的文本控件,如上述的 textColor 可以来设置字体的颜色,支持标准的 RGB 格式和颜色名称,都是可选的。

同时,还支持设置字体的大小,如 textSize="16sp" 即按照 Meterial Design 的规范,同时可以使用例如上述我们所添加的上边距 marginTop ,来进行实现基础表单的构造。

我们可以结合上述的 Auto.js 和 Layout at vertical 来进行构建和向下继续扩展,根据 首页 (autojs.org) 的官方文档从而构建一个自动化的工作流。

⬅️ Go back