當前自述檔案 README.md
支援以下語言:
- 简体中文 [zh-Hans]
- 繁體中文 (香港) [zh-Hant-HK]
- 繁體中文 (台灣) [zh-Hant-TW] # 當前
- English [en]
- Français [fr]
- Español [es]
- 日本語 [ja]
- 한국어 [ko]
- Русский [ru]
- العربية [ar]
Auto.js 是一款 Android 平臺支援 無障礙服務 的 JavaScript 自動化工具軟體.
Auto.js 由 hyb1996 於 2017/01/27
初次釋出, 於 2020/03/13
停止維護, 最終版本名稱為 4.1.1 Alpha2
, 構建版本號為 461
.
AutoJs6 在 Auto.js 最終專案的基礎上, 於 2021/12/01
進行二次開發, 繼續保持開源免費.
下表列舉了部分 Auto.js 相關專案 (按開發日期排序):
專案 | 應用名稱 | 開發者 | 開發日期 | 終止開發日期 |
---|---|---|---|---|
Auto.js | Auto.js | hyb1996 | 2017/01/27 |
2020/03/13 |
Auto.js Pro 7 | Auto.js | hyb1996 | 2019/03/13 |
2019/07/08 |
Auto.js Pro 8 | AutoJsPro | hyb1996 | 2019/10/13 |
2021/07/24 |
Auto.js | Auto.js M | TonyJiangWJ | 2019/11/21 |
- |
AutoX | Autox.js | kkevsekk1 | 2020/07/24 |
- |
Auto.js Pro 9 | AutoJsPro | hyb1996 | 2021/03/28 |
2023/02/09 |
AutoJs6 | AutoJs6 | SuperMonster003 | 2021/12/01 |
- |
AutoX | Autox.js v6 | wilinz | 2022/05/26 |
- |
AutoX | Autox.js v7 | aiselp | 2024/04/21 |
- |
表格中的日期為預估值, 與實際可能存在出入.
表格中 Auto.js Pro 7/8/9 為付費版本, 其餘為免費開源版本.
- 可用作 JavaScript IDE (程式碼補全/變數重新命名/程式碼格式化)
- 支援基於 無障礙服務 的自動化操作
- 支援浮動按鈕快捷操作 (指令碼錄製及執行/檢視包名及活動/佈局分析)
- 支援選擇器 API 並提供控制元件遍歷/獲取資訊/控制元件操作 (類似 UiAutomator)
- 支援佈局介面分析 (類似 Android Studio 的 LayoutInspector)
- 支援錄製功能及錄製回放
- 支援螢幕截圖/儲存截圖/圖片找色/圖片匹配
- 支援 E4X (ECMAScript for XML) 編寫介面
- 支援將指令碼檔案或專案打包為 APK 檔案
- 支援利用 Root 許可權擴充套件功能 (螢幕點選/滑動/錄製/Shell)
- 支援作為 Tasker 外掛使用
- 支援與 VSCode 連線並進行桌面開發 (需要 AutoJs6-VSCode-Extension 外掛)
相較於 Auto.js 最終開源版本 4.1.1 Alpha2
, AutoJs6 主要進行了以下升級或變更:
- 支援透過 Shizuku 獲得 ADB 特權並使用系統 API
- 支援構建 WebSocket 例項以完成基於 WebSocket 協議 的網路請求
- 新增模組 [ base64 / crypto / sqlite / i18n / notice / ocr / opencc / qrcode / shizuku / ... ]
- 多語言適配 [ 西 / 法 / 俄 / 阿 / 日 / 韓 / 英 / 簡中 / 繁中 / ... ]
- 夜間模式適配 [ 設定頁面 / 文件頁面 / 佈局分析頁面 / 浮動視窗 / ... ]
- VSCode 外掛 支援客戶端 (LAN) 及服務端 (LAN/ADB) 連線方式
- Rhino 引擎由 v1.7.7.2 升級至 v1.7.16-SNAPSHOT
- Unicode 碼位 轉義支援 輔助平面 字元
'\u{1D160}'; /* 表示 "𝅘𝅥𝅮", 傳統方式: '\uD834\uDD60'. */
- 支援 Object.values()
Object.values({name: 'Max', age: 4}); // ['max', 4]
- 支援 Array.prototype.includes()
[10, 20, NaN].includes(20); // true
- 支援 BigInt
typeof 567n === 'bigint'; // true
- 支援 模板字串
`Lucky number: ${(Math.random() * 100).toFixed(0)}`
- 檢視 Rhino 引擎 更多新特性
- 檢視 Rhino 引擎 相容性列表
- Unicode 碼位 轉義支援 輔助平面 字元
提示
內建模組使用 Kotlin 重新編寫以提升指令碼執行效率但可能需要多次迭代逐步完善提示
內建 init.js 檔案預設為空但支援開發者自行擴充套件內建模組或掛載外部模組新增
axios 模組 / cheerio 模組 (Ref to AutoX)新增
sqlite 模組, 用於 SQLite 資料庫簡單操作 (Ref to Auto.js Pro) (參閱 專案文件 > SQLite)新增
mime 模組, 用於處理和解析 MIME 型別字串 (參閱 專案文件 > MIME)新增
nanoid 模組, 可作為字串 ID 生成器 (Ref to ai/nanoid)新增
sysprops 模組, 用於獲取執行時環境配置資料 (參閱 專案文件 > 系統屬性)新增
ocr 模組支援 Rapid OCR 引擎新增
佈局分析支援切換視窗 (Ref to Auto.js Pro)新增
auto.clearCache 方法, 支援清除控制元件快取 (Ref to Auto.js Pro)新增
threads.pool 方法, 支援執行緒池簡單應用 (Ref to Auto.js Pro)新增
images.matchTemplate 方法增加 useTransparentMask 選項引數, 支援透明找圖 (Ref to Auto.js Pro)新增
images.requestScreenCaptureAsync 方法, 用於 UI 模式非同步方式申請截圖許可權 (Ref to Auto.js Pro)新增
images.requestScreenCapture 方法增加 isAsync 選項引數, 支援非同步方式獲取螢幕截圖 (Ref to Auto.js Pro)新增
images.on('screen_capture', callback) 等事件監聽方法, 支援監聽螢幕截圖可用事件 (Ref to Auto.js Pro)新增
images.stopScreenCapture 方法, 支援主動釋放截圖申請的相關資源 (Ref to Auto.js Pro)新增
images.psnr/mse/ssim/mssim/hist/ncc 及 images.getSimilarity 方法, 用於獲取影象相似性度量值新增
images.isGrayscale 方法, 用於判斷影象是否為灰度影象新增
images.invert 方法, 用於反色影象轉換新增
s13n.point/time 方法, 用於標準化點物件及時長物件 (參閱 專案文件 > 標準化)新增
console 模組 gravity (重力), touchThrough (穿透點選), backgroundTint (背景著色) 等相關方法 (參閱 專案文件 > 控制檯)新增
Mathx.randomInt/Mathx.randomFloat 方法, 用於返回指定範圍內的隨機整數或隨機浮點數新增
app.launchDual/startDualActivity 等方法, 用於處理雙開應用 (需要 Shizuku 或 Root 許可權) (實驗性)新增
app.kill 方法, 用於強制停止應用 (需要 Shizuku 或 Root 許可權)新增
floaty.getClip 方法, 用於藉助浮動視窗聚焦間接獲取剪下板內容修復
Fragment 子類 (如 DrawerFragment / ExplorerFragment 等) 中存在的 View Binding 記憶體洩漏修復
ScreenCapture / ThemeColorPreference 等類中存在的例項記憶體洩漏修復
Android 14+ 申請截圖許可權導致應用崩潰的問題 (by chenguangming)pr #242
修復
Android 14+ 開啟前臺服務導致應用崩潰的問題修復
Android 14+ 程式碼編輯器執行按鈕點選後無法正常亮起的問題修復
專案打包後應用可能因缺少必要庫檔案無法正常執行的問題issue #202
issue #223
pr #264
修復
編輯專案時可能因指定圖示資源不存在而導致應用崩潰的問題issue #203
修復
截圖許可權申請時無法正常使用引數獲取指定螢幕方向的截圖資源修復
部分裝置無法正常新增指令碼快捷方式的問題 (試修)issue #221
修復
呼叫 http 模組與傳送請求相關的方法將出現累積性請求傳送延遲的問題issue #192
修復
Shizuku 服務在 AutoJs6 進入主活動頁面之前可能無法正常使用的問題 (試修)issue #255
修復
random(min, max) 方法可能出現結果越界的問題修復
pickup 方法結果型別引數無法正常傳入空陣列的問題修復
UiObject#bounds() 得到的控制元件矩形可能被意外修改而破壞其不變性的問題修復
text/button/input 元素的文字內容包含半形雙引號時無法正常解析的問題修復
text/textswitcher 元素的 autoLink 屬性功能失效的問題修復
不同指令碼可能錯誤地共享同一個 ScriptRuntime 物件的問題修復
全域性變數 HEIGHT 及 WIDTH 丟失 Getter 動態屬性的問題修復
指令碼啟動時 RootShell 隨即載入可能導致啟動高延遲的問題修復
控制檯浮動視窗設定背景顏色導致矩形圓角樣式丟失的問題修復
無障礙服務自動啟動可能出現的服務異常問題 (試修)修復
主頁文件頁面左右滑動 WebView 控制元件時可能觸發 ViewPager 切換的問題修復
檔案管理器無法識別包含大寫字母副檔名的問題修復
檔案管理器首次進入專案目錄時可能無法自動識別專案的問題修復
檔案管理器刪除資料夾後頁面無法自動重新整理的問題修復
檔案管理器排序檔案及資料夾時可能出現 ASCII 首字母名稱置後的問題修復
程式碼編輯器除錯功能的 FAILED ASSERTION 異常修復
程式碼編輯器除錯過程中關閉編輯器後無法再次正常除錯的問題修復
程式碼編輯器跳轉到行尾時可能遺漏末尾字元的問題修復
主活動頁面啟動日誌活動頁面時可能出現閃屏的問題修復
打包應用無法正常使用 opencc 模組的問題最佳化
打包頁面中 "不可用 ABI" 控制元件的點選提示體驗最佳化
支援使用 Shizuku 控制 "指標位置" 顯示開關最佳化
支援使用 Shizuku 控制 "投影媒體" 及 "修改安全設定" 許可權開關最佳化
automator.gestureAsync/gesturesAsync 支援回撥函式引數最佳化
tasks 模組使用同步方式進行資料庫操作避免可能的資料訪問不一致問題最佳化
指令碼執行模式支援管道符號分隔模式引數 (如"ui|auto";
開頭)最佳化
指令碼執行模式支援單引號及反引號且支援省略分號 (如'ui';
或'ui'
開頭)最佳化
指令碼執行模式支援 axios, cheerio, dayjs 等模式引數快捷匯入內建擴充套件模組 (如"axios";
開頭)最佳化
指令碼執行模式支援 x 或 jsox 模式引數快捷啟用 JavaScript 內建物件擴充套件模組 (如"x";
開頭)最佳化
img 元素 src 及 path 屬性支援本地相對路徑 (如<img src="a.png"
/>)最佳化
程式碼編輯器匯入 Java 類和包名時支援智慧判斷插入位置最佳化
images 模組支援直接使用路徑作為影象引數最佳化
importPackage 支援字串引數最佳化
服務端模式 IP 地址支援剪下板匯入智慧識別且支援空格按鍵智慧轉換最佳化
檔案管理器新建檔案時支援預設字首選擇並自動生成合適的數字字尾最佳化
檔案管理器執行專案時具體化異常訊息提示issue #268
最佳化
檔案管理器支援更多型別並支援顯示對應的圖示符號 (支援 800 多種檔案型別)最佳化
檔案管理器可編輯的檔案型別 (jpg/doc/pdf...) 增加編輯按鈕最佳化
檔案管理器 APK 檔案支援檢視基礎資訊, Manifest 資訊及許可權列表最佳化
檔案管理器音影片等媒體檔案支援檢視基礎資訊及 MediaInfo 資訊最佳化
打包單檔案時支援自動填入合適的標準化名包並支援無效字元過濾提示最佳化
打包單檔案時支援根據已安裝同包名應用自動設定圖示並自增版本號及版本名稱最佳化
打包專案配置檔案支援 abis/libs 選項指定預設包含的 ABI 架構及擴充套件庫最佳化
打包專案配置檔案 abis/libs 選項無效或無可用時支援相關訊息提示最佳化
LeakCanary 在正式發行版本中被排除以避免增加不必要性最佳化
專案原始碼所有英文註釋增加簡體中文翻譯以增強註釋可讀性最佳化
README 及 CHANGELOG 支援多語言 (由指令碼自動生成)最佳化
Gradle 構建指令碼提升版本自適應能力最佳化
部分依賴或本地庫版本調整CHANGELOG.md
新增
opencc 模組 (參閱 專案文件 > 中文轉換) (Ref to LZX284)新增
UiSelector 增加 plus 及 append 方法issue #115
新增
打包應用頁面增加 ABI 及庫的篩選支援 (Ref to AutoX)issue #189
修復
打包應用檔案體積異常龐大的問題 (Ref to AutoX / LZX284)issue #176
修復
打包應用無法顯示並列印部分異常訊息的問題修復
打包應用頁面選擇應用圖示後可能顯示空圖示的問題修復
打包應用包含 MLKit Google OCR 庫時可能出現的上下文未初始化異常修復
ocr.mlkit/ocr.recognizeText/detect 方法無效的問題修復
部分文字 (如日誌頁面) 顯示語言與應用設定語言可能不相符的問題修復
部分語言在主頁抽屜開關項可能出現文字溢位的問題修復
部分裝置無障礙服務開啟後立即自動關閉且無任何提示訊息的問題issue #181
修復
部分裝置無障礙服務開啟後設備物理按鍵可能導致應用崩潰的問題 (試修)issue #183
issue #186
修復
使用 auto(true) 重啟無障礙服務後 pickup 功能異常的問題 (試修)issue #184
修復
floaty 模組建立浮動視窗拖動時可能導致應用崩潰的問題 (試修)修復
app.startActivity 無法使用簡稱引數的問題issue #182
issue #188
修復
importClass 匯入的類名與全域性變數衝突時程式碼丟擲異常的問題issue #185
修復
Android 7.x 無法使用無障礙服務的問題修復
Android 14 可能無法正常使用 runtime.loadJar/loadDex 方法的問題 (試修)修復
安卓系統快速設定面板中 "佈局範圍分析" 和 "佈局層次分析" 不可用的問題issue #193
修復
自動檢查更新功能可能導致應用 ANR 的問題 (試修)issue #186
修復
檔案管理器示例程式碼資料夾點選 "向上" 按鈕後無法回到工作路徑頁面的問題issue #129
修復
程式碼編輯器使用替換功能時替換按鈕無法顯示的問題修復
程式碼編輯器長按刪除時可能導致應用崩潰的問題 (試修)修復
程式碼編輯器點選 fx 按鈕無法顯示模組函式快捷面板的問題修復
程式碼編輯器模組函式快捷面板按鈕函式名稱可能溢位的問題最佳化
程式碼編輯器模組函式快捷面板適配夜間模式最佳化
打包應用啟動頁面適配夜間模式並調整應用圖示佈局最佳化
打包應用頁面支援使用軟鍵盤 ENTER 鍵實現游標跳轉最佳化
打包應用頁面支援點選 ABI 標題及庫標題切換全選狀態最佳化
打包應用頁面預設 ABI 智慧選擇並增加不可選擇項的引導提示最佳化
檔案管理器根據檔案及資料夾的型別及特徵調整選單項的顯示情況最佳化
檔案管理器資料夾右鍵選單增加打包應用選項最佳化
無障礙服務啟用但功能異常時在 AutoJs6 主頁抽屜開關處將體現異常狀態最佳化
控制檯列印錯誤訊息時附加詳細的堆疊資訊最佳化
部分依賴或本地庫版本調整CHANGELOG.md
新增
dialogs.build() 選項引數屬性 inputSingleLine新增
console.setTouchable 方法issue #122
修復
ocr 模組部分方法無法識別區域引數的問題issue #162
issue #175
修復
Android 7.x 發現新版本時無法獲取版本詳情的問題修復
Android 14 申請截圖許可權時導致應用崩潰的問題修復
主頁抽屜快速切換 "浮動按鈕" 開關時可能導致應用崩潰的問題修復
使用選單關閉浮動按鈕時重啟應用後浮動按鈕可能依然顯示的問題修復
Android 13 及以上系統設定頁面選擇並切換 AutoJs6 語言後無法生效的問題修復
構建工具初次構建時無法自動完成 OpenCV 資源部署的問題最佳化
原生化 bridges 模組以提升指令碼執行效率 (Ref to aiselp)最佳化
重構無障礙服務相關程式碼以增強無障礙服務的功能穩定性 (實驗性)issue #167
最佳化
UiObject 和 UiObjectCollection 的列印輸出格式最佳化
構建工具在構建環境 Gradle JDK 版本不滿足要求時作出升級提示最佳化
部分依賴或本地庫版本調整CHANGELOG.md
如需對 AutoJs6 開源專案進行除錯或開發, 可使用 Android Studio (Google 公司產品) 或 IntelliJ IDEA (Jetbrains 公司產品).
本小節以 Android Studio 為例介紹 AutoJs6 開源專案的編譯構建方法, IntelliJ IDEA 與之類似.
下載 Android Studio Ladybug | 2024.2.1 Patch 2
版本 (按需選擇其一):
- android-studio-2024.2.1.11-windows.exe (1.13 GB)
- android-studio-2024.2.1.11-windows.zip (1.14 GB)
注: 上述版本釋出時間為 2024 年 10 月 31 日. 如需下載其他版本, 或上述連結已失效, 可訪問 Android Studio 發行版本歸檔 頁面.
安裝或解壓上述檔案, 執行 Android Studio 軟體 (如 "D:\android-studio\bin\studio64.exe"
).
注: 如果計算機系統已安裝 Android SDK (安卓軟體開發工具包), 則可跳過此小節內容.
在 Android Studio 軟體中使用快捷鍵 CTRL + ALT + S
開啟設定頁面:
Appearance & Behavior (外觀與表現) ->
System Settings (系統設定) ->
Android SDK (安卓軟體開發工具包)
Android SDK Location (安卓軟體開發工具包位置)
處如果是空白內容, 可點選右側 Edit (編輯)
按鈕, 在彈出的視窗中多次點選 Next (下一步)
.
注: 過程中可能需要同意一個或多個相關協議才能繼續.
待相關資源下載並安裝完畢, 點選 Finish (完成)
按鈕.
上述 Android SDK Location (安卓軟體開發工具包位置)
處將自動完成路徑填寫, SDK 準備工作隨即完成.
AutoJs6 需要使用部分 SDK 工具 (如 NDK 及 CMake).
注: 如果計算機系統已安裝 AutoJs6 全部所需的 Android SDK Tools, 則可跳過此小節內容.
在 Android Studio 軟體中使用快捷鍵 CTRL + ALT + S
開啟設定頁面:
Appearance & Behavior (外觀與表現) ->
System Settings (系統設定) ->
Android SDK (安卓軟體開發工具包) ->
SDK Tools (SDK 工具) (位於右側視窗)
勾選 Show Package Details (顯示包詳情)
, 依次點選 NDK 及 CMake, 確保相應版本的工具已勾選, SDK 工具的版本資訊位於 AutoJs6 專案根目錄的 version.properties
檔案中.
AutoJs6 專案依賴的 JDK (Java 開發工具包)
發行版本不低於 17
, 但建議不低於 19
.
截至 2024 年 12 月 2 日, AutoJs6 可支援 JDK 最高版本為 23
.
注: 如果計算機系統已安裝 JDK 且版本滿足上述要求, 則可跳過此小節內容.
JDK 可使用 IDE 直接下載, 或訪問 Oracle 網站 下載.
在 Android Studio 軟體中使用快捷鍵 CTRL + ALT + S
開啟設定頁面:
Build, Execution, Deployment (構建, 執行, 開發) ->
Build Tools (構建工具) ->
Gradle
Gradle JDK
處可選擇或新增不同版本的 JDK.
如果列表中已存在合適版本的 JDK (>= 17
), 則直接選擇即可.
否則可以選擇 Download JDK (下載 JDK)
下載合適的 JDK, 點選 Download (下載)
按鈕並等待下載完成.
也可以選擇 Add JDK (新增 JDK)
新增已存在的本地 JDK, 定位其目錄並完成 JDK 新增.
在 Android Studio 主頁面點選 Get from VCS (從版本控制系統獲取)
按鈕.
URL (統一資源定位地址)
處填入 https://github.com/SuperMonster003/AutoJs6.git
,
Directory (目錄)
處可根據需要修改為特定路徑.
點選 Clone (克隆)
按鈕, 等待 AutoJs6 專案資源在裝置本地完成克隆.
注: 上述過程可能需要安裝 Git (分散式版本控制系統).
克隆完成後, Android Studio 將開啟 AutoJs6 的專案視窗, 並自動完成初步的 Dependencies (依賴)
下載及 Gradle 構建工作.
注: 上述過程可能非常耗時. 若網路條件欠佳, 可能需要重試多次 (點選 Retry 按鈕).
構建完成後, Android Studio 的 Build
標籤頁將出現類似 BUILD SUCCESSFUL in 1h 17m 34s
的訊息.
打包專案並生成可安裝到安卓裝置的 APK 檔案:
- 除錯版 (Debug Version)
Build (構建)
->Build Bundle(s) / APK(s)
->Build APK(s)
- 生成帶預設簽名的除錯版安裝包
- 路徑示例:
"D:\AutoJs6\app\build\outputs\apk\debug\"
- 釋出版 (Release Version)
Build (構建)
->Generate Signed Bundle / APK
- 選擇
APK
選項 - 準備好簽名檔案 (新建或選取), 生成已簽名的釋出版安裝包
- 路徑示例:
"D:\AutoJs6\app\release\"
參閱: Android Docs
開發 AutoJs6 可執行的指令碼, 需使用合適的開發工具:
如需在 PC 上進行指令碼編寫與除錯, VSCode 外掛可以實現 PC 與手機的互聯:
- AutoJs6-VSCode-Extension - AutoJs6 偵錯程式 (VSCode 平臺外掛)
使用開發工具編寫程式碼時, 程式碼智慧補全功能可以更好地輔助開發者完成程式碼編寫:
- AutoJs6-TypeScript-Declarations - AutoJs6 宣告檔案 (程式碼智慧補全)
編寫程式碼時, AutoJs6 相關 API 及使用方式, 可隨時查閱應用文件:
- AutoJs6-Documentation - AutoJs6 應用文件
現有的指令碼開發專案可作為參考, 激發個人指令碼專案的創作靈感:
- Ant-Forest - 螞蟻森林能量自動收取指令碼 by TonyJiangWJ
- Ant-Forest - 螞蟻森林能量自動收取指令碼 by SuperMonster003
- autojs - Auto.js 實用指令碼 by e1399579
- autojsDemo - Auto.js 演示示例 by snailuncle
- autojs 相關倉庫 - GitHub 與 autojs 話題相關的全部倉庫
感謝每一位參與 AutoJs6 專案開發的貢獻人員.
貢獻人員 | 提交數 | 最近提交 |
---|---|---|
kvii | 1 | 2024/10/16 |
chenguangming | 2 | 2024/05/14 |
LZX284 | 17 | 2023/11/19 |
TonyJiangWJ | 4 | 2023/10/31 |
little‑alei | 12 | 2023/07/12 |
aiselp | 6 | 2023/06/14 |
LYS86 | 2 | 2023/06/03 |
資料更新於 2024 年 10 月 23 日.
資料條目按 最近提交
降序排序.
新發起的暫未處理的 Pull Request, 將在合併處理後加入資料統計.
部分貢獻人員在 GitHub Contributors 未能正常出現, 其提交記錄為空, 仍可透過 Pull Request 檢視貢獻記錄.