一个支持无障碍服务的Android平台上的JavaScript IDE
Go to file
hyb1996 d5c38ae537 fix:
java.lang.IllegalStateException: Calling View methods on another thread than the UI thread.
	at com.android.webview.chromium.WebViewChromium.createThreadException(WebViewChromium.java:248)
	at com.android.webview.chromium.WebViewChromium.checkThread(WebViewChromium.java:263)
	at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:163)
	at android.webkit.WebView.<init>(WebView.java:548)
	at android.webkit.WebView.<init>(WebView.java:483)
	at android.webkit.WebView.<init>(WebView.java:466)
	at android.webkit.WebView.<init>(WebView.java:453)
	at org.autojs.autojs.ui.widget.CommonMarkdownView.<init>(CommonMarkdownView.java:49)
	at java.lang.reflect.Constructor.newInstance(Native Method)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
	at android.view.LayoutInflater.createView(LayoutInflater.java:611)
	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:747)
	at android.view.LayoutInflater.rInflate(LayoutInflater.java:810)
	at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
	at android.view.LayoutInflater.inflate(LayoutInflater.java:508)
	at android.view.LayoutInflater.inflate(LayoutInflater.java:418)
	at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
	at android.view.View.inflate(View.java:18461)
	at org.autojs.autojs.ui.update.UpdateInfoDialogBuilder.updateInfo(UpdateInfoDialogBuilder.java:45)
	at org.autojs.autojs.ui.update.UpdateInfoDialogBuilder.<init>(UpdateInfoDialogBuilder.java:40)
	at org.autojs.autojs.ui.update.VersionGuard.showUpdateInfoIfNeeded(VersionGuard.java:58)
	at org.autojs.autojs.ui.update.VersionGuard.access$200(VersionGuard.java:21)
	at org.autojs.autojs.ui.update.VersionGuard$1.onNext(VersionGuard.java:49)
	at org.autojs.autojs.ui.update.VersionGuard$1.onNext(VersionGuard.java:42)
	at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.onNext(ObservableSubscribeOn.java:58)
	at com.jakewharton.retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:51)
	at com.jakewharton.retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:37)
	at com.jakewharton.retrofit2.adapter.rxjava2.CallObservable.subscribeActual(CallObservable.java:43)
	at io.reactivex.Observable.subscribe(Observable.java:10901)
	at com.jakewharton.retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
	at io.reactivex.Observable.subscribe(Observable.java:10901)
	at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
	at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452)
	at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61)
	at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52)
	at java.util.concurrent.FutureTask.run(FutureTask.java:237)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
	at java.lang.Thread.run(Thread.java:818)
2018-07-11 16:57:41 +08:00
.idea Not show ad on first day 2018-07-09 16:28:50 +08:00
app fix: 2018-07-11 16:57:41 +08:00
autojs Not show ad on first day 2018-07-09 16:28:50 +08:00
automator feat(autojs): UiSelector.indexInParent 2018-05-28 13:14:59 +08:00
common feat(autojs): requestScreenCapture() supports changing orientation automatically and dynamically 2018-06-03 11:12:01 +08:00
coolapk/release add missing files 2018-05-25 20:09:51 +08:00
gradle/wrapper add: timed task 2017-11-28 02:26:05 +08:00
inrt fix(app): change documentation source and refresh cannot apply changes immediately 2018-06-03 21:07:11 +08:00
screen-captures update readme 2017-10-25 22:46:14 +08:00
.gitignore fix: FloatyWindow.setSize() not working 2017-12-29 20:53:51 +08:00
.gitmodules add: submodule docs 2017-09-11 13:43:48 +08:00
build.gradle just to save works and use another computer to code 2017-11-27 21:11:49 +08:00
gradle.properties add: build apk from js file 2017-10-24 15:49:45 +08:00
gradlew Add: floating window, layout inspector 2017-03-12 23:10:58 +08:00
gradlew.bat initial commit 2017-01-27 09:05:38 +08:00
LICENSE.md add: supports for daily task and disposable task 2017-11-28 20:59:29 +08:00
Readme.md refactor: rename package name to 'org.autojs.autojs' 2018-05-25 13:20:00 +08:00
settings.gradle make autojs module more independent 2017-07-01 15:09:01 +08:00
version.json Not show ad on first day 2018-07-09 16:28:50 +08:00

Auto.js

简介

一个主要由无障碍服务实现的不需要Root权限的类似按键精灵的自动操作软件,可以实现自动点击、滑动、输入文字、打开应用等。

同时有Sublime Text 插件可提供基础的在桌面开发的功能。

下载地址:酷安

Alpha版本Releases

特性

  • 简单易用的自动操作函数
  • 悬浮窗录制和运行
  • 更专业&强大的选择器API提供对屏幕上的控件的寻找、遍历、获取信息、操作等。类似于Google的UI测试框架UiAutomator您也可以把他当做移动版UI测试框架使用
  • 采用JavaScript为脚本语言并支持代码补全、变量重命名、代码格式化、查找替换等功能可以作为一个JavaScript IDE使用
  • 支持使用e4x编写界面并可以将JavaScript打包为apk文件您可以用它来开发小工具应用
  • 支持使用Root权限以提供更强大的屏幕点击、滑动、录制功能和运行shell命令。录制录制可产生js文件或二进制文件录制动作的回放比较流畅
  • 提供截取屏幕、保存截图、图片找色等函数,可进行简单的游戏脚本制作;未来将加入找图功能
  • 可作为Tasker插件使用结合Tasker可胜任日常工作流
  • 带有界面分析工具类似Android Studio的LayoutInspector可以分析界面层次和范围、获取界面上的控件信息

与脚本精灵、按键精灵等软件的区别是:

  • Auto.js主要以自动化、工作流为目标更多地是方便日常生活工作例如启动游戏时自动屏蔽通知、一键与特定联系人微信视频知乎上出现过该问题老人难以进行复杂的操作和子女进行微信视频
  • Auto.js兼容性更好。以坐标为基础的按键精灵、脚本精灵很容易出现分辨率问题而以控件为基础的Auto.js则没有这个问题
  • Auto.js执行大部分任务不需要root权限。只有需要精确坐标点击、滑动的相关函数才需要root权限

尽管如此Auto.js的大部分用户仍然是用来点赞、签到、刷游戏的:)

信息

  • 官方论坛: autojs.org
  • 文档:可在这里查看在线文档。目前文档仍然不完善。
  • 示例:可在这里查看一些示例,或者直接在应用内查看和运行。

截图

screen-capture1

screen-capture2

screen-capture3

screen-capture4

screen-capture5

screen-capture5

screen-capture5

screen-capture5

License

基于Mozilla Public License Version 2.0并附加以下条款:

  • 非商业性使用 — 不得将此项目及其衍生的项目的源代码和二进制产品用于任何商业和盈利用途