autojs6-banner_800×224

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

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

****** ### 语言 (Languages) ****** 当前自述文件 `README.md` 支持以下语言: - 简体中文 [zh-Hans] # 当前 - [繁體中文 (香港) [zh-Hant-HK]](http://project.autojs6.com/blob/master/.readme/README-zh-Hant-HK.md) - [繁體中文 (台灣) [zh-Hant-TW]](http://project.autojs6.com/blob/master/.readme/README-zh-Hant-TW.md) - [English [en]](http://project.autojs6.com/blob/master/.readme/README-en.md) - [Français [fr]](http://project.autojs6.com/blob/master/.readme/README-fr.md) - [Español [es]](http://project.autojs6.com/blob/master/.readme/README-es.md) - [日本語 [ja]](http://project.autojs6.com/blob/master/.readme/README-ja.md) - [한국어 [ko]](http://project.autojs6.com/blob/master/.readme/README-ko.md) - [Русский [ru]](http://project.autojs6.com/blob/master/.readme/README-ru.md) - [العربية [ar]](http://project.autojs6.com/blob/master/.readme/README-ar.md) ****** ### 简介 ****** [Auto.js](https://github.com/hyb1996/Auto.js) 是一款 Android 平台支持 [无障碍服务](https://developer.android.com/guide/topics/ui/accessibility/service?hl=zh-cn) 的 JavaScript 自动化工具软件. Auto.js 由 [hyb1996](https://github.com/hyb1996) 于 `2017/01/27` 初次发布, 于 `2020/03/13` 停止维护, 最终版本名称为 `4.1.1 Alpha2`, 构建版本号为 `461`. AutoJs6 在 Auto.js 最终项目的基础上, 于 `2021/12/01` 进行二次开发, 继续保持开源免费. 下表列举了部分 Auto.js 相关项目 (按开发日期排序): | 项目 | 应用名称 | 主要开发者 | 开发日期 | 终止开发日期 | 活跃维护期 (年) | |:------:|:------:|:------:|:------:|:------:|:------:| | [Auto.js](https://github.com/hyb1996/Auto.js) | [Auto.js](https://github.com/TonyJiangWJ/Auto.js/commit/268ec8895bbfa28fc7715154eb15b1c1eaaefd14#diff-5e01f7d37a66e4ca03deefc205d8e7008661cdd0284a05aaba1858e6b7bf9103R2) | [hyb1996](https://github.com/hyb1996) | `2017/01/27` | `2020/03/13` | 3.13 | | Auto.js Pro 7 | Auto.js | [hyb1996](https://github.com/hyb1996) | `2019/03/13` | `2019/07/08` | 0.32 | | Auto.js Pro 8 | AutoJsPro | [hyb1996](https://github.com/hyb1996) | `2019/10/13` | `2021/07/24` | 1.78 | | [Auto.js](https://github.com/TonyJiangWJ/Auto.js) | [Auto.js M](https://github.com/TonyJiangWJ/Auto.js/commit/268ec8895bbfa28fc7715154eb15b1c1eaaefd14#diff-5e01f7d37a66e4ca03deefc205d8e7008661cdd0284a05aaba1858e6b7bf9103R2) | [TonyJiangWJ](https://github.com/TonyJiangWJ) | `2019/11/21` | - | < 5.93 > | | [AutoX](https://github.com/kkevsekk1/AutoX) | [Autox.js](https://github.com/kkevsekk1/AutoX/commit/8143e4ed893d4af05d22aa791b83a962f9959873#diff-5e01f7d37a66e4ca03deefc205d8e7008661cdd0284a05aaba1858e6b7bf9103R2) | [kkevsekk1](https://github.com/kkevsekk1) | `2020/07/24` | [ `2025/01/07` ] | 4.46 | | [Auto.js Pro 9](https://pro.autojs.org/) | AutoJsPro | [hyb1996](https://github.com/hyb1996) | `2021/03/28` | `2023/02/09` | 1.87 | | [AutoJs6](https://github.com/SuperMonster003/AutoJs6) | [AutoJs6](https://github.com/SuperMonster003/AutoJs6/commit/a8ce1b9acb541e9736c33134be3194c3148a15a3#diff-833a46a97033e77558372a2dce103fd6fee29aaaa899f610022a7aece592ee7bR27) | [SuperMonster003](https://github.com/SuperMonster003) | `2021/12/01` | - | < 3.90 > | | [autojs4](https://github.com/blackcd318/autojs4) | Auto.js | [blackcd318](https://github.com/blackcd318) | `2021/12/15` | `2023/07/31` | 1.62 | | [AutoX](https://github.com/kkevsekk1/AutoX) | [Autox.js v6](https://github.com/kkevsekk1/AutoX/commit/8b6776cff8b0fca4be4a52719b7d7d07c0a058f3#diff-51a0b488f963eb0be6c6599bf5df497313877cf5bdff3950807373912ac1cdc9R130) | [wilinz](https://github.com/wilinz) / [aiselp](https://github.com/aiselp) | `2022/05/26` | [ `2025/01/07` ] | 2.62 | | [openautojs](https://github.com/openautojs/openautojs) | [OpenAuto.js](https://github.com/openautojs/openautojs/commit/a11feaad025154de9b453ba70b49e94a6ca8b48a#diff-7d757295fcec3b37c258337e048644c258233d79259152e77baa6d36bb0ec418R2) | [openautojs](https://github.com/openautojs) | `2023/02/17` | `2023/04/16` | 0.16 | | [AutoJs4](https://github.com/SuperMonster003/AutoJs4) | [AutoJs4](https://github.com/SuperMonster003/AutoJs4/commit/8de11699b608be1c1f49f0f10e2e2826f8c77978) | [SuperMonster003](https://github.com/SuperMonster003) | `2023/04/11` | - | < 2.55 > | | [AutoX](https://github.com/aiselp/AutoX) | [Autox.js v7](https://github.com/aiselp/AutoX/commit/484491fd5fe12b8203d0b09c181eb0f471c0ea9f#diff-8cff73265af19c059547b76aca8882cbaa3209291406f52df1dafbbc78e80c46R120) | [aiselp](https://github.com/aiselp) | `2024/04/21` | - | < 1.52 > | | [Autoxjs_v6_ozobi](https://github.com/ozobiozobi/Autoxjs_v6_ozobi) | [Autox.js v6_ozobi](https://github.com/ozobiozobi/Autoxjs_v6_ozobi/blob/a651d02246e09cfbbfa87e6eaccf900fab/app/build.gradle.kts#L143) | [ozobiozobi](https://github.com/ozobiozobi) | `2024/10/01` | - | < 1.07 > | | [AutoX](https://github.com/autox-community/AutoX) | [Autox.js v6](https://github.com/autox-community/AutoX/commit/8b6776cff8b0fca4be4a52719b7d7d07c0a058f3#diff-51a0b488f963eb0be6c6599bf5df497313877cf5bdff3950807373912ac1cdc9R130) | [autox-community](https://github.com/autox-community) | `2025/03/30` | - | < 0.58 > | 表格中的日期为预估值, 实际可能存在出入. 表格中 Auto.js Pro 7/8/9 为付费版本, 其余为免费开源版本. 表格中 `终止开发日期` 列包含方括号 (`[]`) 的数据, 表示开源项目暂时无法访问. 表格中 `活跃维护期` 列包含尖括号 (`<>`) 的数据, 其统计截止日期为 2025 年 10 月 26 日. ****** ### 功能 ****** * 可用作 JavaScript IDE (代码补全/变量重命名/代码格式化) * 支持基于 [无障碍服务](https://developer.android.com/reference/android/accessibilityservice/AccessibilityService) 的自动化操作 * 支持浮动按钮快捷操作 (脚本录制及运行/查看包名及活动/布局分析) * 支持选择器 API 并提供控件遍历/获取信息/控件操作 (类似 [UiAutomator](https://developer.android.com/training/testing/ui-automator)) * 支持布局界面分析 (类似 Android Studio 的 LayoutInspector) * 支持录制功能及录制回放 * 支持屏幕截图/保存截图/图片找色/图片匹配 * 支持 [E4X](https://zh.wikipedia.org/wiki/E4X) (ECMAScript for XML) 编写界面 * 支持将脚本文件或项目打包为 APK 文件 * 支持利用 Root 权限扩展功能 (屏幕点击/滑动/录制/Shell) * 支持作为 Tasker 插件使用 * 支持与 VSCode 连接并进行桌面开发 (需要 [AutoJs6-VSCode-Extension](http://vscext-project.autojs6.com) 插件) ****** ### 环境 ****** - Android 操作系统 - [API](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) [24](https://developer.android.com/reference/android/os/Build.VERSION_CODES#N) ([7.0](https://zh.wikipedia.org/wiki/Android_Nougat)) [[N](https://developer.android.com/reference/android/os/Build.VERSION_CODES#N)] 及以上 ****** ### 指南 ****** * [应用文档](https://docs.autojs6.com) * [使用手册 (待编写)](https://docs.autojs6.com/#/manual) * [疑难解答](https://docs.autojs6.com/#/qa) * [项目编译构建](#project-compilation-and-build) * [脚本开发辅助](#script-development-assistance) ****** ### 主要变更 ****** 相较于 Auto.js 最终开源版本 `4.1.1 Alpha2`, AutoJs6 主要进行了以下升级或变更: * 支持通过 [Shizuku](https://shizuku.rikka.app/introduction/) 获得 ADB 特权并使用系统 API * 支持构建 [WebSocket](https://docs.autojs6.com/#/webSocketType) 实例以完成基于 [WebSocket 协议](https://zh.wikipedia.org/wiki/WebSocket) 的网络请求 * 新增模块 [ [base64](https://docs.autojs6.com/#/base64) / [crypto](https://docs.autojs6.com/#/crypto) / [sqlite](https://docs.autojs6.com/#/sqlite) / [i18n](https://docs.autojs6.com/#/i18n) / [notice](https://docs.autojs6.com/#/notice) / [ocr](https://docs.autojs6.com/#/ocr) / [opencc](https://docs.autojs6.com/#/opencc) / [qrcode](https://docs.autojs6.com/#/qrcode) / [shizuku](https://docs.autojs6.com/#/shizuku) / ... ] * 多语言适配 [ 西 / 法 / 俄 / 阿 / 日 / 韩 / 英 / 简中 / 繁中 / ... ] * 主题色适配 [ 分组 / 定位 / 搜索 / 历史记录 / 亮度及对比度自动适配 / ... ] * 夜间模式适配 [ 设置页面 / 文档页面 / 布局分析页面 / 浮动窗口 / ... ] * [VSCode 插件](http://vscext-project.autojs6.com) 支持客户端 (LAN) 及服务端 (LAN/ADB) 连接方式 * [Rhino](https://github.com/mozilla/rhino/) 引擎由 [v1.7.7.2](https://github.com/mozilla/rhino/releases/tag/Rhino1_7_7_2_Release) 升级至 [v1.8.1-SNAPSHOT](http://rhino.autojs6.com/blob/master/gradle.properties#L3) (更新于 2025 年 10 月 5 日) * Unicode [码位](https://developer.mozilla.org/zh-CN/docs/Glossary/Code_point) 转义支持 [辅助平面](https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%B9%B3%E9%9D%A2%E6%98%A0%E5%B0%84#%E7%AC%AC%E4%B8%80%E8%BC%94%E5%8A%A9%E5%B9%B3%E9%9D%A2) 字符 ```js '\u{1D160}'; /* 表示 "𝅘𝅥𝅮", 传统方式: '\uD834\uDD60'. */ ``` * 支持 [Object.values()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/values) ```js Object.values({name: 'Max', age: 4}); // ['max', 4] ``` * 支持 [Array.prototype.includes()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/includes) ```js [10, 20, NaN].includes(20); // true ``` * 支持 [BigInt](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/BigInt) ```ts typeof 567n === 'bigint'; // true ``` * 支持 [模板字符串](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Template_literals) ```js `Lucky number: ${(Math.random() * 100).toFixed(0)}` ``` * 查看 Rhino 引擎 [更多新特性](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/RHINO.md) * 查看 Rhino 引擎 [兼容性列表](https://mozilla.github.io/rhino/compat/engines.html) ****** ### 版本历史 ****** # v6.7.0 ###### 2025/10/26 * `新增` cvt 模块, 用于数据单位转换 (参阅 项目文档 > [单位转换](https://docs.autojs6.com/#/cvt)) * `新增` fmt 模块, 用于数据格式化 (参阅 项目文档 > [格式化](https://docs.autojs6.com/#/fmt)) * `新增` zip 模块, 用于文件压缩与解压缩操作 (Ref to [Auto.js Pro](https://g.pro.autojs.org/)) (参阅 项目文档 > [Zip](https://docs.autojs6.com/#/zip)) * `新增` mediainfo 模块, 用于查看媒体文件的详细信息 (参阅 项目文档 > [媒体信息](https://docs.autojs6.com/#/mediainfo)) * `新增` cvt.bytes 方法, 用于字节数据单位转换 (参阅 项目文档 > [单位转换](https://docs.autojs6.com/#/cvt)) * `新增` fmt.bytes 方法, 用于字节数据格式化 (参阅 项目文档 > [数据格式化](https://docs.autojs6.com/#/fmt)) * `新增` s13n.bytes 方法, 用于标准化字节数据 (参阅 项目文档 > [标准化](https://docs.autojs6.com/#/s13n)) * `新增` UiObject#isShifted 方法, 用于检测控件位置变化 * `新增` device.getSharedDeviceId 方法, 用于跨应用获取统一共享设备 ID _[`issue #455`](http://issues.autojs6.com/455)_ * `新增` http 模块请求相关方法获取的 body 对象增加 stream/saveToFile/close 方法 _[`issue #452`](http://issues.autojs6.com/452)_ * `新增` http 模块请求相关方法支持缓存控制选项参数 (cacheBody/bodyCacheThresholdBytes) * `新增` http 模块请求相关方法支持不安全选项参数 (isInsecure/insecure), 用于忽略证书相关异常 _[`issue #417`](http://issues.autojs6.com/417)_ * `新增` http 模块请求相关方法支持 options.client 选项, 用于配置 OkHttpClient.Builder (如 followRedirects 等) _[`issue #454`](http://issues.autojs6.com/454)_ * `新增` structuredClone 全局方法, 用于深拷贝 JavaScript 对象 (参阅 [MDN](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/structuredClone)) * `新增` 设置页面支持应用启动器图标设置选项 _[`issue #405`](http://issues.autojs6.com/405)_ * `新增` Scrapers 工具 (run-scrapers.mjs) 用于自动更新 Gradle 构建脚本结构化数据/README 通用数据/README 模板数据等 * `修复` isJavaClass/isJavaPackage 等全局方法无效的问题 * `修复` timers.keepAlive 方法 timeout 参数功能无效的问题 * `修复` floaty.window/rawWindow 方法无法接受字符串参数的问题 * `修复` util.class[Name]/getClass[Name] 可能返回错误结果的问题 * `修复` threads.disposable() 返回的对象在存取数据时可能被意外装箱的问题 _[`issue #435`](http://issues.autojs6.com/435)_ * `修复` console/toast 等方法显示 Java Double 时可能丢失末尾零的问题 * `修复` 无法使用 console/toast 等方法显示 BigInt 数据类型的问题 * `修复` 部分全局对象可能丢失 JavaScript 原型属性及方法的问题 * `修复` 使用 XML 语法将 JavaScript 表达式作为属性值时, this 对象可能出现指向错误的问题 * `修复` canvas 元素控件 setMaxFps 方法内部帧率计算错误 * `修复` images.concat 方法纵向拼接时宽度值计算错误 * `修复` images.requestScreenCapture 方法调用时用户取消授权可能导致应用崩溃的问题 * `修复` images 部分相关方法出现异常时 oneShot 标记功能失效的问题 _[`issue #372`](http://issues.autojs6.com/372)_ * `修复` images 部分相关方法可能引发内存泄露的问题 _[`issue #372`](http://issues.autojs6.com/372)_ * `修复` Android 10 UiObject#child 方法可能出现 ArrayIndexOutOfBoundsException 异常的问题 _[`issue #416`](http://issues.autojs6.com/416)_ * `修复` 运行项目时 project.json 配置参数无法正常解析的问题 * `修复` 修复项目配置文件中构建版本号或构建时间出现较大数字时可能导致应用崩溃的问题 * `修复` 频繁获取或重建 ImageReader 时可能因缓冲区暂无可用帧导致应用崩溃的问题 * `修复` 打包应用无法正常使用 Paddle OCR 与 Rapid OCR 功能的问题 * `修复` 版本历史页面部分系统因字体差别导致统计数据显示不完整的问题 * `修复` 部分设备无法正常初始化 MLKit Google OCR 的问题 (试修) _[`issue #8`](http://issues.autojs6.com/8#issuecomment-3117061768)_ * `修复` ErrorDialogActivity 可能无法正常启动或短时间自动消失的问题 _[`issue #414`](http://issues.autojs6.com/414)_ _[`issue #340`](http://issues.autojs6.com/340#issuecomment-2973485826)_ * `修复` 崩溃报告页面复制详细信息功能失效的问题 * `修复` APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题 * `修复` 构建工具启用 isCleanup[Paddle/Rapid]Ocr 配置选项时无法正常完成 Rebuild Project 任务的问题 * `优化` console.log 等方法打印全局对象 (images, app, ocr 等) 时支持显示详细信息 * `优化` android.graphics.Paint#setColor 支持正常解析 ColorInt/ColorHex/ColorName 等颜色参数 * `优化` 内置模块相关方法实参类型的异常消息增加类型摘要信息 * `优化` 文件管理器浮动按钮展开后点击菜单项时优化菜单收起时机 * `优化` 崩溃报告页面支持双指缩放调整字体大小并添加常用功能按钮 * `优化` 应用启动器图标支持自适应图标特性 _[`issue #405`](http://issues.autojs6.com/405)_ * `优化` 使用 LiveData 及 SharedFlow 替代已弃用的 LocalBroadcastManager * `优化` Gradle 构建脚本提升 7z 格式文件的解压效率 * `优化` Gradle 构建脚本支持获取详细的 Android Studio IDE 版本 (如 "2025.1.4.7") * `优化` Gradle 构建脚本支持自动生成 VersionCodesList 类所需数据以降低脚本启动延迟 * `优化` 使用版本目录 (Version Catalogs) 集中管理 Gradle 依赖和插件版本 * `优化` 模块化 Gradle 构建脚本, 将共享构建逻辑迁移至 buildSrc 并抽象为约定插件 * `优化` 使用 Gradle 约定插件简化本地 AAR 库加载逻辑 * `优化` 使用 Toolchain 替代 sourceCompatibility/targetCompatibility 以降低构建环境差异 * `优化` 部分依赖或本地库版本调整 _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v670)_ # v6.6.4 ###### 2025/05/31 * `提示` API 变更: ui.(status/navigation)BarAppearanceLight[By] -> ui.(status/navigation)BarIconLight[By] * `新增` util.dpToPx/spToPx/pxToDp/pxToSp 方法, 用于像素单位转换 * `修复` 屏幕旋转至横向时子标题可能显示不完整的问题 * `修复` 屏幕旋转至横向时部分页面内容被侧边导航栏遮挡的问题 * `修复` Android 15 部分页面状态栏背景着色区域不完整的问题 _[`issue #398`](http://issues.autojs6.com/398)_ * `修复` 代码编辑器可能使用置信度不足的编码写入文件导致内容解码异常的问题 (试修) * `优化` 关于应用与开发者页面增加布局适配通用性并去除不必要的布局分类 * `优化` README.md 项目编译构建小节添加多种方式便于定位目标设置页面 _[`issue #404`](http://issues.autojs6.com/404)_ * `优化` 部分依赖或本地库版本调整 _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v664)_ # v6.6.3 ###### 2025/05/27 * `新增` 版本历史功能, 可查看发行版本历史更新记录 (多语言) 与统计数据 * `新增` timers.keepAlive 方法 (已全局化), 用于保持脚本活跃状态 * `新增` engines.on('start/stop/error', callback) 等事件监听方法, 用于监听脚本引擎全局事件 * `新增` images.detectMultiColors 方法, 用于多点颜色校验 _[`issue #374`](http://issues.autojs6.com/374)_ * `新增` images.matchFeatures/detectAndComputeFeatures 方法, 支持全分辨率找图 (Ref to [Auto.js Pro](https://g.pro.autojs.org/)) _[`issue #366`](http://issues.autojs6.com/366)_ * `新增` images.compressToBytes 方法, 用于压缩图像并生成字节数组 * `新增` images.downsample 方法, 用于像素降采样并生成新的 ImageWrapper * `新增` ui.keepScreenOn 方法, 用于 UI 页面获取焦点时保持设备屏幕常亮 * `新增` ui.root 属性 (getter), 用于获取 UI 页面布局的 "窗口内容根容器" 节点 * `新增` webview 元素支持基于 JsBridge 的 Web 页面布局 (Ref to [Auto.js Pro](https://g.pro.autojs.org/)) [参阅 示例代码 > 布局 > 可交互 HTML / Vue2 + Vant (SFC)] _[`issue #281`](http://issues.autojs6.com/281)_ * `修复` 主页文档标签及文档活动页面显示在线文档时部分内容被系统导航栏遮挡的问题 * `修复` 部分页面 Toolbar 点击按钮时可能导致标题点击事件误触发的问题 * `修复` 部分设备代码编辑器空行显示方框字符的问题 * `修复` 主题色设置页面调色盘对话框可能无限叠加的问题 * `修复` 无障碍服务关闭时音量加键停止所有脚本功能失效的问题 * `修复` 定时任务页面编辑自定义广播内容时出现的输入法遮挡问题 * `修复` webview 元素中的控件无法正常激活输入法软键盘的问题 * `修复` APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题 * `修复` 文件管理器示例代码进入项目目录时可能无法自动加载子目录文件内容的问题 * `修复` Android 15 UI 模式顶部内容被状态栏覆盖的问题 * `修复` Android 15 部分页面状态栏背景颜色可能无法动态跟随主题色的问题 * `修复` dialogs 模块无法正常使用 customView 属性的问题 _[`issue #364`](http://issues.autojs6.com/364)_ * `修复` dialogs.input 方法的表达式参数可能无法获得执行结果的问题 * `修复` 使用 JavaAdapter 时导致 ClassLoader 调用栈溢出的问题 _[`issue #376`](http://issues.autojs6.com/376)_ * `修复` console.setContentTextColor 方法导致日志字体颜色丢失默认值的问题 _[`issue #346`](http://issues.autojs6.com/346)_ * `修复` console.setContentBackgroundColor 方法无法接受颜色名称参数的问题 _[`issue #384`](http://issues.autojs6.com/384)_ * `修复` images.compress 方法实现原理由像素降采样修正为编码质量变化 * `修复` images.resize 方法无法正常使用的问题 * `修复` engines.all 方法可能触发 ConcurrentModificationException 的问题 _[`issue #394`](http://issues.autojs6.com/394)_ * `修复` README.md 中部分语言日期格式不正确的问题 * `修复` Gradle 构建脚本可能因获取到无效库档案文件长度而导致构建失败的问题 _[`issue #389`](http://issues.autojs6.com/389)_ * `优化` 布局分析支持控件隐藏 (by [TonyJiangWJ](https://github.com/TonyJiangWJ)) _[`pr #371`](http://pr.autojs6.com/371)_ _[`issue #355`](http://issues.autojs6.com/355)_ * `优化` 布局分析菜单添加渐变分隔线实现一定程度的功能分组 * `优化` 脚本项目配置文件 project.json 支持 permissions 选项 (by [wirsnow](https://github.com/wirsnow)) _[`pr #391`](http://pr.autojs6.com/391)_ _[`issue #362`](http://issues.autojs6.com/362)_ * `优化` 打包单文件时自动读取并勾选已安装应用的声明权限 _[`issue #362`](http://issues.autojs6.com/362)_ * `优化` 主题色扩充适配范围并支持更多控件类型 * `优化` 主页抽屉在横向屏幕或超宽屏幕的宽度适应性 * `优化` 关于应用与开发者页面增加水平布局及小屏布局适配 * `优化` 设置页面对话框相关设置支持 "使用默认值" 菜单选项 * `优化` 文件管理器浮动按钮展开后点击其他区域可自动隐藏 * `优化` 代码编辑器格式化代码支持 `??`, `?.`, `??=` 等运算符 * `优化` 代码编辑器支持 GB18030 / UTF-16 (LE/BE) / Shift_JIS 等编码的文件读写 * `优化` 代码编辑器支持显示文件详细信息 (路径/编码/换行符/字节及字符总数等) _[`issue #395`](http://issues.autojs6.com/395)_ * `优化` 意图相关操作 (编辑/查看/安装/发送/播放等) 增加操作异常提示 * `优化` webview 元素的 url 属性支持相对路径 * `优化` ImageWrapper#saveTo 方法的路径参数支持相对路径 * `优化` images.save 方法使用 quality 参数时支持 png 格式的文件体积压缩 _[`issue #367`](http://issues.autojs6.com/367)_ * `优化` 已忽略更新记录及客户端模式连接地址记录支持清空操作 * `优化` 版本更新信息支持多语言显示 (与当前显示语言同步) * `优化` 使用异步加载方式一定程度提升文件管理器列表滑动流畅性 * `优化` 脚本异常消息在控制台的显示内容与格式 * `优化` 示例代码支持将文件夹重置为初始内容 * `优化` APK 文件签名信息提升检测效率 * `优化` APK 文件类型信息及媒体文件类型信息优化对话框显示效率及信息展示逻辑 * `优化` Gradle 构建脚本提升版本自适应能力 _[`discussion #369`](http://discussions.autojs6.com/369)_ * `优化` 部分依赖或本地库版本调整 _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v663)_ ##### 更多版本历史可参阅 * [CHANGELOG.md](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG-zh-Hans.md) ****** ### 项目编译构建 ****** 如需对 AutoJs6 开源项目进行调试或开发, 可使用 [Android Studio](https://pro.autojs.org/) ([Google](https://www.google.com/) 公司产品) 或 [IntelliJ IDEA](https://www.jetbrains.com/idea/) ([Jetbrains](https://www.jetbrains.com/) 公司产品). 本小节以 Android Studio 为例介绍 AutoJs6 开源项目的编译构建方法, IntelliJ IDEA 与之类似. #### Android Studio 准备 下载 `Android Studio Narwhal 4 Feature Drop | 2025.1.4` 版本 (按需选择其一): - [android-studio-2025.1.4.8-windows.exe](https://redirector.gvt1.com/edgedl/android/studio/install/2025.1.4.8/android-studio-2025.1.4.8-windows.exe) (1.30 GiB) - [android-studio-2025.1.4.8-windows.zip](https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2025.1.4.8/android-studio-2025.1.4.8-windows.zip) (1.31 GiB) - [android-studio-2025.1.4.8-linux.tar.gz](https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2025.1.4.8/android-studio-2025.1.4.8-linux.tar.gz) (1.34 GiB) > 注: 上述版本发布时间为 2025 年 10 月 9 日. 如需下载其他版本, 或上述链接已失效, 可访问 [Android Studio 发行版本归档](https://developer.android.com/studio/archive?hl=en) 页面. 安装或解压上述文件, 运行 Android Studio 软件 (如 `"D:\android-studio\bin\studio64.exe"`). #### Android SDK 准备 > 注: 如果计算机系统已安装 Android SDK (安卓软件开发工具包), 则可跳过此小节内容. 打开 `Android SDK (安卓软件开发工具包)` 设置页面 (任选一种方式): ```text Help (帮助) | Find action (查找操作) # 输入 "Android SDK" [ 或 ] File (文件) | Settings (设置) # 搜索 "Android SDK" [ 或 ] File (文件) | Settings (设置) | Language & Frameworks (语言和框架) | Android SDK (安卓软件开发工具包) [ 或 ] File (文件) | Settings (设置) | 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, 则可跳过此小节内容. 打开 `SDK Tools (SDK 工具)` 设置页面 (任选一种方式): ```text Help (帮助) | Find action (查找操作) # 输入 "SDK Tools" [ 或 ] File (文件) | Settings (设置) # 搜索 "SDK Tools" [ 或 ] File (文件) | Settings (设置) | Language & Frameworks (语言和框架) | Android SDK (安卓软件开发工具包) | SDK Tools (SDK 工具) (位于右侧窗口) [ 或 ] File (文件) | Settings (设置) | Appearance & Behavior (外观与行为) | System Settings (系统设置) | Android SDK (安卓软件开发工具包) | SDK Tools (SDK 工具) (位于右侧窗口) ``` 勾选 `Show Package Details (显示包详情)`, 依次点击 NDK 及 CMake, 确保相应版本的工具已勾选, SDK 工具的版本信息位于 AutoJs6 项目根目录的 `version.properties` 文件中. #### JDK 准备 AutoJs6 项目依赖的 `JDK (Java 开发工具包)` 发行版本不低于 `17`, 但建议不低于 `21`. 截至 2025 年 10 月 26 日, AutoJs6 可支持 JDK 最高版本为 `24`. > 注: 如果计算机系统已安装 JDK 且版本满足上述要求, 则可跳过此小节内容. JDK 可使用 IDE 直接下载, 或访问 [Oracle 网站](https://www.oracle.com/java/technologies/downloads/) 下载. 打开 `Gradle JDK` 设置页面 (任选一种方式): ```text Help (帮助) | Find action (查找操作) # 输入 "Gradle JDK" [ 或 ] File (文件) | Settings (设置) # 搜索 "Gradle" [ 或 ] File (文件) | Settings (设置) | 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 (分布式版本控制系统)](https://git-scm.com/download). #### 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)](http://issues.autojs6.com) 页面. > 注: 关于如何构建并运行应用的更多内容, 可参阅 [Android Docs](https://developer.android.com/studio/run?hl=zh-cn) #### 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](https://developer.android.com/build/build-for-release?hl=zh-cn) #### 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 声明文件](http://dts-project.autojs6.com) 项目. 任务运行后生成一个 AutoJs6 项目最新的 JAR 文件, 利用 [Android d.ts Generator](https://github.com/NativeScript/android-dts-generator) (by [NativeScript](https://github.com/NativeScript)) 工具可生成 AutoJs6 主应用的声明文件 (d.ts 格式). - AutoJs6 [app:digest] 附加摘要信息到 release 版本编译产生的 APK 文件, 主要服务于 AutoJs6 发布最新版本到 GitHub 前确定最终的文件名. 以下为附加摘要信息前后的文件名对比: ```text 前: autojs6-v6.6.2-arm64-v8a.apk 后: autojs6-v6.6.2-arm64-v8a-0f2a9d74.apk ``` > 参阅: [Android Docs](https://developer.android.com/studio/run?hl=zh-cn) ****** ### 脚本开发辅助 ****** 开发 AutoJs6 可运行的脚本, 需使用合适的开发工具: - [VSCode](https://code.visualstudio.com/download) / [WebStorm](https://www.jetbrains.com/webstorm/download/) / [HBuilderX](https://www.dcloud.io/hbuilderx.html) ... 如需在 PC 上进行脚本编写与调试, VSCode 插件可以实现 PC 与手机的互联: - [AutoJs6-VSCode-Extension](http://vscext-project.autojs6.com) - AutoJs6 调试器 (VSCode 平台插件) 使用开发工具编写代码时, 代码智能补全功能可以更好地辅助开发者完成代码编写: - [AutoJs6-TypeScript-Declarations](http://dts-project.autojs6.com) - AutoJs6 声明文件 (代码智能补全) 编写代码时, AutoJs6 相关 API 及使用方式, 可随时查阅应用文档: - [AutoJs6-Documentation](http://docs-project.autojs6.com) - AutoJs6 应用文档 现有的脚本开发项目可作为参考, 激发个人脚本项目的创作灵感: - [Ant-Forest](https://github.com/TonyJiangWJ/Ant-Forest) - 蚂蚁森林能量自动收取脚本 by [TonyJiangWJ](https://github.com/TonyJiangWJ) - [Ant-Forest](https://github.com/SuperMonster003/Ant-Forest) - 蚂蚁森林能量自动收取脚本 by [SuperMonster003](https://github.com/SuperMonster003) - [autojs](https://github.com/e1399579/autojs) - Auto.js 实用脚本 by [e1399579](https://github.com/e1399579) - [autojsDemo](https://github.com/snailuncle/autojsDemo) - Auto.js 演示示例 by [snailuncle](https://github.com/snailuncle) - [autojs 相关仓库](https://github.com/topics/autojs) - GitHub 与 autojs 话题相关的全部仓库 ****** ### 贡献参与 ****** 感谢每一位参与 AutoJs6 项目开发的贡献人员. | 贡献人员 | 提交数 | 最近提交 | |:------:|:------:|:------:| | [wirsnow](https://github.com/wirsnow) | [1](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Awirsnow) | `2025/05/19` | | [TonyJiangWJ](https://github.com/TonyJiangWJ) | [4](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3ATonyJiangWJ) | `2025/04/24` | | [luckyloogn](https://github.com/luckyloogn) | [3](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Aluckyloogn) | `2024/12/31` | | [kvii](https://github.com/kvii) | [1](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Akvii) | `2024/10/16` | | [chenguangming](https://github.com/chenguangming) `(Tom)` | [2](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Achenguangming) | `2024/05/14` | | [LZX284](https://github.com/LZX284) `(AI)` | [7](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3ALZX284) | `2023/11/15` | | [little‑alei](https://github.com/little-alei) `(抠脚本人)` | [12](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Alittle-alei) | `2023/07/12` | | [aiselp](https://github.com/aiselp) | [6](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Aaiselp) | `2023/06/14` | | [LYS86](https://github.com/LYS86) `(Lin)` | [2](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3ALYS86) | `2023/06/03` | 数据更新于 2025 年 9 月 6 日. 数据条目按 `最近提交` 降序排序. 新发起的暂未处理的 Pull Request, 将在合并处理后加入数据统计. 部分贡献人员在 [GitHub Contributors](https://github.com/SuperMonster003/AutoJs6/graphs/contributors) 未能正常出现, 其提交记录为空, 仍可通过 [Pull Request](https://github.com/SuperMonster003/AutoJs6/pulls) 查看贡献记录. [//]: # ( # --------------------------------------------------------------# # Before committing and pushing to the remote GitHub repository # # --------------------------------------------------------------# - IDE - The summary of the latest changelog for committing to Git [ DO NOT commit or push ] - $projectDir/version.properties - Remove the part like [ alpha / beta / ... ] of VERSION_NAME - $projectDir/.changelog/lang_zh-Hans.json - Update version name and released date - Translate into other languages - Update TypeScript declarations according to section `dependency` if needed - $projectDir/.readme/template_readme.md - Update Rhino badge - Update Android Studio and IntelliJ IDEA badges [ link: aj6mdgen ] - Update contribution section: [ h3_contribution ] [ link: aj6scrapers ] - $projectDir/.readme/common.json - Update android studio download links and version names [ link: aj6scrapers ] - Update contribution section: var_date_contribution_table_data_updated [ link: aj6scrapers ] - $projectDir/.python/generate_markdown.py - Re-generate markdown by running the python script [ link: aj6mdgen ] - Others - Re-generate documentation by running the python script [ link: aj6docgen ] - Check the two-way versions for AutoJs6 and VSCode ext, then publish the ext to Microsoft if needed - Run Gradle task "app:assembleInrtRelease" [ shortcut: C+A+0#- ] - Build APK to determine the final VERSION_BUILD field [ shortcut: C+A+0#A ] - Run Gradle task "app:appendDigestToReleasedFiles" [ shortcut: C+A+0#= ] - Check VERSION_BUILD in version.properties with released apks - Commit and push to GitHub - Publish the latest release with signed APKs )