Skip to content

Latest commit

 

History

History
501 lines (387 loc) · 41.9 KB

README-zh-Hant-HK.md

File metadata and controls

501 lines (387 loc) · 41.9 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 查看貢獻記錄.