1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 LuaScriptCore v2.0.0 发布,移动端 Lua 桥接框架 下载

本帖由 漂亮的石头2017-12-05 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    488,074
    赞:
    47
    LuaScriptCore旨在能够在多种平台上方便地使用Lua。其提供了与各种平台的功能交互,让开发者无须关心Lua与各个平台之间是实现交互的细节,只需要根据自己的业务需求,使用LuaScriptCore提供的方法,轻松简单地实现各种功能。其能做到:


    1. 从平台原生层代码调用Lua中的方法和变量,控制Lua的业务逻辑


    2. 从Lua中调用原生层提供的方法,让一些Lua无法处理或者耗时的处理交由原生方法实现


    3. 从原生层中直接扩展Lua的功能


    4. 从原生层定义的类直接映射到Lua中使用,让Lua更方便地实现面向对象的编程

    LuaScriptCore迎来一次重大更新!本次更新主要涉及对象映射部分功能,其中包括:


    • 导出类型更加自由,取消强制继承Module或者ObjectClass类型的导出机制,只要类型实现ExportType则可以在Lua脚本中进行使用。在原生代码定义如下:


    iOS

    @interface LuaType : NSObject <LSCExportType>

    // 定义属性和方法...

    @end

    Android

    class LuaType implements LuaExportType
    {
    // 定义属性和方法...
    }

    Unity3D

    class LuaType : LuaExportType
    {
    // 定义属性和方法...
    }

    则可以在Lua中进行使用,如:

    local obj = LuaType.create();
    print (obj);

    • 导出类型的属性访问更加简单易用,如果的原生类有一个name的属性定义如下:


    iOS

    @interface LuaType : NSObject <LSCExportType>

    @property (nonatomic, copy) NSString *name;

    @end

    Android

    class LuaType implements LuaExportType
    {
    public String name;
    }

    Unity3D

    class LuaType : LuaExportType
    {
    private string _name;
    public string name
    {
    get
    {
    return _name;
    }
    set
    {
    _name = value;
    }
    }
    }

    以前的版本在Lua中的调用形式如下:

    local obj = LuaType.create();
    obj:setName("vim");
    print (obj:name());

    新版本中调用形式如下:

    local obj = LuaType.create();
    obj.name = "vim";
    print (obj.name);

    • 现在可以支持类型方法的重载了!!假设你的原生类型方法有多个重载:


    iOS

    @interface LuaType : NSObject <LSCExportType>

    - (void)test;

    - (void)testWithMsg:(NSString *)msg;

    @end

    Android

    class LuaType implements LuaExportType
    {
    public void test () {};

    public void test(String msg) {};
    }

    Unity3D

    class LuaType : LuaExportType
    {
    public void test () {};

    public void test (string msg) {};
    }

    在Lua中可以根据传参来调用到不同方法重载,如:

    local obj = LuaType.create();
    obj.test();
    obj.test("Hello World");

    • 本次更新为了满足部分同学的需要,对Lua 5.1版本核心进行了支持(适用于iOS、OSX、Android平台),但是没有直接制作relase包,有需要的同学可以直接使用源码工程打包。具体打包步骤如下:


    iOS


    1. 打开Source/iOS_OSX/LuaScriptCore_5_1.xcodeproj工程


    2. 选择LuaScriptCore-iOS-output或者LuaScriptCore-iOS-Swift-outputscheme编译输出iOS包


    3. 在Release/iOS或者Release/iOS-Swift中可找到导出包


    OSX


    1. 打开Source/iOS_OSX/LuaScriptCore_5_1.xcodeproj工程


    2. 选择LuaScriptCore-OSX-output或者LuaScriptCore-OSX-Swift-outputshcme编译输出OSX包


    3. 在Release/OSX或者Release/OSX-Swift中可找到导出包


    Android


    1. 使用Android Studio 打开Source/Android工程


    2. 打开build.gradle(Module:luascriptcore)文件,将apply from: './compile.gradle'改为apply from: './compile-5.1.5.fradle'


    3. 然后重新编译


    4. 在Source/Android/luascriptcore/build/intermediates/bundles/release/目录下找到导出包

    • 除了上述更新内容外,本次还优化了内部的一些处理逻辑和流程,同时修复了一些已的bug。具体内容包括:

    1. 优化iOS/OSX下addSearchPath接口逻辑处理


    2. 修复iOS/OSX平台在Xcode9下打包出错问题


    3. 修复Context销毁时出现崩溃的问题。


    4. 修复在Lua协程操作时访问异常问题。

    LuaScriptCore v2.0.0 发布,移动端 Lua 桥接框架下载地址
     
正在加载...