From be023ceefe0a015f6e7219e4eaef9562dde46d98 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Thu, 7 Dec 2017 22:32:13 +0800 Subject: [PATCH] optimize: code generation --- app/build.gradle | 4 ++-- .../autojs/codegeneration/CodeGenerator.java | 17 +++++++++++++---- .../autojs/core/image/TemplateMatching.java | 1 + .../autojs/engine/RhinoJavaScriptEngine.java | 3 ++- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 753f23eb..81df4211 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "com.stardust.scriptdroid" minSdkVersion 17 targetSdkVersion 23 - versionCode 231 - versionName "3.0.0 Alpha31" + versionCode 233 + versionName "3.0.0 Alpha33" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true ndk { diff --git a/autojs/src/main/java/com/stardust/autojs/codegeneration/CodeGenerator.java b/autojs/src/main/java/com/stardust/autojs/codegeneration/CodeGenerator.java index 32379af5..592c8952 100644 --- a/autojs/src/main/java/com/stardust/autojs/codegeneration/CodeGenerator.java +++ b/autojs/src/main/java/com/stardust/autojs/codegeneration/CodeGenerator.java @@ -73,10 +73,15 @@ public class CodeGenerator { } protected String generateCode(UiSelectorGenerator generator, UiObject root, UiObject target, int maxParentLevel, int maxChildrenLevel) { - String selector = generator.generateSelectorCode(); + return generateCode(generator, root, target, maxParentLevel, maxChildrenLevel, true); + } + + protected String generateCode(UiSelectorGenerator generator, UiObject root, UiObject target, int maxParentLevel, int maxChildrenLevel, boolean withFind) { + String selector = withFind ? generator.generateSelectorCode() : generator.generateSelector().toString(); if (selector != null) { return selector; } + if (maxChildrenLevel > 0) { for (int i = 0; i < target.childCount(); i++) { UiObject child = target.child(i); @@ -101,9 +106,13 @@ public class CodeGenerator { } protected String generateCode(UiObject root, UiObject target, int maxParentLevel, int maxChildrenLevel) { + return generateCode(root, target, maxParentLevel, maxChildrenLevel, true); + } + + protected String generateCode(UiObject root, UiObject target, int maxParentLevel, int maxChildrenLevel, boolean withFind) { UiSelectorGenerator generator = new UiSelectorGenerator(root, target); generator.setUsingId(mUsingId); - return generateCode(generator, root, target, maxParentLevel, maxChildrenLevel); + return generateCode(generator, root, target, maxParentLevel, maxChildrenLevel, withFind); } private String generateAction(String selector) { @@ -158,10 +167,10 @@ public class CodeGenerator { String collectionCode = generateCode(mRoot, collection, 2, 0); if (collectionCode == null) return null; - String itemCode = generateCode(collectionItem, target, 1, 2); + String itemCode = generateCode(collectionItem, target, 1, 2, false); if (itemCode == null) return null; - return collectionCode + ".findOne().children().forEach(child => {\n" + return collectionCode + ".children().forEach(child => {\n" + "var target = child.findOne(" + itemCode + ");\n" + "target." + getAction() + ";\n" + "});"; diff --git a/autojs/src/main/java/com/stardust/autojs/core/image/TemplateMatching.java b/autojs/src/main/java/com/stardust/autojs/core/image/TemplateMatching.java index 05053888..e2749294 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/image/TemplateMatching.java +++ b/autojs/src/main/java/com/stardust/autojs/core/image/TemplateMatching.java @@ -32,6 +32,7 @@ public class TemplateMatching { return fastTemplateMatching(img, template, MATCHING_METHOD_DEFAULT, 0.75f, threshold, MAX_LEVEL_AUTO); } + public static Point fastTemplateMatching(Mat img, Mat template, int matchMethod, float weakThreshold, float strictThreshold, int maxLevel) { TimingLogger logger = new TimingLogger(LOG_TAG, "fast_tm"); if (maxLevel == MAX_LEVEL_AUTO) { 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 648c915d..49bfa37e 100644 --- a/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java +++ b/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java @@ -1,6 +1,7 @@ package com.stardust.autojs.engine; import android.util.Log; +import android.widget.TextView; import com.stardust.autojs.BuildConfig; import com.stardust.autojs.rhino.AndroidContextFactory; @@ -165,7 +166,7 @@ public class RhinoJavaScriptEngine extends JavaScriptEngine { private class WrapFactory extends org.mozilla.javascript.WrapFactory { @Override public Object wrap(Context cx, Scriptable scope, Object obj, Class staticType) { - if (obj instanceof CharSequence) { + if (obj instanceof String) { return getRuntime().bridges.toString(obj.toString()); } if (staticType == UiObjectCollection.class) {