SuperMonster003 / AutoJs6

安卓平台 JavaScript 自动化工具 (Auto.js 二次开发项目)
https://docs.autojs6.com
Mozilla Public License 2.0
2.44k stars 719 forks source link

定时运行的脚本在运行过程中有很大的机率会出现假死的现象 #167

Open nsy9601 opened 11 months ago

nsy9601 commented 11 months ago

感觉就像是autojs6在后台假死了一样,要手动打开autojs6应用脚本才可能继续运行,但好像有时候重新打开autojs6也不行,我通过脚本日志记录查看,每次假死现在大约都是出现在如home(),sleep(),滑动屏幕以及pickup()这类的语句上,如下面的代码:

console.log('开始运行XXX'); home(); sleep(1000); console.log('第一步XXX');

出现假现时查看运行日志,结果出现了'开始运行XXX',但下一条日志就没有输出,假死现象不仅仅是home()和sleep()这样的语句,根据我的日志记录来看,有时候也会假死在pickup()及滑动屏幕等语句上,不是固定的,找不到原因,脚本调试时也正常,比较头痛。

nsy9601 commented 11 months ago

刚又观察了一次定时执行的任务,我在home()和sleep(1000)之间又加了一句日志输出,能正常输出,但sleep(1000)后的日志就不输出了,问题好像在sleep上,这时把autojs手动打开,脚本立即就回复执行了,但是看日志上的时间,明显在sleep(1000)时卡住了。

nsy9601 commented 11 months ago

请检查一下sleep()的实现过程中,在执行定时任务的过程中(这时autojs为后台运行状态)是否有bug

SuperMonster003 commented 11 months ago

感谢反馈, 我会根据提供的信息排查并尝试解决上述问题.

Sent from my XQ-DQ72 using FastHub

nsy9601 commented 10 months ago

感谢反馈, 我会根据提供的信息排查并尝试解决上述问题.

Sent from my XQ-DQ72 using FastHub

今天发生的崩溃信息,请查看一下有没有用 IMG_20231108_141858 IMG_20231108_142006 Screenshot_2023-11-08-14-11-53-241_com miui thirdappassistant Screenshot_2023-11-08-14-12-03-947_com miui thirdappassistant

nsy9601 commented 10 months ago

Version: 2158 Android: 33 java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 java.util.ArrayList.remove(ArrayList.java:503) com.bignerdranch.expandablerecyclerview.ExpandableRecyclerAdapter.notifyChildRemoved(ExpandableRecyclerAdapter.java:1195) org.autojs.autojs.ui.main.task.TaskListRecyclerView$1.lambda$onFinish$1(TaskListRecyclerView.java:79) org.autojs.autojs.ui.main.task.TaskListRecyclerView$1.$r8$lambda$zXmD6VC5c5jt97gBXTy2K8wBLu0(Unknown Source:0) org.autojs.autojs.ui.main.task.TaskListRecyclerView$1$$ExternalSyntheticLambda1.run(Unknown Source:4) android.os.Handler.handleCallback(Handler.java:942) android.os.Handler.dispatchMessage(Handler.java:99) android.os.Looper.loopOnce(Looper.java:210) android.os.Looper.loop(Looper.java:299) android.app.ActivityThread.main(ActivityThread.java:8123) java.lang.reflect.Method.invoke(Native Method) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

感谢反馈, 我会根据提供的信息排查并尝试解决上述问题.

Sent from my XQ-DQ72 using FastHub

nsy9601 commented 10 months ago

感谢反馈, 我会根据提供的信息排查并尝试解决上述问题.

Sent from my XQ-DQ72 using FastHub

17:33:11.102/E: Java 方法 java.lang.String.replace 匹配 JavaScript 参数类型 (function,string) 不具备唯一性; 候选方法: class java.lang.String replace(char,char) class java.lang.String replace(java.lang.CharSequence,java.lang.CharSequence). (file:///android_asset/modules/util.js#1374) Java 方法 java.lang.String.replace 匹配 JavaScript 参数类型 (function,string) 不具备唯一性; 候选方法: class java.lang.String replace(char,char) class java.lang.String replace(java.lang.CharSequence,java.lang.CharSequence). at file:///android_asset/modules/util.js:1374:0 at file:///android_asset/modules/util.js:1369:0 at file:///android_asset/modules/util.js:856:0 at file:///android_asset/modules/console.js:115:0 at captureAndOcr ($remote/main.js:166:0) at $remote/main.js:211:0

nsy9601 commented 10 months ago

感谢反馈, 我会根据提供的信息排查并尝试解决上述问题.

Sent from my XQ-DQ72 using FastHub

可能和无障碍服务有关,之前我使用shizuku('pm grant org.autojs.autojs6 android.permission.WRITE_SECURE_SETTINGS')给app设置了无障碍权限,看似无障碍是始终打开的,但是有时就是获取不到,还是需要在应用里手动关闭一下无障碍再重新打开脚本才恢复正常。

nsy9601 commented 10 months ago

感谢反馈, 我会根据提供的信息排查并尝试解决上述问题.

Sent from my XQ-DQ72 using FastHub

问题已确认是无障碍服务的问题,今天的定时任务脚本又出问题了,我看了一下无障碍服务是故障的,如图: Screenshot_2023-11-09-08-30-51-816_com android settings Screenshot_2023-11-09-08-31-00-335_com android settings

nsy9601 commented 10 months ago

无法运行,此服务出现故障,可否修复,经常这样,定时任务就无法用了

nsy9601 commented 10 months ago

注:己经把autojs6设为自启动,并把相应的电源管理设为无限制了

nsy9601 commented 10 months ago

能否给脚本加一个可以手动控制开启和关闭无障碍模式的开关,这样就可以在脚本中先关才无障碍,再开启一下,防止长时间后台运行出现无障碍服务故障的情况。

nsy9601 commented 10 months ago

之所以要增加开启和关闭无障碍的脚本语句,是因为出现服务故障时,使用auto.serivce检测服务仍是开启状态,且auto语句也无异常,所以需要手动给无障碍服务重启一下才行。帮需要在脚本中操作开关。

可否给回复一下,证明你看到了,否在我就再开一个主题说明此问题了。

感谢反馈, 我会根据提供的信息排查并尝试解决上述问题.

Sent from my XQ-DQ72 using FastHub

SuperMonster003 commented 10 months ago

感谢反馈, 既然问题已确定, 我会针对性做出优化, 请关注后续版本更新.

Sent from my XQ-DQ72 using FastHub

nsy9601 commented 10 months ago

能优先给脚本增加一条实现如autojs6本身菜单上开启和关闭无障碍服务的功能吗,只要脚本里可以实现这个功能,就能很大程度上解决上面的问题了

nsy9601 commented 10 months ago

shizuku('pm grant org.autojs.autojs6 android.permission.WRITE_SECURE_SETTINGS')); shizuku('pm revoke org.autojs.autojs6 android.permission.WRITE_SECURE_SETTINGS')); 我使用上面的语句试过打开和关闭都不行,这只是授权,并不能真正开启无障碍服务

shizuku('settings put secure enabled_accessibility_services org.autojs.autojs6') 这个语句也不能开启,不知道还有什么方法能实现

nsy9601 commented 10 months ago

已通过 shizuku('settings put secure enabled_accessibility_services null') //关闭无障碍 shizuku('settings put secure enabled_accessibility_services org.autojs.autojs6/org.autojs.autojs.core.accessibility.AccessibilityService') //开启无障碍 实现了无障碍的重启功能,但是必须要借助shizuku应用才行,期待下面的版本可以无需借助shizuku就可以实现无障碍的重启功能,这样就不需要时时保证shizuku应用在后台运行了(因为我的是定时任务)

SuperMonster003 commented 10 months ago

参阅 #181.