LuaScriptCore

本文介绍LuaScriptCore在Android平台上的集成方法及使用流程,包括初始化LuaContext、解析Lua脚本等核心步骤,并给出调用Lua方法的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LuaScriptCore

1.Android集成使用文档
2.https://gitee.com/Ghost233/LuaScriptCore(项目中使用到的实际LuaScriptCore源码)

集成方式

自动集成:

compile'com.github.vimfung.luascriptcore:luascriptcore:2.3.2'  

使用说明:

使用一个YSLuaManager类统一管理。

初始化luaSciptCore

LuaScriptCore中提供了LuaContext这个上下文对象类来维护整个Lua的环境,所以使用LuaScriptCore的第一步就是对LuaContext进行初始化。如:

LuaContext context = LuaContext.create(this);

初始化完毕后才能进行下面的各种操作。
(其中,this是全局Context,最好传入的是Application,而不是Activity,避免内存泄露)

解析Lua脚本

原生层中要操作Lua中的变量或者方法,通常使用到的就是组织Lua脚本来进行一系列的Lua操作(LuaScriptCore屏蔽了Lua库中的C Api,目的是让代码更加接近原生,使用起来更加得心应手),然后交由Context进行脚本的解析。如:

context.evalScript("print('Hello World');");

Android原生代码调用Lua中的方法和变量,控制Lua的业务逻辑

//获取变量
LuaValue urlValue = context.getGlobal("url");
Log.d("LuaScriptCore", String.format("url = %s", urlValue.toString()));

//调用方法
context.callMethod("printUrl", new LuaValue[] {urlValue});

可以进一步封装,比如:

   public <R extends JobResult, P extends JobParam> void executeJob(final Job<R, P> job, final ILuaCallBack<R> callBack) {
   
        JobInfo info = job.getInfo();
        mLuaContext.registerMethodOverride(info.back, new LuaMethodHandler() {
            @Override
            public LuaValue onExecute(LuaValue[] luaValues) {
                mIsJobRunning = false;
                if (luaValues != null && luaValues.length >= 1 && callBack != null) {
                    LuaValue value = luaValues[0];
                    String retString = value.toString();
                    final JobResult ret = job.parseResult(retString);
                    mUIHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            callBack.luaDidCallBack((R) ret);

                        }
                    });
                    return new LuaValue(true);
                }
                return new LuaValue(false);
            }
        });

        LuaValue jobName = new LuaValue(info.name);
        LuaValue jobParam = new LuaValue(job.getParamJson());
        LuaValue jobBack = new LuaValue(info.back);

        mLuaContext.callMethod(excuteJobMethod, new LuaValue[]{jobName, jobParam, jobBack});
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值