2025-04-16 17:55:39 +08:00
2023-11-12 23:44:21 +08:00
2017-01-27 09:05:38 +08:00

autojs6-banner_800×224

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

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


语言 (Languages)


当前自述文件 README.md 支持以下语言:


简介


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 hyb1996 2017/01/27 2020/03/13
Auto.js Pro 7 Auto.js hyb1996 2019/03/13 2019/07/08
Auto.js Pro 8 AutoJsPro hyb1996 2019/10/13 2021/07/24
Auto.js Auto.js M TonyJiangWJ 2019/11/21 -
AutoX Autox.js kkevsekk1 2020/07/24 -
Auto.js Pro 9 AutoJsPro hyb1996 2021/03/28 2023/02/09
AutoJs6 AutoJs6 SuperMonster003 2021/12/01 -
AutoX Autox.js v6 wilinz 2022/05/26 -
AutoX Autox.js v7 aiselp 2024/04/21 -

表格中的日期为预估值, 实际可能存在出入.

表格中 Auto.js Pro 7/8/9 为付费版本, 其余为免费开源版本.


功能


  • 可用作 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] 及以上

指南



主要变更


相较于 Auto.js 最终开源版本 4.1.1 Alpha2, AutoJs6 主要进行了以下升级或变更:


版本历史


v6.6.3

2025/04/18
  • 修复 主页文档标签显示在线文档时部分内容被系统导航栏遮挡的问题
  • 修复 部分设备代码编辑器空行显示方框字符的问题
  • 修复 console.setContentTextColor 方法导致日志字体颜色丢失默认值的问题 issue #346
  • 优化 打包单文件时自动读取并勾选已安装应用的声明权限 issue #362
  • 优化 使用异步加载方式一定程度提升文件管理器列表滑动流畅性
  • 优化 部分依赖或本地库版本调整 CHANGELOG.md

v6.6.2

2025/04/16
  • 新增 ui.statusBarAppearanceLight/statusBarAppearanceLightBy/navigationBarColor 等方法
  • 新增 ui.statusBarHeight 属性 (getter), 用于获取状态栏高度 issue #357
  • 新增 images.flip 方法, 用于图像翻转 issue #349
  • 新增 设置页面增加 "文件扩展名" 设置选项
  • 新增 主题色设置页面增加新布局支持 (分组/定位/搜索/历史记录/调色盘增强等)
  • 修复 Android 15 状态栏背景颜色与主题色不一致的问题
  • 修复 plugins.load 方法无法正常加载插件的问题 issue #290
  • 修复 dx 库在 Android 7.x 无法正常使用的问题 issue #293
  • 修复 ScriptRuntime 使用 require 引用内置模块时可能出现的同步状态异常 (试修) issue #298
  • 修复 notice 模块缺失 getBuilder 等扩展方法的问题 issue #301
  • 修复 shizuku/shell 等方法无法接受字符串参数的问题 issue #310
  • 修复 colors.pixel 方法无法接受单通道图像参数的问题 issue #350
  • 修复 engines.execScript/execScriptFile 等方法执行脚本时默认工作路径异常 issue #358 issue #340 issue #339
  • 修复 floaty.window/floaty.rawWindow 无法在子线程执行的问题
  • 修复 floaty.getClip 可能无法正常获取剪切板内容的问题 issue #341
  • 修复 ui.inflate 返回值丢失 attr/on/click 等原型方法的问题
  • 修复 使用 XML 语法将 JavaScript 表达式作为属性值时, 其作用域上下文绑定错误的问题 issue #319
  • 修复 部分方法调用出现异常时无法被 try..catch 块捕获的问题 issue #345
  • 修复 布局分析页面生成代码时可能导致应用崩溃的问题 issue #288
  • 修复 打包应用无法正常使用 shizuku 模块的问题 issue #227 issue #231 issue #284 issue #287 issue #304
  • 修复 代码编辑器跳转到行尾时可能跳转到下一行起始位置的问题
  • 修复 设置页面连续快速点击对话框类型项目时可能导致应用崩溃的问题
  • 优化 精简打包应用模板 APK 文件大小
  • 优化 应用 (以及打包应用) 支持更多权限 issue #338
  • 优化 打包页面支持 Pinyin 库选项
  • 优化 打包应用主活动页面优化状态栏背景及文字颜色
  • 优化 打包应用设置页面增加访问所有文件和发送通知等特殊权限开关 issue #354
  • 优化 控件的文字及图标根据主题色亮度值自动切换合适的颜色
  • 优化 部分控件主题色与背景色对比度过低时的视觉体验
  • 优化 调色盘 HEX 输入控件增强剪贴板粘贴色值时的兼容性
  • 优化 应用内页面导航栏设置为透明或半透明以增强视觉体验
  • 优化 UI 模式状态栏及导航栏默认为 md_grey_50 色值且设置为亮色模式
  • 优化 主页抽屉无障碍服务开关支持与脚本代码同步
  • 优化 主页文档页面搜索时支持双向查找按钮
  • 优化 主页 "文件" 标签支持通过长按切换浮动按钮可见状态
  • 优化 代码编辑器标题文字支持字体大小自适应
  • 优化 日志页面浮动按钮可见状态与列表滚动操作联动
  • 优化 脚本项目配置文件 project.json 支持更多打包选项 issue #305 issue #306
  • 优化 脚本项目配置文件 project.json 支持选项名称宽松匹配及别名兼容
  • 优化 APK 文件类型信息对话框增加文件大小与签名方案信息
  • 优化 APK 文件类型信息对话框增加点击监听器支持文本复制与应用详情跳转
  • 优化 尝试恢复 com.stardust 前缀包以便提升代码兼容性 issue #290
  • 优化 floaty.window/floaty.rawWindow 同时支持主线程和子线程执行
  • 优化 getClip 全局方法适时借助 floaty.getClip 方法以提升兼容性
  • 优化 files.path 及相关方法传入空值路径参数时的兼容性
  • 优化 同步最新的 Rhino 引擎官方上游代码并进行必要的代码适配
  • 优化 README.md 完善项目构建与运行相关内容 issue #344
  • 优化 部分依赖或本地库版本调整 CHANGELOG.md

v6.6.1

2025/01/01
  • 新增 pinyin 模块, 用于汉语拼音转换 (参阅 项目文档 > 汉语拼音)
  • 新增 pinyin4j 模块, 用于汉语拼音转换 (参阅 项目文档 > 汉语拼音)
  • 新增 UiObject#isSimilar 及 UiObjectCollection#isSimilar 方法, 用于确定控件或控件集合是否相似
  • 新增 currentComponent 全局方法, 用于获取当前活动的组件名称信息
  • 修复 部分环境因回退版本过低而无法正常编译项目的问题
  • 修复 调用不存在的方法时可能出现的 "非原始类型值" 异常
  • 修复 部分设备无法正常添加脚本快捷方式的问题 (试修) issue #221
  • 修复 automator.click/longClick 方法参数类型限制错误 issue #275
  • 修复 选择器不支持 ConsString 类型参数的问题 issue #277
  • 修复 UiObjectCollection 实例缺失自身方法及属性的问题
  • 优化 打包页面支持签名配置/密钥库管理/权限设置 (by luckyloogn) pr #286
  • 优化 提升浮动窗口当前包名及当前活动名的识别准确性 (优先级: Shizuku > Root > A11Y)
  • 优化 提升 currentPackage/currentActivity 识别准确性 (优先级: Shizuku > Root > A11Y)
  • 优化 恢复日志活动窗口单个条目文本内容的双击或长按选择功能 issue #280
  • 优化 脚本项目识别在 project.json 损坏情况下尽可能还原关键信息
  • 优化 打包单文件时自动生成的包名后缀支持将简体中文转换为拼音 (支持多音字)
  • 优化 UiSelector#findOnce 及 UiSelector#find 方法支持负数参数
  • 优化 app.startActivity/startDualActivity 方法增强适配性
  • 优化 UI 元素及 className 相关选择器支持更多的包名前缀省略形式 (如 RecyclerView, Snackbar 等)
  • 优化 同步最新的 Rhino 引擎官方上游代码并进行必要的代码适配
  • 优化 部分依赖或本地库版本调整 CHANGELOG.md
更多版本历史可参阅

项目编译构建


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

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

Android Studio 准备

下载 Android Studio Meerkat | 2024.3.1 Patch 1 版本 (按需选择其一):

注: 上述版本发布时间为 2025 年 3 月 24 日. 如需下载其他版本, 或上述链接已失效, 可访问 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, 确保相应版本的工具已勾选, SDK 工具的版本信息位于 AutoJs6 项目根目录的 version.properties 文件中.

JDK 准备

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

截至 2025 年 4 月 18 日, AutoJs6 可支持 JDK 最高版本为 24.

注: 如果计算机系统已安装 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 按钮).

如果构建未能自动进行, 或需要再次构建项目, 可执行以下步骤:

  • Toolbar (工具栏) 中, 从 Run/Debug Configurations (运行/调试配置) 菜单中选择 app, 这是 AutoJs6 的主应用
  • 点击左侧的 Build Project (构建项目) 按钮 (形如铁锤) 开始构建项目, 默认快捷键为 CTRL + F9
  • 等待构建完成, Builder Output (构建输出) 标签页将出现类似 "BUILD SUCCESSFUL in 1h 17m 34s" 的消息

如果构建失败, 可将异常消息反馈到 AutoJs6 项目的 议题 (Issues) 页面.

注: 关于如何构建并运行应用的更多内容, 可参阅 Android Docs

AutoJs6 项目部署 (运行 App)

项目构建成功后, 可将项目作为应用程序 (简称 App) 部署到实体设备 (如手机/平板电脑) 或虚拟设备 (如 Android 模拟器) 中.

  • Toolbar (工具栏) 中, 从 Run/Debug Configurations (运行/调试配置) 菜单中选择 app, 这是 AutoJs6 的主应用
  • 在右侧 Available Devices (可用设备) 菜单中, 选择需要运行项目 App 的设备 (实体设备或虚拟设备)
  • 点击右侧的 Run (运行) 按钮 (形如三角形) 开始运行项目, 默认快捷键为 F10
  • 等待部署完成, 指定设备将自动安装并运行项目 App

AutoJs6 项目部署 (生成 APK)

打包项目并生成可安装到安卓设备的 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 预置 Gradle 构建任务

除了构建项目 App 之外, AutoJs6 还支持一些预置的 Gradle 构建任务, 这些任务可以帮助开发者完成与项目相关的便捷操作.

Toolbar (工具栏)Run/Debug Configurations (运行/调试配置) 菜单中, 可看到各个 Gradle 预置任务, 每个任务左侧均显示带小象图标的任务标识.

  • AutoJs6 [inrt:assemble]

组装 "inrt" 构建变体, 主要服务于 AutoJs6 脚本打包功能.

AutoJs6 项目拥有不同的构建变体, 其中 "inrt" 变体用于实现 AutoJs6 的脚本打包功能, 生成打包功能依赖的模板文件 "template.apk".

使用打包功能时可能会出现以下异常消息:

java.io.FileNotFoundException: template.apk

这表明模板文件不存在, 需要手动运行一次 inrt:assemble 任务, 生成模板文件, 然后再次构建并部署 App.

注: 当主项目代码发生变更, 且希望将变更同步到打包应用时, 需要重新运行 inrt:assemble 任务生成模板文件并再次部署 App

  • AutoJs6 [app:bundle]

打包 debug 版本编译过程产物, 主要服务于 AutoJs6 声明文件 项目.

任务运行后生成一个 AutoJs6 项目最新的 JAR 文件, 利用 Android d.ts Generator (by NativeScript) 工具可生成 AutoJs6 主应用的声明文件 (d.ts 格式).

  • AutoJs6 [app:digest]

附加摘要信息到 release 版本编译产生的 APK 文件, 主要服务于 AutoJs6 发布最新版本到 GitHub 前确定最终的文件名.

以下为附加摘要信息前后的文件名对比:

前:
autojs6-v6.6.2-arm64-v8a.apk
后:
autojs6-v6.6.2-arm64-v8a-0f2a9d74.apk

参阅: Android Docs


脚本开发辅助


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

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

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

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

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


贡献参与


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

贡献人员 提交数 最近提交
luckyloogn 3 2025/01/01
kvii 1 2024/10/16
chenguangming (Tom) 2 2024/05/14
LZX284 (AI) 17 2023/11/19
TonyJiangWJ 4 2023/10/31
littlealei (抠脚本人) 12 2023/07/12
aiselp 6 2023/06/14
LYS86 (Lin) 2 2023/06/03

数据更新于 2025 年 1 月 1 日.

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

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

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

Description
No description provided
Readme MPL-2.0 314 MiB
Languages
Java 50.5%
Kotlin 41.7%
JavaScript 5.4%
C++ 2.1%
Python 0.1%