Skip to content

Latest commit

 

History

History
501 lines (387 loc) · 42.3 KB

README-zh-Hant-TW.md

File metadata and controls

501 lines (387 loc) · 42.3 KB

autojs6-banner_800×224

Android 平臺支援無障礙服務的 JavaScript 自動化工具

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


語言 (Languages)


當前自述檔案 README.md 支援以下語言:


簡介


Auto.js 是一款 Android 平臺支援 無障礙服務 的 JavaScript 自動化工具軟體.

Auto.js 由 hyb19962017/01/27 初次釋出, 於 2020/03/13 停止維護, 最終版本名稱為 4.1.1 Alpha2, 構建版本號為 461.

AutoJs6 在 Auto.js 最終專案的基礎上, 於 2021/12/01 進行二次開發, 繼續保持開源免費.

下表列舉了部分 Auto.js 相關專案 (按開發日期排序):

專案 應用名稱 開發者 開發日期 終止開發日期
Auto.js Auto.js hyb1996 2017/01/27 2020/03/13
Auto.js Pro 7 Auto.js hyb1996 2019/03/13 2019/07/08
Auto.js Pro 8 AutoJsPro hyb1996 2019/10/13 2021/07/24
Auto.js Auto.js M TonyJiangWJ 2019/11/21 -
AutoX Autox.js kkevsekk1 2020/07/24 -
Auto.js Pro 9 AutoJsPro hyb1996 2021/03/28 2023/02/09
AutoJs6 AutoJs6 SuperMonster003 2021/12/01 -
AutoX Autox.js v6 wilinz 2022/05/26 -
AutoX Autox.js v7 aiselp 2024/04/21 -

表格中的日期為預估值, 與實際可能存在出入.

表格中 Auto.js Pro 7/8/9 為付費版本, 其餘為免費開源版本.


功能


  • 可用作 JavaScript IDE (程式碼補全/變數重新命名/程式碼格式化)
  • 支援基於 無障礙服務 的自動化操作
  • 支援浮動按鈕快捷操作 (指令碼錄製及執行/檢視包名及活動/佈局分析)
  • 支援選擇器 API 並提供控制元件遍歷/獲取資訊/控制元件操作 (類似 UiAutomator)
  • 支援佈局介面分析 (類似 Android Studio 的 LayoutInspector)
  • 支援錄製功能及錄製回放
  • 支援螢幕截圖/儲存截圖/圖片找色/圖片匹配
  • 支援 E4X (ECMAScript for XML) 編寫介面
  • 支援將指令碼檔案或專案打包為 APK 檔案
  • 支援利用 Root 許可權擴充套件功能 (螢幕點選/滑動/錄製/Shell)
  • 支援作為 Tasker 外掛使用
  • 支援與 VSCode 連線並進行桌面開發 (需要 AutoJs6-VSCode-Extension 外掛)

環境


  • Android 作業系統
  • API 24 (7.0) [N] 及以上

指南



主要變更


相較於 Auto.js 最終開源版本 4.1.1 Alpha2, AutoJs6 主要進行了以下升級或變更:


版本歷史


v6.6.0

2024/12/02 - 內建模組重寫, 謹慎升級
  • 提示 內建模組使用 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

v6.5.0

2023/12/02
  • 新增 opencc 模組 (參閱 專案文件 > 中文轉換) (Ref to LZX284)
  • 新增 UiSelector 增加 plusappend 方法 issue #115
  • 新增 打包應用頁面增加 ABI 及庫的篩選支援 (Ref to AutoX) issue #189
  • 修復 打包應用檔案體積異常龐大的問題 (Ref to AutoX / LZX284) issue #176
  • 修復 打包應用無法顯示並列印部分異常訊息的問題
  • 修復 打包應用頁面選擇應用圖示後可能顯示空圖示的問題
  • 修復 打包應用包含 MLKit Google OCR 庫時可能出現的上下文未初始化異常
  • 修復 ocr.mlkit/ocr.recognizeText/detect 方法無效的問題
  • 修復 部分文字 (如日誌頁面) 顯示語言與應用設定語言可能不相符的問題
  • 修復 部分語言在主頁抽屜開關項可能出現文字溢位的問題
  • 修復 部分裝置無障礙服務開啟後立即自動關閉且無任何提示訊息的問題 issue #181
  • 修復 部分裝置無障礙服務開啟後設備物理按鍵可能導致應用崩潰的問題 (試修) issue #183 issue #186
  • 修復 使用 auto(true) 重啟無障礙服務後 pickup 功能異常的問題 (試修) issue #184
  • 修復 floaty 模組建立浮動視窗拖動時可能導致應用崩潰的問題 (試修)
  • 修復 app.startActivity 無法使用簡稱引數的問題 issue #182 issue #188
  • 修復 importClass 匯入的類名與全域性變數衝突時程式碼丟擲異常的問題 issue #185
  • 修復 Android 7.x 無法使用無障礙服務的問題
  • 修復 Android 14 可能無法正常使用 runtime.loadJar/loadDex 方法的問題 (試修)
  • 修復 安卓系統快速設定面板中 "佈局範圍分析" 和 "佈局層次分析" 不可用的問題 issue #193
  • 修復 自動檢查更新功能可能導致應用 ANR 的問題 (試修) issue #186
  • 修復 檔案管理器示例程式碼資料夾點選 "向上" 按鈕後無法回到工作路徑頁面的問題 issue #129
  • 修復 程式碼編輯器使用替換功能時替換按鈕無法顯示的問題
  • 修復 程式碼編輯器長按刪除時可能導致應用崩潰的問題 (試修)
  • 修復 程式碼編輯器點選 fx 按鈕無法顯示模組函式快捷面板的問題
  • 修復 程式碼編輯器模組函式快捷面板按鈕函式名稱可能溢位的問題
  • 最佳化 程式碼編輯器模組函式快捷面板適配夜間模式
  • 最佳化 打包應用啟動頁面適配夜間模式並調整應用圖示佈局
  • 最佳化 打包應用頁面支援使用軟鍵盤 ENTER 鍵實現游標跳轉
  • 最佳化 打包應用頁面支援點選 ABI 標題及庫標題切換全選狀態
  • 最佳化 打包應用頁面預設 ABI 智慧選擇並增加不可選擇項的引導提示
  • 最佳化 檔案管理器根據檔案及資料夾的型別及特徵調整選單項的顯示情況
  • 最佳化 檔案管理器資料夾右鍵選單增加打包應用選項
  • 最佳化 無障礙服務啟用但功能異常時在 AutoJs6 主頁抽屜開關處將體現異常狀態
  • 最佳化 控制檯列印錯誤訊息時附加詳細的堆疊資訊
  • 最佳化 部分依賴或本地庫版本調整 CHANGELOG.md

v6.4.2

2023/11/15
  • 新增 dialogs.build() 選項引數屬性 inputSingleLine
  • 新增 console.setTouchable 方法 issue #122
  • 修復 ocr 模組部分方法無法識別區域引數的問題 issue #162 issue #175
  • 修復 Android 7.x 發現新版本時無法獲取版本詳情的問題
  • 修復 Android 14 申請截圖許可權時導致應用崩潰的問題
  • 修復 主頁抽屜快速切換 "浮動按鈕" 開關時可能導致應用崩潰的問題
  • 修復 使用選單關閉浮動按鈕時重啟應用後浮動按鈕可能依然顯示的問題
  • 修復 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 準備

下載 Android Studio Ladybug | 2024.2.1 Patch 2 版本 (按需選擇其一):

注: 上述版本釋出時間為 2024 年 10 月 31 日. 如需下載其他版本, 或上述連結已失效, 可訪問 Android Studio 發行版本歸檔 頁面.

安裝或解壓上述檔案, 執行 Android Studio 軟體 (如 "D:\android-studio\bin\studio64.exe").

Android SDK 準備

注: 如果計算機系統已安裝 Android SDK (安卓軟體開發工具包), 則可跳過此小節內容.

在 Android Studio 軟體中使用快捷鍵 CTRL + ALT + S 開啟設定頁面:

Appearance & Behavior (外觀與表現) -> 
System Settings (系統設定) -> 
Android SDK (安卓軟體開發工具包)

Android SDK Location (安卓軟體開發工具包位置) 處如果是空白內容, 可點選右側 Edit (編輯) 按鈕, 在彈出的視窗中多次點選 Next (下一步).

注: 過程中可能需要同意一個或多個相關協議才能繼續.

待相關資源下載並安裝完畢, 點選 Finish (完成) 按鈕.
上述 Android SDK Location (安卓軟體開發工具包位置) 處將自動完成路徑填寫, SDK 準備工作隨即完成.

Android SDK Tools 準備

AutoJs6 需要使用部分 SDK 工具 (如 NDK 及 CMake).

注: 如果計算機系統已安裝 AutoJs6 全部所需的 Android SDK Tools, 則可跳過此小節內容.

在 Android Studio 軟體中使用快捷鍵 CTRL + ALT + S 開啟設定頁面:

Appearance & Behavior (外觀與表現) -> 
System Settings (系統設定) -> 
Android SDK (安卓軟體開發工具包) -> 
SDK Tools (SDK 工具) (位於右側視窗)

勾選 Show Package Details (顯示包詳情), 依次點選 NDK 及 CMake, 確保相應版本的工具已勾選, SDK 工具的版本資訊位於 AutoJs6 專案根目錄的 version.properties 檔案中.

JDK 準備

AutoJs6 專案依賴的 JDK (Java 開發工具包) 發行版本不低於 17, 但建議不低於 19.

截至 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 新增.

AutoJs6 資源克隆

在 Android Studio 主頁面點選 Get from VCS (從版本控制系統獲取) 按鈕.
URL (統一資源定位地址) 處填入 https://github.com/SuperMonster003/AutoJs6.git,
Directory (目錄) 處可根據需要修改為特定路徑.
點選 Clone (克隆) 按鈕, 等待 AutoJs6 專案資源在裝置本地完成克隆.

注: 上述過程可能需要安裝 Git (分散式版本控制系統).

AutoJs6 專案構建

克隆完成後, Android Studio 將開啟 AutoJs6 的專案視窗, 並自動完成初步的 Dependencies (依賴) 下載及 Gradle 構建工作.

注: 上述過程可能非常耗時. 若網路條件欠佳, 可能需要重試多次 (點選 Retry 按鈕).

構建完成後, Android Studio 的 Build 標籤頁將出現類似 BUILD SUCCESSFUL in 1h 17m 34s 的訊息.

打包專案並生成可安裝到安卓裝置的 APK 檔案:

  • 除錯版 (Debug Version)
    • Build (構建) -> Build Bundle(s) / APK(s) -> Build APK(s)
    • 生成帶預設簽名的除錯版安裝包
    • 路徑示例: "D:\AutoJs6\app\build\outputs\apk\debug\"
  • 釋出版 (Release Version)
    • Build (構建) -> Generate Signed Bundle / APK
    • 選擇 APK 選項
    • 準備好簽名檔案 (新建或選取), 生成已簽名的釋出版安裝包
    • 路徑示例: "D:\AutoJs6\app\release\"

參閱: Android Docs


指令碼開發輔助


開發 AutoJs6 可執行的指令碼, 需使用合適的開發工具:

如需在 PC 上進行指令碼編寫與除錯, VSCode 外掛可以實現 PC 與手機的互聯:

使用開發工具編寫程式碼時, 程式碼智慧補全功能可以更好地輔助開發者完成程式碼編寫:

編寫程式碼時, AutoJs6 相關 API 及使用方式, 可隨時查閱應用文件:

現有的指令碼開發專案可作為參考, 激發個人指令碼專案的創作靈感:


貢獻參與


感謝每一位參與 AutoJs6 專案開發的貢獻人員.

貢獻人員 提交數 最近提交
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 檢視貢獻記錄.