Rename and refactor autojs to support future developing of other script language

This commit is contained in:
hyb1996
2017-05-07 23:32:53 +08:00
parent 840bb56528
commit 472bd46b87
25 changed files with 717 additions and 184 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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<JavaScriptEngine> mScriptEngines = new ArrayList<>();
private final List<ScriptEngine> 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() {