quickjs-android 是 QuickJs JavaScript 引擎的 AndroID 接口框架,整体基于面向对象设计,提供了自动GC功能,使用简单。armeabi-v7a 的大小仅 350KB,是 Google V8 不错的替代品,启动速度比 V8 快,内存占用更低,支持 ES2020。
使用教程https://github.com/taoweiji/quickjs-android
引入依赖implementation 'io.github.taoweiji.quickJs:quickJs-androID:1.1.3'
简单示例QuickJs quickJs = QuickJs.createRuntime();jscontext context = quickJs.createContext();int result = context.executeIntegerScript("var a = 2+10;\n a;", "file.Js");context.close();quickJs.close();
对象介绍QuickJs运行环境,可以创建多个运行时环境,不同的环境之间不能共享对象,不使用的时候需要销毁。
QuickJs quickJs = QuickJs.createRuntime();
jscontext由 QuickJs 创建,一个 QuickJs 可以创建多个 jscontext,不使用的时候需要销毁。
jscontext context = quickJs.createContext();int result = context.executeIntegerScript("var a = 2+10;\n a;", "file.Js");String result = context.executeStringScript("'Hello World';", "file.Js");
JsObjectJsObject user = new JsObject(context).set("name", "Wiki").set("age", 18);Log.e("QuickJs", String.valueOf(user.getString("name")));Log.e("QuickJs", String.valueOf(user.getInteger("age")));user.registerJavaMethod(new JavaVoIDCallback() { @OverrIDe public voID invoke(JsObject receiver, JsArray args) { Log.e("QuickJs", args.getString(0)); }}, "log");user.executeVoIDFunction("log", new JsArray(context).push("Hello World"));
@H_404_42@JsArrayJsArray array = new JsArray(context).push(1).push(3.14).push(true).push("Hello World");Log.e("QuickJs", String.valueOf(array.getInteger(0)));Log.e("QuickJs", String.valueOf(array.getDouble(1)));
JsFunctionJsFunction log = new JsFunction(context, new JavaVoIDCallback() { @OverrIDe public voID invoke(JsObject receiver, JsArray args) { Log.e("QuickJs", args.getString(0)); }});JsFunction message = new JsFunction(context, new JavaCallback() { @OverrIDe public Object invoke(JsObject receiver, JsArray array) { return "Hello World"; }});context.set("console", new JsObject(context).set("log", log).set("message", message));context.executeVoIDScript("console.log(console.message())", null);
QuickJs方法 | 说明 |
---|---|
static QuickJs createRuntime() | 创建运行时 |
jscontext createContext() | 创建上下文 |
voID close() | 销毁引擎 |
对象会自动回收,开发者无需手动close()
方法 | 说明 |
---|---|
static JsObject Undefined(jscontext context) | 获取Undefined对象 |
static JsValue NulL() | 获取NulL对象 |
TYPE getType() | 获取数据类型 |
boolean isUndefined() |
继承JsValue
方法 | 说明 |
---|---|
set(key, value) | 设置属性,支持int、boolean、double、String、JsValue |
int getInteger(String key) | 返回值int对象值,如果没有就会返回0 |
boolean getBoolean(String key) | 返回值boolean对象值,如果没有就会返回false |
double getDouble(String key) | 返回值double对象值,如果没有就会返回0 |
String getString(String key) | 返回值String对象值,如果没有就会返回null |
JsArray getArray(String key) | 返回值JsArray对象值,如果没有就会返回null |
JsObject getobject(String key) | 可能会返回JsObject、JsArray、JsFunction,如果没有就会返回null |
registerJavaMethod(JavaCallback callback, String JsFunctionname) | 注册Js函数,调用函数会执行java的Callback,带有返回值 |
registerJavaMethod(JavaVoIDCallback callback, String JsFunctionname) | 注册Js函数,调用函数会执行java的Callback,不带返回值 |
Object executeFunction(String name, JsArray parameters) | 可能会返回Integer、Double、Boolean、String、JsArray、JsObject、JsFunction、null |
double executeDoubleFunction(String name, JsArray parameters) | 返回 double,默认返回 0 |
boolean executeBooleanFunction(String name, JsArray parameters) | 返回boolean,默认人会false |
String executeStringFunction(String name, JsArray parameters) | 返回String,默认返回null |
JsArray executeArrayFunction(String name, JsArray parameters) | 返回JsArray,默认返回null |
JsObject executeObjectFunction(String name, JsArray parameters) | 可能会返回JsObject、JsArray、JsFunction,默认返回null |
voID executeVoIDFunction(String name, JsArray parameters) | 没有返回值 |
Object executeFunction2(String name, Object... parameters) | 可能返回Integer、Double、Boolean、String、JsArray、JsObject、JsFunction、null,入参为java数组,仅支持Integer、Double、Boolean、String、JsArray、JsObject、JsFunction、null |
boolean contains(String key) | 是否包含该字段 |
String[] getKeys() | 获取属性列表 |
继承JsObject
方法 | 说明 |
---|---|
push(value) | 设置属性,支持int、boolean、double、String、JsValue |
int getInteger(String key) | 返回值int对象值,如果没有就会返回0 |
boolean getBoolean(String key) | 返回值boolean对象值,如果没有就会返回false |
double getDouble(String key) | 返回值double对象值,如果没有就会返回0 |
String getString(String key) | 返回值String对象值,如果没有就会返回null |
JsArray getArray(String key) | 返回值JsArray对象值,如果没有就会返回null |
JsObject getobject(String key) | 可能会返回JsObject、JsArray、JsFunction,如果没有就会返回null |
length() | 数组大小 |
继承JsObject
方法 | 说明 |
---|---|
JsFunction(jscontext context, JavaCallback callback) | 构造函数 |
JsFunction(jscontext context, JavaVoIDCallback callback) | 构造函数 |
Object call(JsValue.TYPE type, JsObject receiver, JsArray parameters) | 调用方法 |
继承JsObject,拥有JsObject全部方法,对象本身是全局对象
方法 | 说明 |
---|---|
voID close() | 销毁上下文 |
int executeIntegerScript(String source, String filename) | 执行Js脚本 |
double executeDoubleScript(String source, String filename) | 执行Js脚本 |
String executeStringScript(String source, String filename) | 执行Js脚本 |
boolean executeBooleanScript(String source, String filename) | 执行Js脚本 |
Object executeScript(String source, String filename) | 执行Js脚本,可能返回Integer、Double、Boolean、String、JsArray、JsObject、JsFunction、null |
voID executeVoIDScript(String source, String filename) | 执行Js脚本,无返回值 |
JsArray executeArrayScript(String source, String filename) | 执行Js脚本,返回值为JsArray |
JsObject executeObjectScript(String source, String filename) | 执行Js脚本,可能会返回JsObject、JsArray、JsFunction |
以上是内存溢出为你收集整理的在 Android 使用 QuickJS JavaScript 引擎教程全部内容,希望文章能够帮你解决在 Android 使用 QuickJS JavaScript 引擎教程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)