6.7.0 - Alpha11 - 新增 crash 全局方法, 用于测试崩溃报告页面

This commit is contained in:
SuperMonster003
2025-11-19 13:55:14 +08:00
parent d51481333e
commit d1470346f3
4 changed files with 34 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ import org.autojs.autojs.runtime.ScriptRuntime;
import org.autojs.autojs.runtime.api.augment.jsox.Jsox;
import org.autojs.autojs.script.JavaScriptSource;
import org.autojs.autojs.script.ScriptSource;
import org.autojs.autojs.tool.CrashHandlerTestFunction;
import org.autojs.autojs6.R;
import org.jetbrains.annotations.NotNull;
@@ -45,6 +46,7 @@ public abstract class JavaScriptEngine extends ScriptEngine.AbstractScriptEngine
mRuntime = runtime;
mRuntime.engines.setCurrentEngine(this);
put("runtime", runtime);
put("crash", new CrashHandlerTestFunction());
}
public void emit(String eventName, Object... args) {

View File

@@ -94,6 +94,7 @@ open class RhinoJavaScriptEngine(private val androidContext: android.content.Con
override fun forceStop() {
Log.d(TAG, "forceStop: interrupt Thread: $thread")
thread.interrupt()
runtime.cancelScriptJobs()
}
@Synchronized

View File

@@ -0,0 +1,30 @@
package org.autojs.autojs.tool
import android.os.Handler
import android.os.Looper
import org.autojs.autojs.util.RhinoUtils.UNDEFINED
import org.mozilla.javascript.BaseFunction
import org.mozilla.javascript.Context
import org.mozilla.javascript.Scriptable
import org.mozilla.javascript.Undefined
class CrashHandlerTestFunction : BaseFunction() {
override fun call(
cx: Context?,
scope: Scriptable?,
thisObj: Scriptable?,
args: Array<out Any>?,
): Undefined {
val msg = if (!args.isNullOrEmpty()) Context.toString(args[0]) else "CrashHandler test"
Handler(Looper.getMainLooper()).post {
throw RuntimeException(msg)
}
return UNDEFINED
}
override fun getArity(): Int = 1
override fun getFunctionName(): String = "crash"
}