/AutoJs6

JavaScript automated tool for android (安卓平台 JavaScript 自动化工具)

Primary LanguageJavaMozilla Public License 2.0MPL-2.0

autojs6-banner_800×224

Android 平台支持无障碍服务的 JavaScript 自动化工具

GitHub release (latest by date) GitHub closed issues Created
Rhino Android Studio
CodeFactor Grade GitHub Code Size GitHub License


简介


Auto.js 是一款 Android 平台支持 无障碍服务 的 JavaScript 自动化工具软件.

Auto.js 由 hyb19962017/01/27 初次发布, 于 2020/03/13 停止维护, 最终版本名称为 4.1.1 Alpha2, 构建版本号为 461.

AutoJs6 在 Auto.js 最终项目的基础上, 于 2021/12/01 进行二次开发, 继续保持开源免费.

基于 Auto.js 二次开发的开源项目 (以开发时间排序, 仅部分列举):

项目名称 应用名称 开发者 开发时间
Auto.js Auto.js M TonyJiangWJ 2019/11/21
AutoX Autox.js / Autox.js v6 kkevsekk1 2020/07/24
AutoJs6 AutoJs6 SuperMonster003 2021/12/01

功能


  • 可用作 JavaScript IDE (代码补全/变量重命名/代码格式化)
  • 支持基于 无障碍服务 的自动化操作
  • 支持浮动按钮快捷操作 (脚本录制及运行/查看包名及活动/布局分析)
  • 支持选择器 API 并提供控件遍历/获取信息/控件操作 (类似 UiAutomator)
  • 支持布局界面分析 (类似 Android Studio 的 LayoutInspector)
  • 支持录制功能及录制回放
  • 支持屏幕截图/保存截图/图片找色/图片匹配
  • 支持 E4X (ECMAScript for XML) 编写界面
  • 支持将脚本文件或项目打包为 APK 文件
  • 支持利用 Root 权限扩展功能 (屏幕点击/滑动/录制/Shell)
  • 支持作为 Tasker 插件使用
  • 支持与 VSCode 连接并进行桌面开发 (需要 AutoJs6-VSCode-Extension 插件)

环境


  • Android 操作系统
  • API 24 (7.0) [N] 及以上

指南



主要变更


  • VSCode 插件支持客户端 (LAN) 及服务端 (LAN/ADB) 连接方式

  • 多语言适配 (西/法/俄/阿/日/韩/英/简中/繁中等)

  • 夜间模式适配 (设置页面/文档页面/布局分析页面/浮动窗口等)

  • Rhino 引擎由 v1.7.7.2 升级至 v1.7.15-SNAPSHOT


版本历史


v6.5.0

2023/12/02
  • 新增 opencc 模块 (参阅 项目文档 > 中文转换) (Ref to LZX284)
  • 新增 UiSelector 增加 plusappend 方法 issue #115
  • 新增 打包应用页面增加 ABI 及库的筛选支持 (Ref to AutoX) issue #189
  • 修复 打包应用文件体积异常庞大的问题 (Ref to AutoX / LZX284) issue #176
  • 修复 打包应用无法显示并打印部分异常消息的问题
  • 修复 打包应用页面选择应用图标后可能显示空图标的问题
  • 修复 打包应用包含 MLKit Google OCR 库时可能出现的上下文未初始化异常
  • 修复 ocr.mlkit/ocr.recognizeText/detect 方法无效的问题
  • 修复 部分文本 (如日志页面) 显示语言与应用设置语言可能不相符的问题
  • 修复 部分语言在主页抽屉开关项可能出现文本溢出的问题
  • 修复 部分设备无障碍服务开启后立即自动关闭且无任何提示消息的问题 issue #181
  • 修复 部分设备无障碍服务开启后设备物理按键可能导致应用崩溃的问题 (试修) issue #183 issue #186
  • 修复 使用 auto(true) 重启无障碍服务后 pickup 功能异常的问题 (试修) issue #184
  • 修复 floaty 模块创建浮动窗口拖动时可能导致应用崩溃的问题 (试修)
  • 修复 app.startActivity 无法使用简称参数的问题 issue #182 issue #188
  • 修复 importClass 导入的类名与全局变量冲突时代码抛出异常的问题 issue #185
  • 修复 Android 7.x 无法使用无障碍服务的问题
  • 修复 Android 14+ 可能无法正常使用 runtime.loadJar/loadDex 方法的问题 (试修)
  • 修复 安卓系统快速设置面板中 "布局范围分析" 和 "布局层次分析" 不可用的问题 issue #193
  • 修复 自动检查更新功能可能导致应用 ANR 的问题 (试修) issue #186
  • 修复 文件管理器示例代码文件夹点击 "向上" 按钮后无法回到工作路径页面的问题 issue #129
  • 修复 代码编辑器使用替换功能时替换按钮无法显示的问题
  • 修复 代码编辑器长按删除时可能导致应用崩溃的问题 (试修)
  • 修复 代码编辑器点击 fx 按钮无法显示模块函数快捷面板的问题
  • 修复 代码编辑器模块函数快捷面板按钮函数名称可能溢出的问题
  • 优化 代码编辑器模块函数快捷面板适配夜间模式
  • 优化 打包应用启动页面适配夜间模式并调整应用图标布局
  • 优化 打包应用页面支持使用软键盘 ENTER 键实现光标跳转
  • 优化 打包应用页面支持点击 ABI 标题及库标题切换全选状态
  • 优化 打包应用页面默认 ABI 智能选择并增加不可选择项的引导提示
  • 优化 文件管理器根据文件及文件夹的类型及特征调整菜单项的显示情况
  • 优化 文件管理器文件夹右键菜单增加打包应用选项
  • 优化 无障碍服务启用但功能异常时在 AutoJs6 主页抽屉开关处将体现异常状态
  • 优化 部分依赖或本地库版本调整 CHANGELOG.md

v6.4.2

2023/11/15
  • 新增 dialogs.build() 选项参数属性 inputSingleLine
  • 新增 console.setTouchable 方法 issue #122
  • 修复 ocr 模块部分方法无法识别区域参数的问题 issue #162 issue #175
  • 修复 Android 7.x 发现新版本时无法获取版本详情的问题
  • 修复 Android 14 申请截图权限时导致应用崩溃的问题
  • 修复 主页抽屉快速切换 "浮动按钮" 开关时可能导致应用崩溃的问题
  • 修复 使用菜单关闭浮动按钮时重启应用后浮动按钮可能依然显示的问题
  • 修复 安卓 13 及以上系统设置页面选择并切换 AutoJs6 语言后无法生效的问题
  • 修复 构建工具初次构建时无法自动完成 OpenCV 资源部署的问题
  • 优化 原生化 bridges 模块以提升脚本执行效率 (Ref to aiselp)
  • 优化 重构无障碍服务相关代码以增强无障碍服务的功能稳定性 (实验性) issue #167
  • 优化 UiObject 和 UiObjectCollection 的打印输出格式
  • 优化 构建工具在构建环境 Gradle JDK 版本不满足要求时作出升级提示
  • 优化 部分依赖或本地库版本调整 CHANGELOG.md

v6.4.1

2023/11/02
  • 修复 构建工具无法自适应未知平台的问题 (by TonyJiangWJ) pr #158
  • 修复 脚本退出时可能导致应用崩溃的问题 issue #159
  • 修复 http 模块获取响应对象的 body.contentType 返回值类型错误 issue #142
  • 修复 device.width 及 device.height 返回数据不正确的问题 issue #160
  • 修复 代码编辑器长按删除时可能导致应用崩溃的问题 (试修) issue #156
  • 修复 代码编辑器反向选择文本后进行常规操作可能导致应用崩溃的问题
  • 修复 部分设备长按 AutoJs6 应用图标无法显示快捷方式菜单的问题
  • 修复 部分设备打包项目时点击确认按钮无响应的问题
  • 修复 app.sendBroadcast 及 app.startActivity 无法使用简称参数的问题
  • 修复 floaty 模块 JsWindow#setPosition 等方法首次调用时的功能异常
  • 优化 增加 Termux 相关权限以支持 Intent 调用 Termux 执行 ADB 命令 issue #136
  • 优化 http 模块获取的响应对象可重复使用 body.string() 及 body.bytes() 方法
  • 优化 增加 GitHub Actions 自动打包支持 (by TonyJiangWJ) pr #158
  • 优化 构建工具自适应 Temurin 平台
  • 优化 部分依赖或本地库版本调整 CHANGELOG.md
更多版本历史可参阅

项目编译构建


如需对 AutoJs6 开源项目进行调试或开发, 可使用 Android Studio 或 IntelliJ IDEA (Jetbrains 公司产品).

本小节以 Android Studio 为例介绍 AutoJs6 开源项目的编译构建方法, IntelliJ IDEA 与之类似.

Android Studio 准备

下载 Android Studio Hedgehog | 2023.1.1 版本 (按需选择其一):

注: 上述版本发布时间为 2023 年 11 月 30 日. 如需下载其他版本, 或上述链接已失效, 可访问 Android Studio 发行版本归档 页面.

安装或解压上述文件, 运行 Android Studio 软件 (如 "D:\android-studio\bin\studio64.exe").

Android SDK 准备

注: 如果计算机系统已安装 Android SDK (安卓软件开发工具包), 则可跳过此小节内容.

在 Android Studio 软件中使用快捷键 CTRL + ALT + S 打开设置页面:

Appearance & Behavior (外观与表现) -> 
System Settings (系统设置) -> 
Android SDK (安卓软件开发工具包)

Android SDK Location (安卓软件开发工具包位置) 处如果是空白内容, 可点击右侧 Edit (编辑) 按钮, 在弹出的窗口中多次点击 Next (下一步).

注: 过程中可能需要同意一个或多个相关协议才能继续.

待相关资源下载并安装完毕, 点击 Finish (完成) 按钮.
上述 Android SDK Location (安卓软件开发工具包位置) 处将自动完成路径填写, SDK 准备工作随即完成.

Android SDK Tools 准备

AutoJs6 需要使用部分 SDK 工具 (如 NDK 及 CMake).

注: 如果计算机系统已安装 AutoJs6 全部所需的 Android SDK Tools, 则可跳过此小节内容.

在 Android Studio 软件中使用快捷键 CTRL + ALT + S 打开设置页面:

Appearance & Behavior (外观与表现) -> 
System Settings (系统设置) -> 
Android SDK (安卓软件开发工具包) -> 
SDK Tools (SDK 工具) (位于右侧窗口)

勾选 Show Package Details (显示包详情), 依次点击 NDK 及 CMake, 确保相应版本的工具已勾选 (截至 2023 年 10 月 30 日, NDK 所需版本为 21.1.6352462, CMake 所需版本为 3.10.2).

SDK 工具的版本信息位于 AutoJs6 项目根目录的 version.properties 文件中.

JDK 准备

AutoJs6 项目依赖的 JDK (Java 开发工具包) 发行版本不低于 17, 但建议不低于 19.

需额外留意, 截至 2023 年 10 月 30 日, AutoJs6 暂不支持 JDK 最新版本 21.

注: 如果计算机系统已安装 JDK 且版本满足上述要求, 则可跳过此小节内容.

JDK 可使用 IDE 直接下载, 或访问 Oracle 网站 下载.

在 Android Studio 软件中使用快捷键 CTRL + ALT + S 打开设置页面:

Build, Execution, Deployment (构建, 执行, 开发) ->
Build Tools (构建工具) -> 
Gradle

Gradle JDK 处可选择或添加不同版本的 JDK.

如果列表中已存在合适版本的 JDK (>= 17), 则直接选择即可.
否则可以选择 Download JDK (下载 JDK) 下载合适的 JDK, 点击 Download (下载) 按钮并等待下载完成.
也可以选择 Add JDK (添加 JDK) 添加已存在的本地 JDK, 定位其目录并完成 JDK 添加.

AutoJs6 资源克隆

在 Android Studio 主页面点击 Get from VCS (从版本控制系统获取) 按钮.
URL (统一资源定位地址) 处填入 https://github.com/SuperMonster003/AutoJs6.git,
Directory (目录) 处可根据需要修改为特定路径.
点击 Clone (克隆) 按钮, 等待 AutoJs6 项目资源在设备本地完成克隆.

注: 上述过程可能需要安装 Git (分布式版本控制系统).

AutoJs6 项目构建

克隆完成后, Android Studio 将打开 AutoJs6 的项目窗口, 并自动完成初步的 Dependencies (依赖) 下载及 Gradle 构建工作.

注: 上述过程可能非常耗时. 若网络条件欠佳, 可能需要重试多次 (点击 Retry 按钮).

构建完成后, Android Studio 的 Build 标签页将出现类似 BUILD SUCCESSFUL in 1h 17m 34s 的消息.

打包项目并生成可安装到安卓设备的 APK 文件:

  • 调试版 (Debug Version)
    • Build (构建) -> Build Bundle(s) / APK(s) -> Build APK(s)
    • 生成带默认签名的调试版安装包
    • 路径示例: "D:\AutoJs6\app\build\outputs\apk\debug\"
  • 发布版 (Release Version)
    • Build (构建) -> Generate Signed Bundle / APK
    • 选择 APK 选项
    • 准备好签名文件 (新建或选取), 生成已签名的发布版安装包
    • 路径示例: "D:\AutoJs6\app\release\"

参阅: Android Docs


脚本开发辅助


开发 AutoJs6 可运行的脚本, 需使用合适的开发工具:

如需在 PC 上进行脚本编写与调试, VSCode 插件可以实现 PC 与手机的互联:

使用开发工具编写代码时, 代码智能补全功能可以更好地辅助开发者完成代码编写:

编写代码时, AutoJs6 相关 API 及使用方式, 可随时查阅应用文档:

现有的脚本开发项目可作为参考, 激发个人脚本项目的创作灵感:


贡献参与


感谢每一位参与 AutoJs6 项目开发的贡献人员.

贡献人员 提交数 最近提交
LZX284 (Ai) 17 2023/11/19
TonyJiangWJ 4 2023/10/31
little-alei (抠脚本人) 12 2023/07/12
aiselp 6 2023/06/14
LYS86 (LYS) 2 2023/06/03

数据更新于 2023/12/02.

数据条目按 最近提交 降序排序.

新发起的暂未处理的 Pull Request, 将在合并处理后加入数据统计.

部分贡献人员在 GitHub Contributors 未能正常出现, 其提交记录为空, 仍可通过 Pull Request 查看贡献记录.