Skip to content

安卓平台 JavaScript 自动化工具 (Auto.js 二次开发项目)

License

Notifications You must be signed in to change notification settings

virtualebp/AutoJs6

 
 

Repository files navigation

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 查看贡献记录.

About

安卓平台 JavaScript 自动化工具 (Auto.js 二次开发项目)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 36.2%
  • JavaScript 30.3%
  • Kotlin 27.9%
  • C++ 4.9%
  • Other 0.7%