From 10d09d3fa0de3e0088b272c3429e9c87ca912046 Mon Sep 17 00:00:00 2001 From: SuperMonster003 Date: Sat, 24 Jan 2026 20:44:06 +0800 Subject: [PATCH] =?UTF-8?q?6.7.0=20-=20Alpha18=20-=20=E5=86=85=E7=BD=AE?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=20(dayjs/cheerio/dayjs/i18n)=20=E8=84=B1?= =?UTF-8?q?=E7=A6=BB=E8=84=9A=E6=9C=AC=E6=89=A7=E8=A1=8C=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?,=20=E4=BD=BF=E7=94=A8=E5=85=A8=E5=B1=80=E6=87=92=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E6=96=B9=E5=BC=8F=E6=9B=BF=E4=BB=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changelog/lang_zh-Hans.json | 6 ++- .../autojs/engine/ScriptEngineService.java | 31 ------------ .../autojs/autojs/runtime/ScriptRuntime.kt | 50 ++++++------------- .../runtime/api/augment/global/Global.kt | 8 +++ .../autojs/script/JavaScriptSource.java | 8 --- version.properties | 6 +-- 6 files changed, 31 insertions(+), 78 deletions(-) diff --git a/.changelog/lang_zh-Hans.json b/.changelog/lang_zh-Hans.json index b248025d..7df63d1f 100644 --- a/.changelog/lang_zh-Hans.json +++ b/.changelog/lang_zh-Hans.json @@ -62,7 +62,6 @@ "部分全局对象可能丢失 JavaScript 原型属性及方法的问题", "使用 XML 语法将 JavaScript 表达式作为属性值时, this 对象可能出现指向错误的问题", "dialogs.build 方法 linkify 选项参数功能失效的问题", - "dialogs.build 方法无法使用 MaterialDialog.Builder 原生选项参数的问题", "dialogs.build 方法可能破坏对象参数原有数据的问题", "canvas 元素控件 setMaxFps 方法内部帧率计算错误", "images.concat 方法纵向拼接时宽度值计算错误", @@ -111,10 +110,13 @@ "runtime.loadJar 方法增强兼容性 (by [LYS86](https://github.com/LYS86)) _[`pr #475`](http://pr.autojs6.com/475)_", "ui.getStatusBarHeight 方法/statusBarHeight 属性 (getter) 增强一定程度的兼容性", "console.log 等方法打印全局对象 (images, app, ocr 等) 时支持显示详细信息", - "android.graphics.Paint#setColor 支持正常解析 ColorInt/ColorHex/ColorName 等颜色参数", + "dialogs.build 方法支持使用 MaterialDialog.Builder 原生选项参数", + "dialogs.build 方法 animation/linkify 选项参数支持字符串宽松匹配", "device.rotation/rotation/width/height 方法获取屏幕方向及宽高数据的稳定性与一致性", "app.launchDual/startDualActivity 等方法提升执行效率并增强兼容性", + "android.graphics.Paint#setColor 支持正常解析 ColorInt/ColorHex/ColorName 等颜色参数", "内置模块相关方法实参类型的异常消息增加类型摘要信息", + "内置模块 (dayjs/cheerio/dayjs/i18n) 脱离脚本执行模式, 使用全局懒加载方式替代", "控制台相关方法打印巨型数据时根据上限适当省略部分内容以降低打印耗时", "控制台浮动窗口倒计时起始值由 6 秒增加到 9 秒", "控制台浮动窗口内部实现进行无锁化及队列化处理以提升其参数设置效率与成功率", diff --git a/app/src/main/java/org/autojs/autojs/engine/ScriptEngineService.java b/app/src/main/java/org/autojs/autojs/engine/ScriptEngineService.java index f5e40103..7779254c 100644 --- a/app/src/main/java/org/autojs/autojs/engine/ScriptEngineService.java +++ b/app/src/main/java/org/autojs/autojs/engine/ScriptEngineService.java @@ -27,15 +27,10 @@ import java.text.MessageFormat; import java.util.Collection; import java.util.LinkedHashMap; import java.util.LinkedHashSet; -import java.util.List; import java.util.Map; import java.util.Set; import static org.autojs.autojs.script.JavaScriptSource.EXECUTION_MODES; -import static org.autojs.autojs.script.JavaScriptSource.EXECUTION_MODE_MODULE_AXIOS; -import static org.autojs.autojs.script.JavaScriptSource.EXECUTION_MODE_MODULE_CHEERIO; -import static org.autojs.autojs.script.JavaScriptSource.EXECUTION_MODE_MODULE_DAYJS; -import static org.autojs.autojs.script.JavaScriptSource.EXECUTION_MODE_MODULE_I18N; /** * Created by Stardust on Jan 23, 2017. @@ -44,12 +39,6 @@ public class ScriptEngineService { private static final String TAG = ScriptEngineService.class.getSimpleName(); - public static final List GLOBAL_MODULES = List.of( - EXECUTION_MODE_MODULE_AXIOS, - EXECUTION_MODE_MODULE_CHEERIO, - EXECUTION_MODE_MODULE_DAYJS, - EXECUTION_MODE_MODULE_I18N); - private static ScriptEngineService sInstance; private final Context mApplicationContext; private final Console mGlobalConsole; @@ -160,7 +149,6 @@ public class ScriptEngineService { } ScriptSource source = task.getSource(); if (source instanceof JavaScriptSource src) { - GLOBAL_MODULES.forEach((mode) -> handleGlobalModuleExecution(src, mode, getModuleNameFromMode(mode))); int mode = src.getExecutionMode(); if ((mode & JavaScriptSource.EXECUTION_MODE_UI) != 0) { return ScriptExecuteActivity.execute(mApplicationContext, mScriptEngineManager, task); @@ -187,15 +175,6 @@ public class ScriptEngineService { .orElse(null); } - private void handleGlobalModuleExecution(JavaScriptSource source, int executionMode, @Nullable String moduleName) { - if (moduleName == null) return; - if ((source.getExecutionMode() & executionMode) != 0) { - mScriptEngineManager.putGlobal(moduleName, new ScriptModuleIdentifier(moduleName)); - } else { - mScriptEngineManager.removeGlobal(moduleName); - } - } - public ScriptExecution execute(ScriptSource source, ScriptExecutionListener listener, ExecutionConfig config) { return execute(new ScriptExecutionTask(source, listener, config)); } @@ -298,14 +277,4 @@ public class ScriptEngineService { } - public static class ScriptModuleIdentifier { - - public String moduleFileName; - - public ScriptModuleIdentifier(String moduleFileName) { - this.moduleFileName = moduleFileName; - } - - } - } diff --git a/app/src/main/java/org/autojs/autojs/runtime/ScriptRuntime.kt b/app/src/main/java/org/autojs/autojs/runtime/ScriptRuntime.kt index 578fe84b..b816c37d 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/ScriptRuntime.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/ScriptRuntime.kt @@ -18,9 +18,7 @@ import org.autojs.autojs.core.console.GlobalConsole import org.autojs.autojs.core.image.capture.ScreenCaptureRequester import org.autojs.autojs.core.looper.Loopers import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.engine.ScriptEngineService import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.rhino.extension.ScriptableExtensions.deleteProp import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.lang.ThreadCompat import org.autojs.autojs.pio.PFiles @@ -123,7 +121,6 @@ import org.mozilla.javascript.Scriptable import org.mozilla.javascript.ScriptableObject import org.mozilla.javascript.ScriptableObject.PERMANENT import org.mozilla.javascript.ScriptableObject.READONLY -import org.mozilla.javascript.Wrapper import java.io.File import java.io.FileFilter import java.io.IOException @@ -180,7 +177,7 @@ import org.autojs.autojs.runtime.api.augment.util.VersionCodes as UtilVersionCod * Modified by SuperMonster003 as of Dec 29, 2025. * Transformed by SuperMonster003 on May 24, 2024. */ -@Suppress("unused", "PropertyName", "PrivatePropertyName") +@Suppress("unused", "PropertyName") class ScriptRuntime private constructor(builder: Builder) { private val mJob = SupervisorJob() @@ -407,12 +404,12 @@ class ScriptRuntime private constructor(builder: Builder) { // @Commented by SuperMonster003 on May 24, 2022. // ! Use internal Rhino JSON for better performance and compatibility. // ! zh-CN: 使用 Rhino 内置的 JSON 以获得更好的性能及兼容性. - // val js_JSON by lazy { rhinoRequire("json2") as ScriptableObject } + // internal val js_JSON by lazy { rhinoRequire("json2") as ScriptableObject } // @Commented by SuperMonster003 on May 26, 2024. // ! Already implemented in Rhino 1.7.15 . // ! zh-CN: 已在 Rhino 1.7.15 中实现. - // val js_polyfill by lazy { rhinoRequire("polyfill") as ScriptableObject } + // internal val js_polyfill by lazy { rhinoRequire("polyfill") as ScriptableObject } /** * @Hint by SuperMonster003 on Apr 17, 2022. @@ -441,23 +438,23 @@ class ScriptRuntime private constructor(builder: Builder) { * Substitution of Promise. * zh-CN: Promise 的替代方案. */ - val js_Promise by lazy { rhinoRequire("promise") as BaseFunction } + internal val js_Promise by lazy { rhinoRequire("promise") as BaseFunction } - val js_ResultAdapter by lazy { rhinoRequire("result-adapter") as BaseFunction } + internal val js_ResultAdapter by lazy { rhinoRequire("result-adapter") as BaseFunction } + internal val js_UiExt by lazy { rhinoRequire("ui-ext") as BaseFunction } + internal val js_Module by lazy { rhinoRequire("jvm-npm") as ScriptableObject } - val js_UiExt by lazy { rhinoRequire("ui-ext") as BaseFunction } + internal val js_mod_axios by lazy { rhinoRequire("axios") as BaseFunction } + internal val js_mod_cheerio by lazy { rhinoRequire("cheerio") as ScriptableObject } + internal val js_mod_dayjs by lazy { rhinoRequire("dayjs") as BaseFunction } + internal val js_mod_i18n by lazy { rhinoRequire("i18n") as BaseFunction } - private val js_object_observe_lite_min by lazy { rhinoRequire("object-observe-lite.min") as BaseFunction } + internal val js_mod_continuation by lazy { rhinoRequire("continuation") as ScriptableObject } + internal val js_mod_internal by lazy { rhinoRequire("internal") as ScriptableObject } - private val js_array_observe_min by lazy { rhinoRequire("array-observe.min") as BaseFunction } - - private val js_structured_clone by lazy { rhinoRequire("structured-clone.min") as BaseFunction } - - private val js_mod_continuation by lazy { rhinoRequire("continuation") as ScriptableObject } - - private val js_mod_internal by lazy { rhinoRequire("internal") as ScriptableObject } - - private val js_Module by lazy { rhinoRequire("jvm-npm") as ScriptableObject } + internal val js_object_observe_lite_min by lazy { rhinoRequire("object-observe-lite.min") as BaseFunction } + internal val js_array_observe_min by lazy { rhinoRequire("array-observe.min") as BaseFunction } + internal val js_structured_clone by lazy { rhinoRequire("structured-clone.min") as BaseFunction } init { info = accessibilityBridge.infoProvider @@ -500,7 +497,6 @@ class ScriptRuntime private constructor(builder: Builder) { ).let { ApiPlugins(mUiHandlerAppContext, it) } augment(topLevelScope) - applyExecutionModules(topLevelScope) applyInternalModules(topLevelScope) } @@ -817,20 +813,6 @@ class ScriptRuntime private constructor(builder: Builder) { augmentedApp.defineProp(Autojs::class.java.simpleName.lowercase(), augmentedAutojs) } - private fun applyExecutionModules(global: Scriptable) { - ScriptEngineService.GLOBAL_MODULES.forEach { moduleMode -> - val moduleName = ScriptEngineService.getModuleNameFromMode(moduleMode) ?: return@forEach - var module = global.prop(moduleName) ?: return@forEach - if (module is Wrapper) module = module.unwrap() - when (module) { - is ScriptEngineService.ScriptModuleIdentifier -> { - global.defineProp(moduleName, rhinoRequire(module.moduleFileName), PERMANENT) - } - else -> global.deleteProp(moduleName) - } - } - } - private fun applyInternalModules(global: Scriptable) { js_object_assign(global, js_mod_internal) } diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/global/Global.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/global/Global.kt index aa4e36ba..60e65de9 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/global/Global.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/global/Global.kt @@ -5,6 +5,10 @@ import io.github.g00fy2.versioncompare.Version import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.automator.UiObject +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component4 import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief import org.autojs.autojs.rhino.extension.NumberExtensions.jsString @@ -107,6 +111,10 @@ class Global(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRunti override val selfAssignmentGetters = listOf>>( "WIDTH" to Supplier { ScreenMetrics.deviceScreenWidth }, "HEIGHT" to Supplier { ScreenMetrics.deviceScreenHeight }, + "axios" to Supplier { scriptRuntime.js_mod_axios }, + "cheerio" to Supplier { scriptRuntime.js_mod_cheerio }, + "dayjs" to Supplier { scriptRuntime.js_mod_dayjs }, + "i18n" to Supplier { scriptRuntime.js_mod_i18n }, ) companion object { diff --git a/app/src/main/java/org/autojs/autojs/script/JavaScriptSource.java b/app/src/main/java/org/autojs/autojs/script/JavaScriptSource.java index 2025a4e2..95eb412f 100644 --- a/app/src/main/java/org/autojs/autojs/script/JavaScriptSource.java +++ b/app/src/main/java/org/autojs/autojs/script/JavaScriptSource.java @@ -28,10 +28,6 @@ public abstract class JavaScriptSource extends ScriptSource { public static final int EXECUTION_MODE_UI = 0x0001; public static final int EXECUTION_MODE_AUTO = 0x0002; public static final int EXECUTION_MODE_JSOX = 0x0004; - public static final int EXECUTION_MODE_MODULE_AXIOS = 0x0010; - public static final int EXECUTION_MODE_MODULE_CHEERIO = 0x0020; - public static final int EXECUTION_MODE_MODULE_DAYJS = 0x0040; - public static final int EXECUTION_MODE_MODULE_I18N = 0x0080; private static final String LOG_TAG = "JavaScriptSource"; @@ -40,10 +36,6 @@ public abstract class JavaScriptSource extends ScriptSource { .put("auto", EXECUTION_MODE_AUTO) .put("jsox", EXECUTION_MODE_JSOX) .put("x", EXECUTION_MODE_JSOX) - .put("axios", EXECUTION_MODE_MODULE_AXIOS) - .put("cheerio", EXECUTION_MODE_MODULE_CHEERIO) - .put("dayjs", EXECUTION_MODE_MODULE_DAYJS) - .put("i18n", EXECUTION_MODE_MODULE_I18N) .build(); private static final int PARSING_MAX_TOKEN = 300; diff --git a/version.properties b/version.properties index b50ccbe6..8d68bd7c 100644 --- a/version.properties +++ b/version.properties @@ -1,5 +1,5 @@ -#Sat Jan 24 16:10:49 CST 2026 -BUILD_TIME=1769242249875 +#Sat Jan 24 20:43:27 CST 2026 +BUILD_TIME=1769258607559 COMPILE_SDK_VERSION=36 IMAGE_QUANT_CMAKE_VERSION=3.22.1 IMAGE_QUANT_NDK_VERSION=26.1.10909125 @@ -27,6 +27,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13 RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3 TARGET_SDK_VERSION=36 TARGET_SDK_VERSION_INRT=29 -VERSION_BUILD=3652 +VERSION_BUILD=3653 VERSION_NAME=6.7.0 Alpha18 VSCODE_EXT_REQUIRED_VERSION=1.0.13