From 472bd46b875943c19136dc8d05a4d187fb0c0584 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sun, 7 May 2017 23:32:53 +0800 Subject: [PATCH] Rename and refactor autojs to support future developing of other script language --- app/build.gradle | 8 +- .../stardust/scriptdroid/autojs/AutoJs.java | 21 +- .../external/open/RunIntentActivity.java | 6 +- .../stardust/scriptdroid/script/Scripts.java | 21 +- .../ui/main/task/TaskListRecyclerView.java | 12 +- autojs/src/main/AndroidManifest.xml | 2 +- .../stardust/autojs/ScriptEngineService.java | 51 +-- .../autojs/ScriptEngineServiceBuilder.java | 11 +- ....java => AbstractScriptEngineManager.java} | 52 +-- .../autojs/engine/RhinoJavaScriptEngine.java | 16 +- .../engine/RhinoJavaScriptEngineManager.java | 43 +- ...avaScriptEngine.java => ScriptEngine.java} | 8 +- .../autojs/engine/ScriptEngineManager.java | 33 ++ .../execution/RunnableScriptExecution.java | 18 +- .../ScriptExecuteActivity.java | 32 +- .../autojs/execution/ScriptExecution.java | 6 +- .../autojs/runtime/AbstractScriptRuntime.java | 4 +- .../autojs/runtime/ScriptRuntime.java | 4 +- .../autojs/script/FileScriptSource.java | 13 + .../stardust/autojs/script/ScriptSource.java | 17 + .../autojs/script/ScriptSourceWithInit.java | 33 -- .../autojs/script/SequenceScriptSource.java | 54 +++ .../autojs/script/StringScriptSource.java | 10 + .../java/com/stardust/automator/UiObject.java | 2 +- .../java/com/stardust/io/ConcatReader.java | 424 ++++++++++++++++++ 25 files changed, 717 insertions(+), 184 deletions(-) rename autojs/src/main/java/com/stardust/autojs/engine/{JavaScriptEngineManager.java => AbstractScriptEngineManager.java} (55%) rename autojs/src/main/java/com/stardust/autojs/engine/{JavaScriptEngine.java => ScriptEngine.java} (73%) create mode 100644 autojs/src/main/java/com/stardust/autojs/engine/ScriptEngineManager.java rename autojs/src/main/java/com/stardust/autojs/{engine => execution}/ScriptExecuteActivity.java (72%) delete mode 100644 autojs/src/main/java/com/stardust/autojs/script/ScriptSourceWithInit.java create mode 100644 autojs/src/main/java/com/stardust/autojs/script/SequenceScriptSource.java create mode 100644 common/src/main/java/com/stardust/io/ConcatReader.java diff --git a/app/build.gradle b/app/build.gradle index bc4cba8f..9d689554 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -55,11 +55,11 @@ android { } dexcount { format = "list" - includeClasses = false + includeClasses = true includeFieldCount = true - includeTotalMethodCount = false - orderByMethodCount = false - verbose = false + includeTotalMethodCount = true + orderByMethodCount = true + verbose = true maxTreeDepth = Integer.MAX_VALUE teamCityIntegration = false enableForInstantRun = false diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java b/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java index 63ae97a2..d09d9b3f 100644 --- a/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java +++ b/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java @@ -7,14 +7,18 @@ import android.support.annotation.Nullable; import com.stardust.autojs.ScriptEngineService; import com.stardust.autojs.ScriptEngineServiceBuilder; import com.stardust.autojs.engine.NodeJsJavaScriptEngineManager; +import com.stardust.autojs.engine.ScriptEngineManager; import com.stardust.autojs.runtime.*; import com.stardust.automator.AccessibilityEventCommandHost; import com.stardust.automator.simple_action.SimpleActionPerformHost; +import com.stardust.pio.PFile; +import com.stardust.pio.UncheckedIOException; import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.Pref; import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.script.StorageScriptProvider; import com.stardust.scriptdroid.ui.console.StardustConsole; +import com.stardust.util.AssetsCache; import com.stardust.util.Supplier; import com.stardust.util.UiHandler; import com.stardust.view.accessibility.AccessibilityInfoProvider; @@ -25,6 +29,8 @@ import com.stardust.scriptdroid.tool.AccessibilityServiceTool; import com.stardust.scriptdroid.ui.console.JraskaConsole; import com.stardust.view.accessibility.AccessibilityServiceUtils; +import java.io.IOException; + /** * Created by Stardust on 2017/4/2. @@ -33,6 +39,7 @@ import com.stardust.view.accessibility.AccessibilityServiceUtils; public class AutoJs implements AccessibilityBridge { private static AutoJs instance; + private static final String INIT_SCRIPT_PATH = "js/autojs_init.js"; public static AutoJs getInstance() { return instance; @@ -54,8 +61,7 @@ public class AutoJs implements AccessibilityBridge { private AutoJs(final Context context) { mUiHandler = new UiHandler(context); mAccessibilityInfoProvider = new AccessibilityInfoProvider(context.getPackageManager()); - NodeJsJavaScriptEngineManager manager = new NodeJsJavaScriptEngineManager(context); - manager.setRequirePath(StorageScriptProvider.DEFAULT_DIRECTORY_PATH); + ScriptEngineManager manager = createScriptEngineManager(context); mScriptEngineService = new ScriptEngineServiceBuilder() .uiHandler(mUiHandler) .globalConsole(new JraskaConsole()) @@ -72,6 +78,17 @@ public class AutoJs implements AccessibilityBridge { mScriptEngineService.registerGlobalScriptExecutionListener(new ScriptExecutionGlobalListener()); } + private NodeJsJavaScriptEngineManager createScriptEngineManager(Context context) { + NodeJsJavaScriptEngineManager manager = new NodeJsJavaScriptEngineManager(context); + manager.setRequirePath(StorageScriptProvider.DEFAULT_DIRECTORY_PATH); + try { + manager.setInitScript(PFile.read(context.getAssets().open(INIT_SCRIPT_PATH))); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + return manager; + } + private void addAccessibilityServiceDelegates() { AccessibilityWatchDogService.addDelegate(100, mAccessibilityInfoProvider); AccessibilityWatchDogService.addDelegate(300, mAccessibilityActionRecorder); diff --git a/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java b/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java index bc572cba..651d6ba6 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java @@ -6,10 +6,9 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.widget.Toast; -import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.script.PathChecker; import com.stardust.autojs.script.FileScriptSource; -import com.stardust.autojs.script.ScriptSourceWithInit; +import com.stardust.autojs.script.SequenceScriptSource; import com.stardust.autojs.script.ScriptSource; import com.stardust.autojs.script.StringScriptSource; import com.stardust.scriptdroid.external.CommonUtils; @@ -41,7 +40,8 @@ public class RunIntentActivity extends Activity { if (path == null && script != null) { source = new StringScriptSource(script); } else if (path != null && new PathChecker(this).checkAndToastError(path)) { - source = new ScriptSourceWithInit(new StringScriptSource(script), new FileScriptSource(path)); + ScriptSource fileScriptSource = new FileScriptSource(path); + source = new SequenceScriptSource(fileScriptSource.getName(), new StringScriptSource(script), fileScriptSource); } if (source != null) { Scripts.run(source); diff --git a/app/src/main/java/com/stardust/scriptdroid/script/Scripts.java b/app/src/main/java/com/stardust/scriptdroid/script/Scripts.java index cb199308..be221ea7 100644 --- a/app/src/main/java/com/stardust/scriptdroid/script/Scripts.java +++ b/app/src/main/java/com/stardust/scriptdroid/script/Scripts.java @@ -10,7 +10,7 @@ import com.stardust.autojs.execution.SimpleScriptExecutionListener; import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.script.FileScriptSource; import com.stardust.autojs.script.ScriptSource; -import com.stardust.autojs.script.ScriptSourceWithInit; +import com.stardust.autojs.script.SequenceScriptSource; import com.stardust.autojs.script.StringScriptSource; import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.BuildConfig; @@ -52,8 +52,6 @@ public class Scripts { } }; - private static final String INIT_SCRIPT_PATH = "js/autojs_init.js"; - private static ScriptSource initScriptSource; public static void openByOtherApps(String path) { @@ -87,27 +85,16 @@ public class Scripts { } public static ScriptExecution run(ScriptSource source) { - return AutoJs.getInstance().getScriptEngineService().execute(wrappedWithInitSource(source)); - } - - private static ScriptSource wrappedWithInitSource(ScriptSource source) { - return new ScriptSourceWithInit(getInitScriptSource(), source); + return AutoJs.getInstance().getScriptEngineService().execute(source); } public static ScriptExecution runWithBroadcastSender(ScriptSource scriptSource) { - return AutoJs.getInstance().getScriptEngineService().execute(wrappedWithInitSource(scriptSource), BROADCAST_SENDER_SCRIPT_EXECUTION_LISTENER); + return AutoJs.getInstance().getScriptEngineService().execute(scriptSource, BROADCAST_SENDER_SCRIPT_EXECUTION_LISTENER); } public static ScriptExecution run(Context context, Sample file) { ScriptSource source = new StringScriptSource(file.name, AssetsCache.get(context.getAssets(), file.path)); - return AutoJs.getInstance().getScriptEngineService().execute(wrappedWithInitSource(source)); + return AutoJs.getInstance().getScriptEngineService().execute(source); } - private static ScriptSource getInitScriptSource() { - if(initScriptSource == null || BuildConfig.DEBUG){ - String initScript = AssetsCache.get(App.getApp().getAssets(), INIT_SCRIPT_PATH); - initScriptSource = new StringScriptSource(initScript); - } - return initScriptSource; - } } diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/task/TaskListRecyclerView.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/task/TaskListRecyclerView.java index 4a6e0049..4771dc96 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/task/TaskListRecyclerView.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/task/TaskListRecyclerView.java @@ -15,8 +15,8 @@ import com.stardust.autojs.ScriptEngineService; import com.stardust.autojs.execution.ScriptExecution; import com.stardust.autojs.execution.ScriptExecutionListener; import com.stardust.autojs.execution.SimpleScriptExecutionListener; -import com.stardust.autojs.engine.JavaScriptEngine; -import com.stardust.autojs.engine.JavaScriptEngineManager; +import com.stardust.autojs.engine.ScriptEngine; +import com.stardust.autojs.engine.AbstractScriptEngineManager; import com.stardust.autojs.script.ScriptSource; import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.autojs.AutoJs; @@ -29,7 +29,7 @@ import java.util.List; * Created by Stardust on 2017/3/24. */ -public class TaskListRecyclerView extends ThemeColorRecyclerView implements JavaScriptEngineManager.EngineLifecycleCallback { +public class TaskListRecyclerView extends ThemeColorRecyclerView implements AbstractScriptEngineManager.EngineLifecycleCallback { private final OnClickListener mOnItemClickListenerProxy = new OnClickListener() { @@ -52,7 +52,7 @@ public class TaskListRecyclerView extends ThemeColorRecyclerView implements Java }; - private final List mScriptEngines = new ArrayList<>(); + private final List mScriptEngines = new ArrayList<>(); private Adapter mAdapter; private final ScriptEngineService mScriptEngineService = AutoJs.getInstance().getScriptEngineService(); private ScriptExecutionListener mScriptExecutionListener = new SimpleScriptExecutionListener() { @@ -129,7 +129,7 @@ public class TaskListRecyclerView extends ThemeColorRecyclerView implements Java } @Override - public void onEngineCreate(final JavaScriptEngine engine) { + public void onEngineCreate(final ScriptEngine engine) { synchronized (mScriptEngines) { post(new Runnable() { @Override @@ -142,7 +142,7 @@ public class TaskListRecyclerView extends ThemeColorRecyclerView implements Java } @Override - public void onEngineRemove(final JavaScriptEngine engine) { + public void onEngineRemove(final ScriptEngine engine) { post(new Runnable() { @Override public void run() { diff --git a/autojs/src/main/AndroidManifest.xml b/autojs/src/main/AndroidManifest.xml index dd8c2074..fc3b0229 100644 --- a/autojs/src/main/AndroidManifest.xml +++ b/autojs/src/main/AndroidManifest.xml @@ -6,7 +6,7 @@ - + diff --git a/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java b/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java index 3df0c4f4..1835eb87 100644 --- a/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java +++ b/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java @@ -1,11 +1,11 @@ package com.stardust.autojs; import android.content.Context; -import android.util.Log; -import com.stardust.autojs.engine.JavaScriptEngine; -import com.stardust.autojs.engine.JavaScriptEngineManager; -import com.stardust.autojs.engine.ScriptExecuteActivity; +import com.stardust.autojs.engine.AbstractScriptEngineManager; +import com.stardust.autojs.engine.ScriptEngine; +import com.stardust.autojs.engine.ScriptEngineManager; +import com.stardust.autojs.execution.ScriptExecuteActivity; import com.stardust.autojs.execution.ExecutionConfig; import com.stardust.autojs.execution.RunnableScriptExecution; import com.stardust.autojs.execution.ScriptExecution; @@ -23,14 +23,9 @@ import com.stardust.util.UiHandler; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; -import java.text.DateFormat; -import java.util.Arrays; -import java.util.Date; import java.util.LinkedHashSet; import java.util.Set; -import javax.microedition.khronos.opengles.GL; - import static com.stardust.autojs.runtime.ScriptInterruptedException.causedByInterrupted; /** @@ -63,7 +58,7 @@ public class ScriptEngineService { private final Context mContext; private UiHandler mUiHandler; private final Console mGlobalConsole; - private final JavaScriptEngineManager mJavaScriptEngineManager; + private final ScriptEngineManager mScriptEngineManager; private final EngineLifecycleObserver mEngineLifecycleObserver = new EngineLifecycleObserver(); private ScriptExecutionObserver mScriptExecutionObserver = new ScriptExecutionObserver(); @@ -71,9 +66,9 @@ public class ScriptEngineService { mRuntimeSupplier = builder.mRuntimeSupplier; mUiHandler = builder.mUiHandler; mContext = mUiHandler.getContext(); - mJavaScriptEngineManager = builder.mJavaScriptEngineManager; + mScriptEngineManager = builder.mScriptEngineManager; mGlobalConsole = builder.mGlobalConsole; - mJavaScriptEngineManager.setEngineLifecycleCallback(mEngineLifecycleObserver); + mScriptEngineManager.setEngineLifecycleCallback(mEngineLifecycleObserver); mScriptExecutionObserver.registerScriptExecutionListener(GLOBAL_LISTENER); EVENT_BUS.register(this); } @@ -82,8 +77,8 @@ public class ScriptEngineService { return mGlobalConsole; } - public JavaScriptEngine createScriptEngine() { - JavaScriptEngine engine = mJavaScriptEngineManager.createEngine(); + public ScriptEngine createScriptEngine() { + ScriptEngine engine = mScriptEngineManager.createEngine(); return engine; } @@ -91,11 +86,11 @@ public class ScriptEngineService { return mRuntimeSupplier.get(); } - public void registerEngineLifecycleCallback(JavaScriptEngineManager.EngineLifecycleCallback engineLifecycleCallback) { + public void registerEngineLifecycleCallback(AbstractScriptEngineManager.EngineLifecycleCallback engineLifecycleCallback) { mEngineLifecycleObserver.registerCallback(engineLifecycleCallback); } - public void unregisterEngineLifecycleCallback(JavaScriptEngineManager.EngineLifecycleCallback engineLifecycleCallback) { + public void unregisterEngineLifecycleCallback(AbstractScriptEngineManager.EngineLifecycleCallback engineLifecycleCallback) { mEngineLifecycleObserver.unregisterCallback(engineLifecycleCallback); } @@ -154,7 +149,7 @@ public class ScriptEngineService { } public int stopAll() { - return mJavaScriptEngineManager.stopAll(); + return mScriptEngineManager.stopAll(); } @@ -167,43 +162,43 @@ public class ScriptEngineService { } public String[] getGlobalFunctions() { - return mJavaScriptEngineManager.getGlobalFunctions(); + return mScriptEngineManager.getGlobalFunctions(); } - public Set getEngines() { - return mJavaScriptEngineManager.getEngines(); + public Set getEngines() { + return mScriptEngineManager.getEngines(); } - private static class EngineLifecycleObserver implements JavaScriptEngineManager.EngineLifecycleCallback { + private static class EngineLifecycleObserver implements AbstractScriptEngineManager.EngineLifecycleCallback { - private final Set mEngineLifecycleCallbacks = new LinkedHashSet<>(); + private final Set mEngineLifecycleCallbacks = new LinkedHashSet<>(); @Override - public void onEngineCreate(JavaScriptEngine engine) { + public void onEngineCreate(ScriptEngine engine) { synchronized (mEngineLifecycleCallbacks) { - for (JavaScriptEngineManager.EngineLifecycleCallback callback : mEngineLifecycleCallbacks) { + for (AbstractScriptEngineManager.EngineLifecycleCallback callback : mEngineLifecycleCallbacks) { callback.onEngineCreate(engine); } } } @Override - public void onEngineRemove(JavaScriptEngine engine) { + public void onEngineRemove(ScriptEngine engine) { synchronized (mEngineLifecycleCallbacks) { - for (JavaScriptEngineManager.EngineLifecycleCallback callback : mEngineLifecycleCallbacks) { + for (AbstractScriptEngineManager.EngineLifecycleCallback callback : mEngineLifecycleCallbacks) { callback.onEngineRemove(engine); } } } - void registerCallback(JavaScriptEngineManager.EngineLifecycleCallback callback) { + void registerCallback(AbstractScriptEngineManager.EngineLifecycleCallback callback) { synchronized (mEngineLifecycleCallbacks) { mEngineLifecycleCallbacks.add(callback); } } - void unregisterCallback(JavaScriptEngineManager.EngineLifecycleCallback callback) { + void unregisterCallback(AbstractScriptEngineManager.EngineLifecycleCallback callback) { synchronized (mEngineLifecycleCallbacks) { mEngineLifecycleCallbacks.remove(callback); } diff --git a/autojs/src/main/java/com/stardust/autojs/ScriptEngineServiceBuilder.java b/autojs/src/main/java/com/stardust/autojs/ScriptEngineServiceBuilder.java index f8286a2b..3d67f05a 100644 --- a/autojs/src/main/java/com/stardust/autojs/ScriptEngineServiceBuilder.java +++ b/autojs/src/main/java/com/stardust/autojs/ScriptEngineServiceBuilder.java @@ -1,8 +1,7 @@ package com.stardust.autojs; -import android.content.Context; - -import com.stardust.autojs.engine.JavaScriptEngineManager; +import com.stardust.autojs.engine.AbstractScriptEngineManager; +import com.stardust.autojs.engine.ScriptEngineManager; import com.stardust.autojs.runtime.ScriptRuntime; import com.stardust.autojs.runtime.api.Console; import com.stardust.util.Supplier; @@ -15,7 +14,7 @@ import com.stardust.util.UiHandler; public class ScriptEngineServiceBuilder { Supplier mRuntimeSupplier; - JavaScriptEngineManager mJavaScriptEngineManager; + ScriptEngineManager mScriptEngineManager; Console mGlobalConsole; UiHandler mUiHandler; @@ -33,8 +32,8 @@ public class ScriptEngineServiceBuilder { return this; } - public ScriptEngineServiceBuilder engineManger(JavaScriptEngineManager manager) { - mJavaScriptEngineManager = manager; + public ScriptEngineServiceBuilder engineManger(ScriptEngineManager manager) { + mScriptEngineManager = manager; return this; } diff --git a/autojs/src/main/java/com/stardust/autojs/engine/JavaScriptEngineManager.java b/autojs/src/main/java/com/stardust/autojs/engine/AbstractScriptEngineManager.java similarity index 55% rename from autojs/src/main/java/com/stardust/autojs/engine/JavaScriptEngineManager.java rename to autojs/src/main/java/com/stardust/autojs/engine/AbstractScriptEngineManager.java index eecf4444..0d1f86cf 100644 --- a/autojs/src/main/java/com/stardust/autojs/engine/JavaScriptEngineManager.java +++ b/autojs/src/main/java/com/stardust/autojs/engine/AbstractScriptEngineManager.java @@ -17,37 +17,28 @@ import java.util.Set; * Created by Stardust on 2017/1/27. */ -public abstract class JavaScriptEngineManager { +public abstract class AbstractScriptEngineManager implements ScriptEngineManager { - public interface EngineLifecycleCallback { - - void onEngineCreate(JavaScriptEngine engine); - - void onEngineRemove(JavaScriptEngine engine); - } - - private static final String TAG = "JavaScriptEngineManager"; + private static final String TAG = "AbstractScriptEngineManager"; private Map mGlobalVariableMap = new HashMap<>(); - private final Set mEngines = new HashSet<>(); + private final Set mEngines = new HashSet<>(); private EngineLifecycleCallback mEngineLifecycleCallback; - private final ScriptSource INIT_SCRIPT; private android.content.Context mContext; - public JavaScriptEngineManager(Context context) { + public AbstractScriptEngineManager(Context context) { mContext = context; - INIT_SCRIPT = new StringScriptSource(readInitScript()); } - public JavaScriptEngine createEngine() { - JavaScriptEngine engine = createEngineInner(); + public ScriptEngine createEngine() { + ScriptEngine engine = createEngineInner(); putProperties(engine); addEngine(engine); return engine; } - private void addEngine(JavaScriptEngine engine) { + private void addEngine(ScriptEngine engine) { synchronized (mEngines) { mEngines.add(engine); if (mEngineLifecycleCallback != null) { @@ -56,7 +47,7 @@ public abstract class JavaScriptEngineManager { } } - public void put(String varName, Object value) { + public void putGlobal(String varName, Object value) { mGlobalVariableMap.put(varName, value); } @@ -64,11 +55,11 @@ public abstract class JavaScriptEngineManager { mEngineLifecycleCallback = engineLifecycleCallback; } - public Set getEngines() { + public Set getEngines() { return mEngines; } - protected abstract JavaScriptEngine createEngineInner(); + protected abstract ScriptEngine createEngineInner(); public abstract String[] getGlobalFunctions(); @@ -76,13 +67,13 @@ public abstract class JavaScriptEngineManager { return mContext; } - protected void putProperties(JavaScriptEngine engine) { + protected void putProperties(ScriptEngine engine) { for (Map.Entry variable : mGlobalVariableMap.entrySet()) { engine.put(variable.getKey(), variable.getValue()); } } - void removeEngine(JavaScriptEngine engine) { + public void removeEngine(ScriptEngine engine) { synchronized (mEngines) { if (mEngines.remove(engine) && mEngineLifecycleCallback != null) { mEngineLifecycleCallback.onEngineRemove(engine); @@ -90,28 +81,11 @@ public abstract class JavaScriptEngineManager { } } - private String readInitScript() { - try { - return PFile.read(mContext.getAssets().open("javascript_engine_init.js")); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public ScriptSource getInitScript() { - if (BuildConfig.DEBUG) { - // 调试时不缓存INIT_SCRIPT否则修改javascript_engine_init.js后不会更新 - return new StringScriptSource(readInitScript()); - } else { - return INIT_SCRIPT; - } - } - public int stopAll() { synchronized (mEngines) { int n = mEngines.size(); - for (JavaScriptEngine engine : mEngines) { + for (ScriptEngine engine : mEngines) { engine.forceStop(); } return n; diff --git a/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java b/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java index 96719a20..7a840333 100644 --- a/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java +++ b/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java @@ -6,6 +6,7 @@ import com.stardust.autojs.rhino_android.AndroidContextFactory; import com.stardust.autojs.rhino_android.RhinoAndroidHelper; import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.script.ScriptSource; +import com.stardust.pio.UncheckedIOException; import org.mozilla.javascript.Context; import org.mozilla.javascript.ContextFactory; @@ -14,7 +15,8 @@ import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.ScriptableObject; import java.io.File; -import java.util.Hashtable; +import java.io.IOException; +import java.io.Reader; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -22,7 +24,7 @@ import java.util.concurrent.ConcurrentHashMap; * Created by Stardust on 2017/4/2. */ -public class RhinoJavaScriptEngine implements JavaScriptEngine { +public class RhinoJavaScriptEngine implements ScriptEngine { private static final String LOG_TAG = "RhinoJavaScriptEngine"; @@ -48,7 +50,15 @@ public class RhinoJavaScriptEngine implements JavaScriptEngine { @Override public Object execute(ScriptSource source) { - return mContext.evaluateString(mScriptable, source.getScript(), "