708 lines
66 KiB
Markdown
708 lines
66 KiB
Markdown
<!--suppress HtmlDeprecatedAttribute, HttpUrlsUsage -->
|
||
|
||
<div align="center">
|
||
<p>
|
||
<img src="https://s1.imagehub.cc/images/2023/03/07/af8ed087c9d354b9ab6142aae7bbafb6.png" alt="autojs6-banner_800×224" border="0" width="704" />
|
||
</p>
|
||
|
||
<p>JavaScript automation tool supporting accessibility service on the Android platform</p>
|
||
|
||
<p>
|
||
<a href="http://download.autojs6.com"><img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/SuperMonster003/AutoJs6?label=Release"/></a>
|
||
<a href="http://issues.autojs6.com"><img alt="GitHub closed issues" src="https://img.shields.io/github/issues/SuperMonster003/AutoJs6?color=A24232&label=Issues"/></a>
|
||
<a href="http://commit.autojs6.com/99a1d8490fac5b6d55f6f183db59ad833a2064ed"><img alt="Created" src="https://img.shields.io/date/1636632233?color=2e7d32&label=Created"/></a>
|
||
<br>
|
||
<a href="https://developer.android.com/studio/archive"><img alt="Android Studio" src="https://img.shields.io/badge/Android%20Studio-2023.3+-B64FC8"/></a>
|
||
<a href="https://www.jetbrains.com/idea/download/other.html"><img alt="IntelliJ IDEA" src="https://img.shields.io/badge/IntelliJ%20IDEA-2023.3+-EE4677"/></a>
|
||
<br>
|
||
<a href="https://github.com/mozilla/rhino"><img alt="Rhino" src="https://img.shields.io/badge/Rhino-2.0.0--SNAPSHOT-795548"/></a>
|
||
<a href="https://www.jetbrains.com/?from=AutoJs6"><img alt="JetBrains supporter" src="https://img.shields.io/badge/Supporter-JetBrains-AA2786"/></a>
|
||
<a href="http://project.autojs6.com/blob/master/LICENSE"><img alt="GitHub License" src="https://img.shields.io/github/license/SuperMonster003/AutoJs6?color=534BAE&label=License"/></a>
|
||
</p>
|
||
</div>
|
||
|
||
******
|
||
|
||
### Languages
|
||
|
||
******
|
||
|
||
The current README.md supports the following languages:
|
||
|
||
- [简体中文 [zh-Hans]](http://project.autojs6.com/blob/master/.readme/README-zh-Hans.md)
|
||
- [繁體中文 (香港) [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] # current
|
||
- [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)
|
||
|
||
******
|
||
|
||
### Introduction
|
||
|
||
******
|
||
|
||
[Auto.js](https://github.com/hyb1996/Auto.js) is a JavaScript automation tool software for the Android platform that supports [Accessibility Service](https://developer.android.com/guide/topics/ui/accessibility/service?hl=en).
|
||
|
||
Auto.js was first released by [hyb1996](https://github.com/hyb1996) on `2017/01/27` and ceased maintenance on `2020/03/13`, with the final version name being `4.1.1 Alpha2` and build number `461`.
|
||
|
||
AutoJs6 is based on the final project of Auto.js, undergoing secondary development on `2021/12/01` and continues to be open-source and free.
|
||
|
||
The table below lists some Auto.js-related projects (sorted by development date):
|
||
|
||
| <span style="word-break:keep-all;white-space:nowrap">Project</span> | <span style="word-break:keep-all;white-space:nowrap">App Name</span> | <span style="word-break:keep-all;white-space:nowrap">Main Developers</span> | <span style="word-break:keep-all;white-space:nowrap">Development Start Date</span> | <span style="word-break:keep-all;white-space:nowrap">Development End Date</span> | <span style="word-break:keep-all;white-space:nowrap">Active Maintenance (Year)</span> |
|
||
|:------:|:------:|:------:|:------:|:------:|:------:|
|
||
| <span style="word-break:keep-all;white-space:nowrap">[Auto.js](https://github.com/hyb1996/Auto.js)</span> | <span style="word-break:keep-all;white-space:nowrap">[Auto.js](https://github.com/TonyJiangWJ/Auto.js/commit/268ec8895bbfa28fc7715154eb15b1c1eaaefd14#diff-5e01f7d37a66e4ca03deefc205d8e7008661cdd0284a05aaba1858e6b7bf9103R2)</span> | <span style="word-break:keep-all;white-space:nowrap">[hyb1996](https://github.com/hyb1996)</span> | <span style="word-break:keep-all;white-space:nowrap">`2017/01/27`</span> | <span style="word-break:keep-all;white-space:nowrap">`2020/03/13`</span> | <span style="word-break:keep-all;white-space:nowrap">3.13</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">Auto.js Pro 7</span> | <span style="word-break:keep-all;white-space:nowrap">Auto.js</span> | <span style="word-break:keep-all;white-space:nowrap">[hyb1996](https://github.com/hyb1996)</span> | <span style="word-break:keep-all;white-space:nowrap">`2019/03/13`</span> | <span style="word-break:keep-all;white-space:nowrap">`2019/07/08`</span> | <span style="word-break:keep-all;white-space:nowrap">0.32</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">Auto.js Pro 8</span> | <span style="word-break:keep-all;white-space:nowrap">AutoJsPro</span> | <span style="word-break:keep-all;white-space:nowrap">[hyb1996](https://github.com/hyb1996)</span> | <span style="word-break:keep-all;white-space:nowrap">`2019/10/13`</span> | <span style="word-break:keep-all;white-space:nowrap">`2021/07/24`</span> | <span style="word-break:keep-all;white-space:nowrap">1.78</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[Auto.js](https://github.com/TonyJiangWJ/Auto.js)</span> | <span style="word-break:keep-all;white-space:nowrap">[Auto.js M](https://github.com/TonyJiangWJ/Auto.js/commit/268ec8895bbfa28fc7715154eb15b1c1eaaefd14#diff-5e01f7d37a66e4ca03deefc205d8e7008661cdd0284a05aaba1858e6b7bf9103R2)</span> | <span style="word-break:keep-all;white-space:nowrap">[TonyJiangWJ](https://github.com/TonyJiangWJ)</span> | <span style="word-break:keep-all;white-space:nowrap">`2019/11/21`</span> | <span style="word-break:keep-all;white-space:nowrap">-</span> | <span style="word-break:keep-all;white-space:nowrap">< 6.32 ></span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[AutoX](https://github.com/kkevsekk1/AutoX)</span> | <span style="white-space:pre">[Autox.js](https://github.com/kkevsekk1/AutoX/commit/8143e4ed893d4af05d22aa791b83a962f9959873#diff-5e01f7d37a66e4ca03deefc205d8e7008661cdd0284a05aaba1858e6b7bf9103R2)</span> | <span style="word-break:keep-all;white-space:nowrap">[kkevsekk1](https://github.com/kkevsekk1)</span> | <span style="word-break:keep-all;white-space:nowrap">`2020/07/24`</span> | <span style="word-break:keep-all;white-space:nowrap">[ `2025/01/07` ]</span> | <span style="word-break:keep-all;white-space:nowrap">4.46</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[Auto.js Pro 9](https://pro.autojs.org/)</span> | <span style="word-break:keep-all;white-space:nowrap">AutoJsPro</span> | <span style="word-break:keep-all;white-space:nowrap">[hyb1996](https://github.com/hyb1996)</span> | <span style="word-break:keep-all;white-space:nowrap">`2021/03/28`</span> | <span style="word-break:keep-all;white-space:nowrap">`2023/02/09`</span> | <span style="word-break:keep-all;white-space:nowrap">1.87</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[AutoJs6](https://github.com/SuperMonster003/AutoJs6)</span> | <span style="word-break:keep-all;white-space:nowrap">[AutoJs6](https://github.com/SuperMonster003/AutoJs6/commit/a8ce1b9acb541e9736c33134be3194c3148a15a3#diff-833a46a97033e77558372a2dce103fd6fee29aaaa899f610022a7aece592ee7bR27)</span> | <span style="word-break:keep-all;white-space:nowrap">[SuperMonster003](https://github.com/SuperMonster003)</span> | <span style="word-break:keep-all;white-space:nowrap">`2021/12/01`</span> | <span style="word-break:keep-all;white-space:nowrap">-</span> | <span style="word-break:keep-all;white-space:nowrap">< 4.28 ></span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[autojs4](https://github.com/blackcd318/autojs4)</span> | <span style="word-break:keep-all;white-space:nowrap">Auto.js</span> | <span style="word-break:keep-all;white-space:nowrap">[blackcd318](https://github.com/blackcd318)</span> | <span style="word-break:keep-all;white-space:nowrap">`2021/12/15`</span> | <span style="word-break:keep-all;white-space:nowrap">`2023/07/31`</span> | <span style="word-break:keep-all;white-space:nowrap">1.62</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[AutoX](https://github.com/kkevsekk1/AutoX)</span> | <span style="white-space:pre">[Autox.js v6](https://github.com/kkevsekk1/AutoX/commit/8b6776cff8b0fca4be4a52719b7d7d07c0a058f3#diff-51a0b488f963eb0be6c6599bf5df497313877cf5bdff3950807373912ac1cdc9R130)</span> | <span style="word-break:keep-all;white-space:nowrap">[wilinz](https://github.com/wilinz) / [aiselp](https://github.com/aiselp)</span> | <span style="word-break:keep-all;white-space:nowrap">`2022/05/26`</span> | <span style="word-break:keep-all;white-space:nowrap">[ `2025/01/07` ]</span> | <span style="word-break:keep-all;white-space:nowrap">2.62</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[openautojs](https://github.com/openautojs/openautojs)</span> | <span style="white-space:pre">[OpenAuto.js](https://github.com/openautojs/openautojs/commit/a11feaad025154de9b453ba70b49e94a6ca8b48a#diff-7d757295fcec3b37c258337e048644c258233d79259152e77baa6d36bb0ec418R2)</span> | <span style="word-break:keep-all;white-space:nowrap">[openautojs](https://github.com/openautojs)</span> | <span style="word-break:keep-all;white-space:nowrap">`2023/02/17`</span> | <span style="word-break:keep-all;white-space:nowrap">`2023/04/16`</span> | <span style="word-break:keep-all;white-space:nowrap">0.16</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[AutoJs4](https://github.com/SuperMonster003/AutoJs4)</span> | <span style="word-break:keep-all;white-space:nowrap">[AutoJs4](https://github.com/SuperMonster003/AutoJs4/commit/8de11699b608be1c1f49f0f10e2e2826f8c77978)</span> | <span style="word-break:keep-all;white-space:nowrap">[SuperMonster003](https://github.com/SuperMonster003)</span> | <span style="word-break:keep-all;white-space:nowrap">`2023/04/11`</span> | <span style="word-break:keep-all;white-space:nowrap">-</span> | <span style="word-break:keep-all;white-space:nowrap">< 2.93 ></span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[AutoX](https://github.com/aiselp/AutoX)</span> | <span style="white-space:pre">[Autox.js v7](https://github.com/aiselp/AutoX/commit/484491fd5fe12b8203d0b09c181eb0f471c0ea9f#diff-8cff73265af19c059547b76aca8882cbaa3209291406f52df1dafbbc78e80c46R120)</span> | <span style="word-break:keep-all;white-space:nowrap">[aiselp](https://github.com/aiselp)</span> | <span style="word-break:keep-all;white-space:nowrap">`2024/04/21`</span> | <span style="word-break:keep-all;white-space:nowrap">-</span> | <span style="word-break:keep-all;white-space:nowrap">< 1.90 ></span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[Autoxjs_v6_ozobi](https://github.com/ozobiozobi/Autoxjs_v6_ozobi)</span> | <span style="white-space:pre">[Autox.js v6_ozobi](https://github.com/ozobiozobi/Autoxjs_v6_ozobi/blob/a651d02246e09cfbbfa87e6eaccf900fab/app/build.gradle.kts#L143)</span> | <span style="word-break:keep-all;white-space:nowrap">[ozobiozobi](https://github.com/ozobiozobi)</span> | <span style="word-break:keep-all;white-space:nowrap">`2024/10/01`</span> | <span style="word-break:keep-all;white-space:nowrap">-</span> | <span style="word-break:keep-all;white-space:nowrap">< 1.45 ></span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[AutoX](https://github.com/autox-community/AutoX)</span> | <span style="white-space:pre">[Autox.js v6](https://github.com/autox-community/AutoX/commit/8b6776cff8b0fca4be4a52719b7d7d07c0a058f3#diff-51a0b488f963eb0be6c6599bf5df497313877cf5bdff3950807373912ac1cdc9R130)</span> | <span style="word-break:keep-all;white-space:nowrap">[autox-community](https://github.com/autox-community)</span> | <span style="word-break:keep-all;white-space:nowrap">`2025/03/30`</span> | <span style="word-break:keep-all;white-space:nowrap">-</span> | <span style="word-break:keep-all;white-space:nowrap">< 0.96 ></span> |
|
||
|
||
The dates in the table are estimated and may differ from actual dates.
|
||
|
||
Auto.js Pro 7/8/9 in the table are paid versions, and the rest are free open-source versions.
|
||
|
||
In the table, data in the `Development End Date` column that contains square brackets (`[]`) indicates that the open-source project is temporarily inaccessible.
|
||
|
||
In the table, data in the `Active Maintenance` column that contains angle brackets (`<>`) is calculated up to Mar 14, 2026.
|
||
|
||
******
|
||
|
||
### Functions
|
||
|
||
******
|
||
|
||
* Can be used as a JavaScript IDE (code completion/variable renaming/code formatting)
|
||
* Supports automation based on [Accessibility Service](https://developer.android.com/reference/android/accessibilityservice/AccessibilityService)
|
||
* Supports floating button quick actions (script recording and running/view package name and activity/layout analysis)
|
||
* Supports Selector API and provides control traversal/information retrieval/control operations (similar to [UiAutomator](https://developer.android.com/training/testing/ui-automator))
|
||
* Supports layout interface analysis (similar to Android Studio's LayoutInspector)
|
||
* Supports recording functionality and playback of recorded actions
|
||
* Supports screen capture/save screenshots/color search in images/image matching
|
||
* Supports [E4X](https://en.wikipedia.org/wiki/E4X) (ECMAScript for XML) for interface writing
|
||
* Supports packaging script files or projects into APK files
|
||
* Supports expanded functionality using Root privileges (screen click/slide/record/Shell)
|
||
* Supports use as a Tasker plugin
|
||
* Supports connection with VSCode for desktop development (requires [AutoJs6-VSCode-Extension](http://vscext-project.autojs6.com) plugin)
|
||
|
||
******
|
||
|
||
### Environment
|
||
|
||
******
|
||
|
||
- Android Operating System
|
||
- [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)] and above
|
||
|
||
******
|
||
|
||
### Manual
|
||
|
||
******
|
||
|
||
* [Application Documentation](https://docs.autojs6.com)
|
||
* [User Manual (to be written)](https://docs.autojs6.com/#/manual)
|
||
* [Troubleshooting](https://docs.autojs6.com/#/qa)
|
||
* [Project Compilation and Build](#project-compilation-and-build)
|
||
* [Script Development Assistance](#script-development-assistance)
|
||
|
||
******
|
||
|
||
### Major Changes
|
||
|
||
******
|
||
|
||
Compared to the final open-source version `4.1.1 Alpha2` of Auto.js, the main upgrades or changes in AutoJs6 are:
|
||
|
||
* Supports obtaining ADB privileges through [Shizuku](https://shizuku.rikka.app/introduction/) and using system API
|
||
* Supports building [WebSocket](https://docs.autojs6.com/#/webSocketType) instances to perform network requests based on the [WebSocket protocol](https://en.wikipedia.org/wiki/WebSocket)
|
||
* New modules [ [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) / ... ]
|
||
* Multilingual support [ Spanish / French / Russian / Arabic / Japanese / Korean / English / Simplified Chinese / Traditional Chinese / ... ]
|
||
* Theme color adaptation [ Grouping / Location / Search / History / Automatic Adaptation of Brightness and Contrast / ... ]
|
||
* Night mode adaptation [ Settings page / Documentation page / Layout analysis page / Floating window / ... ]
|
||
* [VSCode plugin](http://vscext-project.autojs6.com) supports both client (LAN) and server (LAN/ADB) connection methods
|
||
* [Rhino](https://github.com/mozilla/rhino/) engine upgraded from [v1.7.7.2](https://github.com/mozilla/rhino/releases/tag/Rhino1_7_7_2_Release) to [v2.0.0-SNAPSHOT](http://rhino.autojs6.com/blob/master/gradle.properties#L3) (Updated on Dec 25, 2025)
|
||
* Unicode [code point](https://developer.mozilla.org/en-US/docs/Glossary/Code_point) escape support for [supplementary plane](https://en.wikipedia.org/wiki/Plane_(Unicode)#Supplementary_Multilingual_Plane) characters
|
||
```js
|
||
'\u{1D160}'; /* stands for "𝅘𝅥𝅮", traditional method: '\uD834\uDD60'. */
|
||
```
|
||
* Supports [Object.values()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values)
|
||
```js
|
||
Object.values({name: 'Max', age: 4}); // ['max', 4]
|
||
```
|
||
* Supports [Array.prototype.includes()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes)
|
||
```js
|
||
[10, 20, NaN].includes(20); // true
|
||
```
|
||
* Supports [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt)
|
||
```ts
|
||
typeof 567n === 'bigint'; // true
|
||
```
|
||
* Supports [template strings](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)
|
||
```js
|
||
`Lucky number: ${(Math.random() * 100).toFixed(0)}`
|
||
```
|
||
* View more new features of the Rhino engine [here](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/RHINO.md)
|
||
* View Rhino engine [compatibility list](https://mozilla.github.io/rhino/compat/engines.html)
|
||
|
||
******
|
||
|
||
### Release History
|
||
|
||
******
|
||
|
||
# v6.7.0
|
||
|
||
###### 2026/03/14
|
||
|
||
* `Feature` Plugin Center feature, supporting plugin install/uninstall/update and related operations (entry: home drawer button/home tab)
|
||
* `Feature` Version History feature, supporting viewing/restoring history versions of editable files (entry: home drawer button/file manager menu/code editor menu)
|
||
* `Feature` Trash feature, supporting viewing/restoring deleted files/folders (entry: home drawer button)
|
||
* `Feature` Paddle OCR (PP-OCRv5) plugin, for optical character recognition
|
||
* `Feature` cvt module, for data unit conversion (see Project Docs > [Unit Conversion](https://docs.autojs6.com/#/cvt))
|
||
* `Feature` fmt module, for data formatting (see Project Docs > [Formatting](https://docs.autojs6.com/#/fmt))
|
||
* `Feature` zip module, for file compression and extraction operations (Ref to [Auto.js Pro](https://g.pro.autojs.org/)) (see Project Docs > [Zip](https://docs.autojs6.com/#/zip))
|
||
* `Feature` mediainfo module, for viewing detailed information of media files (see Project Docs > [Media Info](https://docs.autojs6.com/#/mediainfo))
|
||
* `Feature` cvt.bytes method, for byte data unit conversion (see Project Docs > [Unit Conversion](https://docs.autojs6.com/#/cvt))
|
||
* `Feature` fmt.bytes method, for byte data formatting (see Project Docs > [Formatting](https://docs.autojs6.com/#/fmt))
|
||
* `Feature` s13n.bytes method, for standardizing byte data (see Project Docs > [Standardization](https://docs.autojs6.com/#/s13n))
|
||
* `Feature` app.isDualInstalled method, for detecting whether a dual-installed app is installed (requires Shizuku or Root permission) _[`issue #450`](http://issues.autojs6.com/450)_
|
||
* `Feature` device.getSharedDeviceId method, for obtaining a unified shared device ID across apps _[`issue #455`](http://issues.autojs6.com/455)_
|
||
* `Feature` device.setPointerLocation and other Toggleable series methods, for setting or getting the pointer location system setting _[`issue #381`](http://issues.autojs6.com/381)_
|
||
* `Feature` dialogs.build method now supports textAllCaps/(positive/negative/neutral)TextAllCaps option parameters, for controlling whether button texts are all uppercase
|
||
* `Feature` images.loadAsync method, for asynchronously fetching network image resources _[`issue #327`](http://issues.autojs6.com/327)_
|
||
* `Feature` ui.getNavigationBarHeight method/navigationBarHeight property (getter), for getting navigation bar height _[`issue #456`](http://issues.autojs6.com/456)_
|
||
* `Feature` ui.getVisible(Status/Navigation)BarHeight method/visible(Status/Navigation)BarHeight property (getter), for quickly getting visible height of the status bar or navigation bar _[`issue #456`](http://issues.autojs6.com/456)_
|
||
* `Feature` http.put/del(ete)/head methods, for sending network requests with different HTTP methods
|
||
* `Feature` http.getAsync/postAsync/requestAsync and related methods, for asynchronously sending network requests _[`issue #423`](http://issues.autojs6.com/423)_
|
||
* `Feature` body objects returned by http module request-related methods now include stream/saveToFile/close and related methods _[`issue #452`](http://issues.autojs6.com/452)_
|
||
* `Feature` http module request-related methods now support cache control option parameters (cacheBody/bodyCacheThresholdBytes)
|
||
* `Feature` http module request-related methods now support insecure option parameters (isInsecure/insecure), for ignoring certificate-related exceptions _[`issue #417`](http://issues.autojs6.com/417)_
|
||
* `Feature` http module request-related methods now support the options.client option, for configuring OkHttpClient.Builder (such as followRedirects) _[`issue #454`](http://issues.autojs6.com/454)_
|
||
* `Feature` auto.state property (getter) and shizuku.state property (getter), for obtaining accessibility service status and Shizuku service status
|
||
* `Feature` runtime.(set/is)JavaPrimitiveWrap methods, for setting or getting Java primitive wrapping strategy _[`issue #435`](http://issues.autojs6.com/435)_
|
||
* `Feature` autojs.(restart/exit) methods, for restarting or exiting the AutoJs6 app, and supporting automatic script execution on app restart with the specified arguments _[`issue #460`](http://issues.autojs6.com/460)_
|
||
* `Feature` UiObject#isShifted method, for detecting control position changes _[`issue #469`](http://issues.autojs6.com/469)_
|
||
* `Feature` UiObject#snapshot method, for capturing the current state of a control _[`issue #469`](http://issues.autojs6.com/469)_
|
||
* `Feature` engines.myEngine().getStartTime() method, for getting the script engine startup timestamp _[`issue #449`](http://issues.autojs6.com/449)_
|
||
* `Feature` crash global method, for testing the crash report page
|
||
* `Feature` structuredClone global method, for deep-cloning JavaScript objects (see [MDN](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/structuredClone))
|
||
* `Feature` Equivalent series selectors (UiSelector#id/text/...) and contains series selectors (UiSelector#xxxContains) now support regular expression parameters
|
||
* `Feature` Regular expression parameters of selectors now support flags (i, m, s, u)
|
||
* `Feature` Regular expressions now support lookbehind assertion syntax _[`issue #464`](http://issues.autojs6.com/464)_
|
||
* `Feature` File manager now includes "Move to" and "Copy to" menu items, supporting operation abort and progress status display
|
||
* `Feature` Code editor now includes the "Multi-function Keyboard" - "Symbol Settings" menu item, supporting symbol editing and symbol creation/import/export by profile level
|
||
* `Feature` Home drawer now includes the "Pointer Location" tool
|
||
* `Feature` Home drawer now includes the "All Files Access" switch
|
||
* `Feature` Home drawer now includes the "Show UI from Background" switch (for [Xiaomi/Vivo] devices)
|
||
* `Feature` Settings page now includes the "Java Primitive Wrap" option _[`issue #435`](http://issues.autojs6.com/435)_
|
||
* `Feature` Settings page now includes the "Scheduled Task Engine" option, supporting AlarmManager/WorkManager/JobScheduler _[`issue #457`](http://issues.autojs6.com/457)_ _[`issue #434`](http://issues.autojs6.com/434)_ _[`issue #449`](http://issues.autojs6.com/449)_ _[`issue #388`](http://issues.autojs6.com/388)_ _[`issue #378`](http://issues.autojs6.com/378)_ _[`issue #163`](http://issues.autojs6.com/163)_ _[`issue #53`](http://issues.autojs6.com/53)_ _[`issue #21`](http://issues.autojs6.com/21)_
|
||
* `Feature` Settings page now includes the "App Launcher Icon" option, supporting adaptive icons/transparent background icons _[`issue #405`](http://issues.autojs6.com/405)_
|
||
* `Feature` Settings page now includes the "Restart Strategy" option, for configuring whether the home drawer restart button uses the fast restart strategy
|
||
* `Feature` Settings page now includes the "Screen Capture Permission Request Delay" option, for preventing the permission request window from blocking the screen
|
||
* `Feature` Launcher shortcuts in the Settings page now include the "Plugins" option, for jumping to the Plugin Center page via a shortcut
|
||
* `Feature` Packaged apps now support auto-start on boot, with a switch added on the configuration page
|
||
* `Feature` Packaged apps now support app shortcuts (log page/settings page)
|
||
* `Feature` Packaged app configuration page now includes undo/redo/save buttons
|
||
* `Feature` Packaged app configuration page now includes a profile mechanism, supporting profile creation/modification/deletion/import/export _[`issue #483`](http://issues.autojs6.com/483)_
|
||
* `Feature` Scrapers tool (run-scrapers.mjs), for automatically updating structured data in Gradle build scripts/common README data/README template data and more
|
||
* `Feature` Gradle Wrapper switcher tool (gradle-wrapper-switcher), for switching local Gradle major versions (such as Gradle 8.x and Gradle 9.x)
|
||
* `Fix` Incorrect parameter count and type restrictions for the notice method _[`issue #462`](http://issues.autojs6.com/462)_
|
||
* `Fix` Issue where the ui.R property (getter) could not be used properly
|
||
* `Fix` Issue where exceptions raised in ui.post callback parameters could fail silently
|
||
* `Fix` Issue where global methods such as isJavaClass/isJavaPackage were invalid
|
||
* `Fix` Issue where the timeout parameter of timers.keepAlive did not work
|
||
* `Fix` Issue where floaty.window/rawWindow methods could not accept string parameters _[`issue #467`](http://issues.autojs6.com/467)_
|
||
* `Fix` Issue where floaty.rawWindow could display some controls incorrectly due to an incorrect context being passed
|
||
* `Fix` Issue where util.isString method was invalid
|
||
* `Fix` Issue where util.class[Name]/getClass[Name] could return incorrect results
|
||
* `Fix` Issue where util.java.array could not properly use type parameters such as Boolean
|
||
* `Fix` Issue where objects returned by threads.disposable() could be unexpectedly boxed when accessing stored data _[`issue #435`](http://issues.autojs6.com/435)_
|
||
* `Fix` Issue where style options of the floating log window could not reset properly when console.build was called multiple times
|
||
* `Fix` Issue where (title/content)BackgroundColor options of console.build could override transparency or tint options _[`issue #458`](http://issues.autojs6.com/458)_
|
||
* `Fix` Issue where console/toast and related methods could lose trailing zeros when displaying Java Double values
|
||
* `Fix` Issue where console/toast and related methods could not display BigInt values
|
||
* `Fix` Issue where the toast method could cause memory leaks due to holding a strong reference to the Toast instance
|
||
* `Fix` Issue where some global objects could lose JavaScript prototype properties and methods
|
||
* `Fix` Issue where the this object could point incorrectly when JavaScript expressions were used as attribute values in XML syntax
|
||
* `Fix` Issue where the linkify option parameter of dialogs.build did not work
|
||
* `Fix` Issue where dialogs.build could break original data in object parameters
|
||
* `Fix` Incorrect internal frame rate calculation in the setMaxFps method of the canvas element control
|
||
* `Fix` Incorrect width calculation when images.concat performed vertical concatenation
|
||
* `Fix` Issue where canceling authorization in images.requestScreenCapture could crash the app
|
||
* `Fix` Issue where screenshots obtained by images.captureScreen could have incorrect orientation or black border padding _[`issue #337`](http://issues.autojs6.com/337)_
|
||
* `Fix` Issue where 1 could be incorrectly parsed as a percentage when some images-related methods used region parameters
|
||
* `Fix` Issue where the oneShot flag could fail when exceptions occurred in some images-related methods _[`issue #372`](http://issues.autojs6.com/372)_
|
||
* `Fix` Issue where some images-related methods could cause memory leaks _[`issue #372`](http://issues.autojs6.com/372)_
|
||
* `Fix` Issue where images.save and ImageWrapper#saveTo could not properly write files when the input path did not exist
|
||
* `Fix` Issue where ImageWrapper#recycle failed to recycle image resources
|
||
* `Fix` Issue where some overloaded ocr methods might not work properly
|
||
* `Fix` Issue where results obtained by ocr.detect might not match ocr.mode _[`issue #468`](http://issues.autojs6.com/468)_
|
||
* `Fix` Issue where accessibility events registered by auto.registerEvent could be mistakenly cleared by other scripts _[`issue #466`](http://issues.autojs6.com/466)_ _[`issue #343`](http://issues.autojs6.com/343#issuecomment-3263953918)_
|
||
* `Fix` Issue where UiObject#child could throw ArrayIndexOutOfBoundsException on Android 10 _[`issue #416`](http://issues.autojs6.com/416)_
|
||
* `Fix` Issue where built-in module method calls could run into inconsistent Rhino context problems
|
||
* `Fix` Issue where creating a large number of floating windows in scripts could leave residual windows after script exit
|
||
* `Fix` Issue where project.json configuration parameters might not be parsed properly when running a project
|
||
* `Fix` Issue where the excludedDirs parameter in project.json could cause configuration parsing failure during project packaging _[`issue #428`](http://issues.autojs6.com/428)_
|
||
* `Fix` Issue where packaging might not work properly on Android 7.x
|
||
* `Fix` Issue where original key names could be modified when saving script project configuration files
|
||
* `Fix` Issue where very large build version codes or build times in script project configuration files could crash the app
|
||
* `Fix` Issue where frequent fetching or rebuilding of ImageReader could crash the app due to no available frame in the buffer
|
||
* `Fix` Issue where the input event observer InputEventObserver could cause noticeable app startup lag
|
||
* `Fix` Issue where Shizuku user service processes did not terminate properly and accumulated _[`issue #474`](http://issues.autojs6.com/474)_
|
||
* `Fix` Issue where packaged apps could not properly use Paddle OCR and Rapid OCR features
|
||
* `Fix` Issue where key values in packaged app configuration file project.json could be modified unexpectedly
|
||
* `Fix` Issue where checkbox icons could flicker when scrolling the "Required Permissions" list on the packaged app configuration page
|
||
* `Fix` Issue where statistics on the Release History page could be displayed incompletely on some systems due to font differences
|
||
* `Fix` Issue where MLKit Google OCR could not initialize properly on some devices (tentative fix) _[`issue #8`](http://issues.autojs6.com/8#issuecomment-3117061768)_
|
||
* `Fix` Issue where file manager function buttons could not properly receive click events on some devices (tentative fix) _[`issue #465`](http://issues.autojs6.com/465)_
|
||
* `Fix` Issue where blank lines in the code editor displayed box glyphs on some devices (tentative fix)
|
||
* `Fix` Issue where the soft keyboard could block text content in the code editor
|
||
* `Fix` Issue where code content could still be edited in read-only mode in the code editor
|
||
* `Fix` Issue where tapping the title area or some menu items in read-only mode in the code editor could crash the app
|
||
* `Fix` Issue where loading large files in the code editor could crash the app (tentative fix)
|
||
* `Fix` Abnormal initialization of function button states when the code editor automatically opened a new file
|
||
* `Fix` Issue where putting the app in background while editing a file in the code editor could crash the app
|
||
* `Fix` Issue where tapping the fx button in the code editor on Android 15+ could not show the quick panel for module functions (tentative fix)
|
||
* `Fix` Issue where ErrorDialogActivity could fail to start properly or disappear automatically in a short time _[`issue #479`](http://issues.autojs6.com/479)_ _[`issue #471`](http://issues.autojs6.com/471)_ _[`issue #414`](http://issues.autojs6.com/414)_ _[`issue #340`](http://issues.autojs6.com/340#issuecomment-2973485826)_
|
||
* `Fix` Incorrect accepted parameter types for the Canvas constructor _[`issue #402`](http://issues.autojs6.com/402)_
|
||
* `Fix` Issue where copying detailed information on the crash report page did not work
|
||
* `Fix` Issue where custom back navigation logic stopped working on Android 16+, causing abnormal back behavior
|
||
* `Fix` Issue where the app could crash when pressing the back button or switching tabs after displaying file manager search results
|
||
* `Fix` Issue where the UI did not refresh automatically after deleting project folders in the file manager
|
||
* `Fix` Issue where the app could crash when task panel list items changed frequently
|
||
* `Fix` Issue where navigation bar foreground color could behave abnormally with night mode when using "three-button" gesture navigation
|
||
* `Fix` Issue where the APK file type information dialog might fail to obtain app name and SDK information
|
||
* `Fix` Issue where in client mode, disconnecting and reconnecting shortly after connecting could lead to handshake timeout and make reconnection difficult
|
||
* `Fix` Issue where in client mode, actions such as screen rotation or language switching that recreated the Activity always caused AutoJs6 to reconnect
|
||
* `Fix` Issue where in server mode, actions such as screen rotation or language switching that recreated the Activity caused the VSCode console to stop outputting logs _[`issue #385`](http://issues.autojs6.com/385)_
|
||
* `Fix` Issue where connecting to the VSCode plugin in multiple ways at the same time could multiply the number of printed logs
|
||
* `Fix` Issue where code generation on the layout analysis page could fail for collection controls (tentative fix) _[`issue #328`](http://issues.autojs6.com/328)_
|
||
* `Fix` Issue where the "Use 'Volume Down' Key to Control Recording" switch on the Settings page did not work _[`issue #480`](http://issues.autojs6.com/480)_
|
||
* `Fix` Issue where coordinate values in code files generated by script recording might not match actual screen pixel values _[`issue #480`](http://issues.autojs6.com/480)_
|
||
* `Fix` Issue where the first recorded action (such as tap or swipe) in code files generated by script recording was always ignored
|
||
* `Fix` Issue where background file operations from the floating button "Run Script" dialog could crash the app
|
||
* `Fix` Issue where the floating button state could reset when re-entering the home page after the home Activity lifecycle ended
|
||
* `Fix` Issue where the Xiaomi device "Display over other apps" switch could jump to the wrong settings page
|
||
* `Fix` Issue where after aborting update download, network packets could still continue downloading in the background (tentative fix)
|
||
* `Fix` Issue where the Rebuild Project task could not complete properly when isCleanup[Paddle/Rapid]Ocr option was enabled in build tools
|
||
* `Improvement` Pluginized Paddle OCR (PP-OCRv3) related features _[`issue #334`](http://issues.autojs6.com/334)_ _[`issue #331`](http://issues.autojs6.com/331)_ _[`issue #325`](http://issues.autojs6.com/325)_
|
||
* `Improvement` Enhanced compatibility of runtime.loadJar method (by [LYS86](https://github.com/LYS86)) _[`pr #475`](http://pr.autojs6.com/475)_
|
||
* `Improvement` Improved compatibility of ui.getStatusBarHeight method/statusBarHeight property (getter) to a certain extent
|
||
* `Improvement` console.log and related methods now support displaying detailed information when printing global objects (images, app, ocr, etc.)
|
||
* `Improvement` dialogs.build method now supports native MaterialDialog.Builder option parameters
|
||
* `Improvement` dialogs.build method now supports loose string matching for animation/linkify option parameters
|
||
* `Improvement` Improved stability and consistency of screen orientation and width/height data obtained by device.rotation/rotation/width/height methods
|
||
* `Improvement` Improved execution efficiency and compatibility of app.launchDual/startDualActivity and related methods
|
||
* `Improvement` android.graphics.Paint#setColor now properly parses color parameters such as ColorInt/ColorHex/ColorName
|
||
* `Improvement` Exception messages for argument types of built-in module-related methods now include type summary information
|
||
* `Improvement` Built-in modules (dayjs/cheerio/dayjs/i18n) now use global lazy loading instead of script execution mode
|
||
* `Improvement` When printing huge data through console-related methods, some content is properly omitted according to upper limits to reduce print time
|
||
* `Improvement` Initial countdown value of the console floating window increased from 6 seconds to 9 seconds
|
||
* `Improvement` Internal implementation of the console floating window is now lock-free and queue-based, improving parameter setting efficiency and success rate
|
||
* `Improvement` Background color behavior-related APIs (alpha/tint/base color) of the console floating window now better align with Android design conventions _[`issue #458`](http://issues.autojs6.com/458)_
|
||
* `Improvement` Optimized menu collapse timing when tapping menu items after expanding the floating button in the file manager
|
||
* `Improvement` File manager/task panel now supports showing file/task count statistics
|
||
* `Improvement` When saving files fails in the code editor, they are automatically saved as drafts and support Save As to a new file
|
||
* `Improvement` Improved smoothness to a certain extent when loading large files in the code editor
|
||
* `Improvement` Code editor "Find/Replace" now supports state persistence and real-time display of search count information
|
||
* `Improvement` When prompting to save in the code editor, it now ensures saving succeeds before exiting the editor to reduce save failure rate
|
||
* `Improvement` State of the code editor save button now better matches user expectations
|
||
* `Improvement` Code editor now supports long-press functionality for keys such as "-", "=", "(", "[", "{", "<"
|
||
* `Improvement` Packaged app build process dialog now includes an "Abort" button
|
||
* `Improvement` Improved display behavior of the packaged app build process dialog and added elapsed time statistics
|
||
* `Improvement` When installing packaged apps with new configuration, related configuration of the old app will be overwritten
|
||
* `Improvement` Packaged app configuration page now checks required permissions by default (WAKE_LOCK/INTERNET/WRITE_EXTERNAL_STORAGE/...) _[`issue #397`](http://issues.autojs6.com/397)_
|
||
* `Improvement` Packaged app configuration page now supports reading/configuring more options (show logs on launch/show splash screen on launch/splash slug text/...)
|
||
* `Improvement` Packaged app settings page now includes a foreground service switch _[`issue #406`](http://issues.autojs6.com/406)_
|
||
* `Improvement` Key name conflict detection added when saving script project configuration files to prevent ambiguous keys
|
||
* `Improvement` Crash report page now supports pinch-to-zoom font resizing and adds common function buttons
|
||
* `Improvement` App launcher icons now support adaptive icon features _[`issue #405`](http://issues.autojs6.com/405)_
|
||
* `Improvement` Rhino engine now falls back to raw reflection types when generic signature parsing fails, improving reflective method availability on lower Android versions
|
||
* `Improvement` Divider lines added to switch-type items in the home drawer; tapping the title text area now shows detail dialogs and supports quick jump to system settings when needed
|
||
* `Improvement` When starting or restarting AutoJs6, tapping the title text area of "Client Mode" in the home drawer now supports aborting an ongoing connection attempt
|
||
* `Improvement` Client mode now supports connecting via IPv6 addresses and domain names
|
||
* `Improvement` Client mode now supports detection prompts for special-purpose IPv4 addresses (loopback/broadcast/multicast/reserved/...)
|
||
* `Improvement` Client mode now supports connection status display and management (correct address/abort connection)
|
||
* `Improvement` Server mode now supports showing the number of connected clients
|
||
* `Improvement` Reading notification permission now supports automatic reconnect mechanism ([requestRebind](https://developer.android.com/reference/android/service/notification/NotificationListenerService#requestRebind(android.content.ComponentName))) to improve stability of notification-listening related features
|
||
* `Improvement` Floating button now improves safety when launching Activities from background to avoid app crashes
|
||
* `Improvement` Floating button "More" dialog now uses asynchronous data loading for smoother display
|
||
* `Improvement` Floating button "Run Script" dialog now includes a "Home" menu item
|
||
* `Improvement` Floating button "Run Script" dialog now supports minimization and state restoration, and does its best to keep the window resident or restore it automatically
|
||
* `Improvement` Script recording and playback now support Shizuku permission (playback smoothness may be somewhat affected) _[`issue #320`](http://issues.autojs6.com/320)_
|
||
* `Improvement` Theme color settings page now uses a fast positioning method when locating theme colors to improve efficiency
|
||
* `Improvement` Replaced deprecated [LocalBroadcastManager](https://developer.android.com/jetpack/androidx/releases/localbroadcastmanager) with [LiveData](https://developer.android.com/topic/libraries/architecture/livedata) and [SharedFlow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow)
|
||
* `Improvement` Gradle build scripts now improve extraction efficiency for 7z files
|
||
* `Improvement` Gradle build scripts now support obtaining detailed Android Studio IDE version (such as "2025.1.4.7")
|
||
* `Improvement` Gradle build scripts now support automatically generating data required by VersionCodesList class to reduce script startup delay
|
||
* `Improvement` Use [Version Catalogs](https://developer.android.com/build/migrate-to-catalogs) to centrally manage Gradle dependency and plugin versions
|
||
* `Improvement` Modularized Gradle build scripts, moved shared build logic into build-logic, and abstracted it as convention plugins
|
||
* `Improvement` Use Gradle convention plugins to simplify loading logic of local AAR libraries
|
||
* `Improvement` Removed the "android.enableJetifier=true" Gradle option to adapt to Gradle 9
|
||
* `Improvement` Use [Toolchain](https://docs.gradle.org/current/userguide/toolchains.html) instead of sourceCompatibility/targetCompatibility to reduce build environment differences
|
||
* `Improvement` Some dependency or local library version adjustments _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v670)_
|
||
|
||
# v6.6.4
|
||
|
||
###### 2025/05/31
|
||
|
||
* `Hint` API change: ui.(status/navigation)BarAppearanceLight[By] -> ui.(status/navigation)BarIconLight[By]
|
||
* `Feature` util.dpToPx/spToPx/pxToDp/pxToSp methods for pixel unit conversion
|
||
* `Fix` Subtitles may be displayed incompletely when rotating the screen to landscape orientation
|
||
* `Fix` Some page content may be obscured by the side navigation bar when rotating to landscape
|
||
* `Fix` Incomplete status bar background tint area on some pages in Android 15 _[`issue #398`](http://issues.autojs6.com/398)_
|
||
* `Fix` Code editor might write files with low-confidence encoding causing decoding errors (attempted fix)
|
||
* `Improvement` Improved layout adaptability on the App and Developer pages and removed unnecessary layout categories
|
||
* `Improvement` README.md build section added multiple methods to help locate the target settings page _[`issue #404`](http://issues.autojs6.com/404)_
|
||
* `Improvement` Some dependency or local library version adjustments _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v664)_
|
||
|
||
# v6.6.3
|
||
|
||
###### 2025/05/27
|
||
|
||
* `Feature` Release history feature: view multi-language release changelogs and statistics
|
||
* `Feature` timers.keepAlive method (now global) for keeping the script alive
|
||
* `Feature` Event listeners such as engines.on('start/stop/error', callback) for global engine events
|
||
* `Feature` images.detectMultiColors method for multi-point color verification _[`issue #374`](http://issues.autojs6.com/374)_
|
||
* `Feature` images.matchFeatures / detectAndComputeFeatures methods: full-resolution image matching (Ref to [Auto.js Pro](https://g.pro.autojs.org/)) _[`issue #366`](http://issues.autojs6.com/366)_
|
||
* `Feature` images.compressToBytes method to compress an image and generate a byte array
|
||
* `Feature` images.downsample method for pixel down-sampling and creating a new ImageWrapper
|
||
* `Feature` ui.keepScreenOn method to keep the device screen on while a UI page is focused
|
||
* `Feature` ui.root property (getter) to obtain the "window content root container" node of the UI layout
|
||
* `Feature` webview element now supports JsBridge-based web page layouts (Ref to [Auto.js Pro](https://g.pro.autojs.org/)) [see Sample Code > Layout > Interactive HTML / Vue2 + Vant (SFC)] _[`issue #281`](http://issues.autojs6.com/281)_
|
||
* `Feature` Layout Inspector supports hiding controls (by [TonyJiangWJ](https://github.com/TonyJiangWJ)) _[`pr #371`](http://pr.autojs6.com/371)_ _[`issue #355`](http://issues.autojs6.com/355)_
|
||
* `Fix` Online docs in the Home > Docs tab and Docs activity may be covered by the system navigation bar
|
||
* `Fix` Clicking Toolbar buttons on some pages could accidentally trigger the title click event
|
||
* `Fix` Blank lines in the code editor showed box glyphs on some devices (tentative fix)
|
||
* `Fix` Color-picker dialog in the theme-color settings page could stack infinitely
|
||
* `Fix` Volume-up key failed to stop all scripts when the accessibility service was disabled
|
||
* `Fix` IME overlay issue when editing custom broadcast content in the Scheduled Tasks page
|
||
* `Fix` Controls inside webview elements could not activate the soft keyboard properly
|
||
* `Fix` APK file info dialog might fail to obtain app name and SDK info
|
||
* `Fix` File-manager sample code might fail to auto-load child directory contents when entering a project folder
|
||
* `Fix` Top content of UI mode on Android 15 was covered by the status bar
|
||
* `Fix` Status-bar background color on some Android 15 pages could not follow the theme color dynamically
|
||
* `Fix` dialogs module could not use the customView property _[`issue #364`](http://issues.autojs6.com/364)_
|
||
* `Fix` Expression parameter of dialogs.input might not return the execution result
|
||
* `Fix` Using JavaAdapter led to a ClassLoader stack overflow _[`issue #376`](http://issues.autojs6.com/376)_
|
||
* `Fix` console.setContentTextColor caused log text color to lose its default value _[`issue #346`](http://issues.autojs6.com/346)_
|
||
* `Fix` console.setContentBackgroundColor could not accept color-name arguments _[`issue #384`](http://issues.autojs6.com/384)_
|
||
* `Fix` images.compress implementation corrected: now changes encoding quality instead of pixel down-sampling
|
||
* `Fix` images.resize method did not work properly
|
||
* `Fix` engines.all could trigger ConcurrentModificationException _[`issue #394`](http://issues.autojs6.com/394)_
|
||
* `Fix` Incorrect date formats in some languages within README.md
|
||
* `Fix` Gradle build could fail due to invalid library archive length _[`issue #389`](http://issues.autojs6.com/389)_
|
||
* `Improvement` Added gradient separators to the Layout Inspector menu for lightweight grouping
|
||
* `Improvement` project.json now supports a permissions option for script projects (by [wirsnow](https://github.com/wirsnow)) _[`pr #391`](http://pr.autojs6.com/391)_ _[`issue #362`](http://issues.autojs6.com/362)_
|
||
* `Improvement` Automatically read and check declared permissions of installed apps when packaging a single file _[`issue #362`](http://issues.autojs6.com/362)_
|
||
* `Improvement` Expanded theme-color adaptation scope; supports more widget types
|
||
* `Improvement` Adaptive drawer width on the Home page for landscape / ultra-wide screens
|
||
* `Improvement` Added horizontal and small-screen layouts for About App & Developer pages
|
||
* `Improvement` Settings-page dialogs now offer a "Use default value" menu option
|
||
* `Improvement` Floating Action Button in File Manager auto-hides when tapping elsewhere
|
||
* `Improvement` Code formatter now supports operators such as `??`, `?.`, `??=`
|
||
* `Improvement` Code editor supports reading and writing files encoded in GB18030 / UTF-16 (LE/BE) / Shift_JIS, etc
|
||
* `Improvement` Code editor supports displaying detailed file information (path/encoding/line break format/total bytes and characters, etc.) _[`issue #395`](http://issues.autojs6.com/395)_
|
||
* `Improvement` Added operation-error prompts for intent actions (edit / view / install / send / play, etc.)
|
||
* `Improvement` webview element's url attribute supports relative paths
|
||
* `Improvement` ImageWrapper#saveTo path parameter supports relative paths
|
||
* `Improvement` images.save supports PNG file-size compression when using the quality parameter _[`issue #367`](http://issues.autojs6.com/367)_
|
||
* `Improvement` Clearing ignored update records and client-mode connection addresses is now supported
|
||
* `Improvement` Version-update information supports multi-language display (in sync with current UI language)
|
||
* `Improvement` Asynchronous loading significantly improves File Manager list scrolling smoothness
|
||
* `Improvement` Improved content and formatting of script exception messages in the console
|
||
* `Improvement` Sample code now supports resetting a folder to its initial contents
|
||
* `Improvement` Increased efficiency when checking APK signature information
|
||
* `Improvement` Optimized dialog display efficiency and information presentation for APK/media file type info
|
||
* `Improvement` Gradle build script now better adapts to newer versions _[`discussion #369`](http://discussions.autojs6.com/369)_
|
||
* `Improvement` Some dependency or local library version adjustments _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v663)_
|
||
|
||
##### For more release history, refer to
|
||
|
||
* [CHANGELOG.md](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG-en.md)
|
||
|
||
******
|
||
|
||
### <a id="project-compilation-and-build"></a>Project Compilation and Build
|
||
|
||
******
|
||
|
||
For debugging or developing the AutoJs6 open-source project, you can use [Android Studio](https://pro.autojs.org/) (a product of [Google](https://www.google.com/)) or [IntelliJ IDEA](https://www.jetbrains.com/idea/) (a product of [Jetbrains](https://www.jetbrains.com/)).
|
||
|
||
This section introduces the compilation and build methods of the AutoJs6 open-source project using Android Studio as an example. IntelliJ IDEA is similar.
|
||
|
||
#### Android Studio Preparation
|
||
|
||
Download `Android Studio Panda 2 | 2025.3.2` version (choose one as needed):
|
||
|
||
- [android-studio-panda2-windows.exe](https://edgedl.me.gvt1.com/android/studio/install/2025.3.2.6/android-studio-panda2-windows.exe) (1.28 GiB)
|
||
- [android-studio-panda2-windows.zip](https://edgedl.me.gvt1.com/android/studio/ide-zips/2025.3.2.6/android-studio-panda2-windows.zip) (1.29 GiB)
|
||
- [android-studio-panda2-linux.tar.gz](https://edgedl.me.gvt1.com/android/studio/ide-zips/2025.3.2.6/android-studio-panda2-linux.tar.gz) (1.32 GiB)
|
||
|
||
> Note: The release date for the above version is Mar 3, 2026. To download other versions, or if the above link is invalid, you can visit the [Android Studio release archive](https://developer.android.com/studio/archive?hl=en) page.
|
||
|
||
Install or extract the above file, then run the Android Studio software (e.g., `"D:\android-studio\bin\studio64.exe"`).
|
||
|
||
#### Android SDK Preparation
|
||
|
||
> Note: If the Android SDK is already installed on the computer system, this section can be skipped.
|
||
|
||
Open the `Android SDK (Android Software Development Kit)` settings page (any of the following ways):
|
||
|
||
```text
|
||
Help | Find action # Input "Android SDK"
|
||
[ or ]
|
||
File | Settings # Search "Android SDK"
|
||
[ or ]
|
||
File | Settings | Language & Frameworks | Android SDK
|
||
[ or ]
|
||
File | Settings | Appearance & Behavior | System Settings | Android SDK
|
||
```
|
||
|
||
If the `Android SDK Location` field is blank, click the `Edit` button on the right and click `Next` multiple times in the pop-up window.
|
||
|
||
> Note: During the process, one or more relevant agreements may need to be accepted to continue.
|
||
|
||
Once the related resources are downloaded and installed, click the `Finish` button.
|
||
The `Android SDK Location` field above will auto-populate with the path, completing the SDK preparation work.
|
||
|
||
#### Android SDK Tools Preparation
|
||
|
||
AutoJs6 requires certain SDK tools (like NDK and CMake).
|
||
|
||
> Note: If all required Android SDK Tools for AutoJs6 are already installed on the computer system, this section can be skipped.
|
||
|
||
Open the `SDK Tools` settings page (any of the following ways):
|
||
|
||
```text
|
||
Help | Find action # Input "SDK Tools"
|
||
[ or ]
|
||
File | Settings # Search "SDK Tools"
|
||
[ or ]
|
||
File | Settings | Language & Frameworks | Android SDK | SDK Tools (located in the right window)
|
||
[ or ]
|
||
File | Settings | Appearance & Behavior | System Settings | Android SDK | SDK Tools (located in the right window)
|
||
```
|
||
|
||
Check `Show Package Details`, click NDK and CMake respectively to ensure the corresponding version tools are checked, the version information of the SDK tools is located in the `version.properties` file in the root directory of the AutoJs6 project.
|
||
|
||
#### JDK Preparation
|
||
|
||
The `JDK (Java Development Kit)` version required for the AutoJs6 project should be at least `17`, but `21` or higher is recommended.
|
||
|
||
As of Mar 14, 2026, AutoJs6 supports up to version `25` of the JDK.
|
||
|
||
> Note: If the JDK is already installed on the computer system and the version meets the above requirements, this section can be skipped.
|
||
|
||
JDK can be downloaded directly via the IDE or from the [Oracle website](https://www.oracle.com/java/technologies/downloads/).
|
||
|
||
Open the `Gradle JDK` settings page (any of the following ways):
|
||
|
||
```text
|
||
Help | Find action # Input "Gradle JDK"
|
||
[ or ]
|
||
File | Settings # Search "Gradle"
|
||
[ or ]
|
||
File | Settings | Build, Execution, Deployment | Build Tools | Gradle
|
||
```
|
||
|
||
`Gradle JDK` can be chosen or added with different versions of JDK.
|
||
|
||
If a suitable version of the JDK (>= `17`) already exists in the list, it can be selected directly.
|
||
Alternatively, you can choose `Download JDK` to download a suitable JDK, click the `Download` button and wait for the download to complete.
|
||
You can also choose `Add JDK` to add an existing local JDK, locating its directory and completing the JDK addition.
|
||
|
||
#### AutoJs6 Resources Cloning
|
||
|
||
Click `Get from VCS` button on the main page of Android Studio.
|
||
Fill `URL` field with `https://github.com/SuperMonster003/AutoJs6.git`,
|
||
The `Directory` field can be modified to a specific path if needed.
|
||
Click the `Clone` button, wait for the AutoJs6 project resources to be cloned to the local device.
|
||
|
||
> Note: The above process may require the installation of [Git](https://git-scm.com/download).
|
||
|
||
#### AutoJs6 Project Building
|
||
|
||
After cloning, Android Studio will open the AutoJs6 project window and automatically complete the preliminary `Dependencies` download and Gradle build work.
|
||
|
||
> Note: The above process may take a long time. If network conditions are poor, it may need to be retried multiple times (click the Retry button).
|
||
|
||
If the build couldn't proceed automatically or you need to rebuild the project, follow these steps:
|
||
|
||
- From the `Run/Debug Configurations` menu in the Toolbar, select `app`, which is the main AutoJs6 application
|
||
- Click the `Build Project` (hammer icon) button on the left to start building the project. The default shortcut is CTRL + F9
|
||
- Wait for the build to complete. The `Builder Output` tab will display a message such as "BUILD SUCCESSFUL in 1h 17m 34s"
|
||
|
||
If the build fails, you can report the error message to the AutoJs6 project's [Issues](http://issues.autojs6.com) page.
|
||
|
||
> Note: For more details on building and running the app, please refer to [Android Docs](https://developer.android.com/studio/run?hl=en)
|
||
|
||
#### AutoJs6 Project Deployment (Run App)
|
||
|
||
Once the project is built successfully, it can be deployed as an application (App) to a physical device (e.g., phone/tablet) or a virtual device (e.g., Android emulator).
|
||
|
||
- In the Toolbar, select `app` from the `Run/Debug Configurations` menu, which is the main AutoJs6 application
|
||
- In the `Available Devices` dropdown on the right, choose the device on which the project app should run (physical or virtual)
|
||
- Click the `Run` (triangle icon) button on the right to launch the app. The default shortcut is `F10`
|
||
- Wait for the deployment to finish; the chosen device will automatically install and run the project app
|
||
|
||
#### AutoJs6 Project Deployment (Generate APK)
|
||
|
||
Package the project and generate an APK file that can be installed on Android devices:
|
||
|
||
- Debug Version
|
||
- `Build` | `Build Bundle(s) / APK(s)` | `Build APK(s)`
|
||
- Generate signed debug APK
|
||
- Path example: `"D:\AutoJs6\app\build\outputs\apk\debug\"`
|
||
- Release Version
|
||
- `Build` | `Generate Signed Bundle / APK`
|
||
- Select `APK` option
|
||
- Prepare the signing file (create new or select existing), generate the signed release package
|
||
- Path example: `"D:\AutoJs6\app\release\"`
|
||
|
||
> Note: For more information on building an app for user release, please refer to [Android Docs](https://developer.android.com/build/build-for-release?hl=en)
|
||
|
||
#### Predefined Gradle Build Tasks for AutoJs6
|
||
|
||
Besides building the project App, AutoJs6 supports several predefined Gradle build tasks that help developers perform convenient project-related operations.
|
||
|
||
Under the `Run/Debug Configurations` menu in the Toolbar, you can find various predefined Gradle tasks, each indicated by an elephant icon on the left.
|
||
|
||
- AutoJs6 [inrt:assemble]
|
||
|
||
Assemble the "inrt" build variant, which primarily serves the AutoJs6 script packaging feature.
|
||
|
||
The AutoJs6 project has various build variants. The "inrt" variant is used for packaging scripts, generating the template file "template.apk" required for packaging.
|
||
|
||
When using the packaging feature, you might encounter the following error message:
|
||
|
||
> java.io.FileNotFoundException: template.apk
|
||
|
||
This indicates that the template file does not exist. You need to manually run the `inrt:assemble` task to generate the template file, then rebuild and redeploy the app.
|
||
|
||
> Note: When the main project code changes and you want to synchronize these changes with the packaged app, you need to rerun the `inrt:assemble` task to generate the template files and redeploy the app
|
||
|
||
- AutoJs6 [app:bundle]
|
||
|
||
Package the outputs of the debug build process, primarily for the [AutoJs6 TypeScript definitions](http://dts-project.autojs6.com) project.
|
||
|
||
After running the task, it produces the latest JAR file for the AutoJs6 project. Using the [Android d.ts Generator](https://github.com/NativeScript/android-dts-generator) (by [NativeScript](https://github.com/NativeScript)), you can generate the type definitions (d.ts format) for the main AutoJs6 app.
|
||
|
||
- AutoJs6 [app:digest]
|
||
|
||
Append digest information to the APK produced by the release build, mainly to finalize the filename before publishing the latest version of AutoJs6 to GitHub.
|
||
|
||
Below is the comparison of filenames before and after appending the digest information:
|
||
|
||
```text
|
||
Before:
|
||
autojs6-v6.6.2-arm64-v8a.apk
|
||
After:
|
||
autojs6-v6.6.2-arm64-v8a-0f2a9d74.apk
|
||
```
|
||
|
||
> Reference: [Android Docs](https://developer.android.com/studio/run?hl=zh-cn)
|
||
|
||
******
|
||
|
||
### <a id="script-development-assistance"></a>Script Development Assistance
|
||
|
||
******
|
||
|
||
To develop scripts that run with AutoJs6, appropriate development tools must be used:
|
||
|
||
- [VSCode](https://code.visualstudio.com/download) / [WebStorm](https://www.jetbrains.com/webstorm/download/) / [HBuilderX](https://www.dcloud.io/hbuilderx.html) ...
|
||
|
||
For writing and debugging scripts on a PC, the VSCode plugin can enable PC-to-phone connectivity:
|
||
|
||
- [AutoJs6-VSCode-Extension](http://vscext-project.autojs6.com) - AutoJs6 debugger (VSCode platform plugin)
|
||
|
||
When writing code using development tools, code completion functionality can better assist developers in completing code:
|
||
|
||
- [AutoJs6-TypeScript-Declarations](http://dts-project.autojs6.com) - AutoJs6 declaration files (code completion)
|
||
|
||
When writing code, AutoJs6-related API and usage can be consulted in the documentation at any time:
|
||
|
||
- [AutoJs6-Documentation](http://docs-project.autojs6.com) - AutoJs6 application documentation
|
||
|
||
Existing script development projects can serve as references and inspire creativity for personal script projects:
|
||
|
||
- [Ant-Forest](https://github.com/TonyJiangWJ/Ant-Forest) - Ant Forest energy auto-collect script by [TonyJiangWJ](https://github.com/TonyJiangWJ)
|
||
- [Ant-Forest](https://github.com/SuperMonster003/Ant-Forest) - Ant Forest energy auto-collect script by [SuperMonster003](https://github.com/SuperMonster003)
|
||
- [autojs](https://github.com/e1399579/autojs) - Auto.js utility scripts by [e1399579](https://github.com/e1399579)
|
||
- [autojsDemo](https://github.com/snailuncle/autojsDemo) - Auto.js demonstration example by [snailuncle](https://github.com/snailuncle)
|
||
- [autojs related repositories](https://github.com/topics/autojs) - All repositories related to the autojs topic on GitHub
|
||
|
||
******
|
||
|
||
### Contribution
|
||
|
||
******
|
||
|
||
Thank you to everyone who contributed to the AutoJs6 project development.
|
||
|
||
| <span style="word-break:keep-all;white-space:nowrap">Contributors</span> | <span style="word-break:keep-all;white-space:nowrap">Number of Commits</span> | <span style="word-break:keep-all;white-space:nowrap">Recent Submissions</span> |
|
||
|:------:|:------:|:------:|
|
||
| <span style="word-break:keep-all;white-space:nowrap">[Willie169](https://github.com/Willie169)</span> | <span style="word-break:keep-all;white-space:nowrap">[1](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3AWillie169)</span> | <span style="word-break:keep-all;white-space:nowrap">`2026/03/03`</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[LYS86](https://github.com/LYS86) `(Lin)`</span> | <span style="word-break:keep-all;white-space:nowrap">[4](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3ALYS86)</span> | <span style="word-break:keep-all;white-space:nowrap">`2025/12/26`</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[wirsnow](https://github.com/wirsnow)</span> | <span style="word-break:keep-all;white-space:nowrap">[1](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Awirsnow)</span> | <span style="word-break:keep-all;white-space:nowrap">`2025/05/19`</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[TonyJiangWJ](https://github.com/TonyJiangWJ)</span> | <span style="word-break:keep-all;white-space:nowrap">[4](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3ATonyJiangWJ)</span> | <span style="word-break:keep-all;white-space:nowrap">`2025/04/24`</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[luckyloogn](https://github.com/luckyloogn)</span> | <span style="word-break:keep-all;white-space:nowrap">[3](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Aluckyloogn)</span> | <span style="word-break:keep-all;white-space:nowrap">`2024/12/31`</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[kvii](https://github.com/kvii)</span> | <span style="word-break:keep-all;white-space:nowrap">[1](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Akvii)</span> | <span style="word-break:keep-all;white-space:nowrap">`2024/10/16`</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[chenguangming](https://github.com/chenguangming) `(Tom)`</span> | <span style="word-break:keep-all;white-space:nowrap">[2](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Achenguangming)</span> | <span style="word-break:keep-all;white-space:nowrap">`2024/05/14`</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[LZX284](https://github.com/LZX284) `(AI)`</span> | <span style="word-break:keep-all;white-space:nowrap">[7](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3ALZX284)</span> | <span style="word-break:keep-all;white-space:nowrap">`2023/11/15`</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[kojoe‑code](https://github.com/kojoe-code) `(抠脚本人)`</span> | <span style="word-break:keep-all;white-space:nowrap">[12](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Akojoe-code)</span> | <span style="word-break:keep-all;white-space:nowrap">`2023/07/12`</span> |
|
||
| <span style="word-break:keep-all;white-space:nowrap">[aiselp](https://github.com/aiselp)</span> | <span style="word-break:keep-all;white-space:nowrap">[6](https://github.com/SuperMonster003/AutoJs6/pulls?q=is%3Apr+is%3Amerged+author%3Aaiselp)</span> | <span style="word-break:keep-all;white-space:nowrap">`2023/06/14`</span> |
|
||
Data updated on Mar 4, 2026.
|
||
|
||
Data entries sorted in descending order by `recent submissions`.
|
||
|
||
Newly initiated, unprocessed Pull Requests will be included in the data statistics after merging.
|
||
|
||
Some contributors do not appear correctly in the [GitHub Contributors](https://github.com/SuperMonster003/AutoJs6/graphs/contributors) due to empty contribution records, but their contribution records can still be viewed via [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
|
||
) |