AutoJs6 icon indicating copy to clipboard operation
AutoJs6 copied to clipboard

v6.5.0 captureScreen或ocr.detect 有卡住执行,不返回的情况,以前版本未遇到,更新完6.5.0后,出现多次了

Open nsy9601 opened this issue 1 year ago • 2 comments

	console.log('查找打卡按钮');
        i = 0;
	outLoop: while (true) {
		let src = images.captureScreen();
		let results = ocr.detect(src, new android.graphics.Rect(350, 1200, 720, 1610));
		for (let el of results) {
			if (el.label == '上班打卡' || el.label == '下班打卡') {
				click(el.bounds);
				sleep(1000);
				break outLoop;
			}
		}
		i++;
		if (i > 30) {
                        console.log('未找到打卡按钮');
			return false;
		}
		sleep(500);
	}
	console.log('找到打卡按钮并点击');

如上述代码,在日志是输出‘查找打卡按钮’后,脚本就卡住不再继续执行了。分析原因应该问题应该是出在captureScreen或ocr.detect上面,此问题不是每次都出现,故面不好确定具体是captureScreen引起的,还是ocr.detect引起的,后续我会在脚本的这两行之间再加调试输出代码检测,也请作者检查下这两个接口是否有其他原因导致不返回的情况.

另外有时候还出现下面的报错,不知道有没有关系

14:17:22.567/E: Failed to allocate a 80 byte allocation with 2475840 free bytes and 2417KB until OOM, target footprint 268435456, growth limit 268435456; giving up on allocation because <1% of heap free after GC.

java.lang.OutOfMemoryError: Failed to allocate a 80 byte allocation with 2475840 free bytes and 2417KB until OOM, target footprint 268435456, growth limit 268435456; giving up on allocation because <1% of heap free after GC.
	at org.mozilla.javascript.JavaMembers.reflect(JavaMembers.java:474)
	at org.mozilla.javascript.JavaMembers.<init>(JavaMembers.java:63)
	at org.mozilla.javascript.JavaMembers_jdk11.<init>(JavaMembers_jdk11.java:18)
	at org.mozilla.javascript.JavaMembers.createJavaMembers(JavaMembers.java:843)
	at org.mozilla.javascript.JavaMembers.lookupClass(JavaMembers.java:804)
	at org.mozilla.javascript.NativeJavaClass.initMembers(NativeJavaClass.java:45)
	at org.mozilla.javascript.NativeJavaObject.<init>(NativeJavaObject.java:53)
	at org.mozilla.javascript.NativeJavaClass.<init>(NativeJavaClass.java:39)
	at org.mozilla.javascript.NativeJavaClass.<init>(NativeJavaClass.java:35)
	at org.mozilla.javascript.WrapFactory.wrapJavaClass(WrapFactory.java:136)
	at org.mozilla.javascript.NativeJavaPackage.getPkgProperty(NativeJavaPackage.java:115)
	at org.mozilla.javascript.NativeJavaPackage.get(NativeJavaPackage.java:72)
	at org.mozilla.javascript.ScriptableObject.getProperty(ScriptableObject.java:2024)
	at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1706)
	at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1701)
	at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1549)
	at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1051)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:87)
	at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:383)
	at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3941)
	at org.mozilla.javascript.Context.callFunctionWithContinuations(Context.java:1253)
	at org.mozilla.javascript.Context.executeScriptWithContinuations(Context.java:1221)
	at org.autojs.autojs.engine.RhinoJavaScriptEngine.init(RhinoJavaScriptEngine.kt:102)
	at org.autojs.autojs.engine.LoopBasedJavaScriptEngine.init(LoopBasedJavaScriptEngine.java:112)
	at org.autojs.autojs.execution.RunnableScriptExecution.prepare(RunnableScriptExecution.java:65)
	at org.autojs.autojs.execution.RunnableScriptExecution.execute(RunnableScriptExecution.java:39)
	at org.autojs.autojs.execution.RunnableScriptExecution.execute(RunnableScriptExecution.java:34)
	at org.autojs.autojs.execution.RunnableScriptExecution.run(RunnableScriptExecution.java:28)
	at java.lang.Thread.run(Thread.java:1012)
14:17:22.570/E: exception on exit: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.autojs.autojs.runtime.api.Events.emit(java.lang.String, java.lang.Object[])' on a null object reference

nsy9601 avatar Dec 06 '23 06:12 nsy9601

我也是这个问题. 确定是 captureScreen 卡住了. 复现很简单. 做一个死循环,快速 captureScreen(); 防止内存溢出的前提下.可以将结果立即recycel(); 基本上两三次截图就卡住了. 会卡10来秒

tmkmk avatar Dec 18 '23 15:12 tmkmk

确实,我也遇到过多次,使用截图函数就会阻塞,设备iqoo7安卓13

sindon123 avatar Jan 31 '24 11:01 sindon123