Skip to content

Releases: vimfung/LuaScriptCore

Release 2.4.0

21 Apr 02:07
Compare
Choose a tag to compare

更新内容:

  1. 新增线程执行功能,可以通过LuaContextrunThread方法将一个lua方法执行在不同的线程中。
  2. LuaValue新增setObject方法,允许直接为table对象设置和删除键值对,而不是通过返回值的方法进行调整。
  3. 新增LuaContext的脚本执行控制接口,可以通过LuaScriptController来强制中断脚本执行。
  4. iOS / OSX 平台下增加初始化上下文时传入配置接口,允许导出类方法名称时使用完整名称。
  5. 优化addSearchPath方法,可以加入lua文件以外的文件路径
  6. 优化Android和Unity3D下的抛出Lua异常操作
  7. 修复抛出异常时导致内存泄漏和程序死锁问题
  8. 修复iOS / OSX 平台下使用Swift的@objc导出类无法找到问题
  9. 修复Android平台下传递数组中包含导出类型对象时产生JNI栈溢出问题。
  10. 修复Android平台下,从原生层传入基础类型数组时无法转换到lua中使用问题。
  11. 修复Android平台下LuaValue无法识别传入byte[]类型问题。
  12. 修复Android平台下,对象方法传入floatintlong类型参数时无法识别问题。
  13. 修复Android平台下,对象方法返回值为float时无法识别问题。
  14. 修复Android平台下LuaTuple返回基础类型值不正确问题
  15. 修复Android平台下LuaTuple设置List类型为返回值时获取不到列表内容问题
  16. 修复Android平台下循环调用方法时导致崩溃问题
  17. 修复Android平台下创建类对象是内存泄漏问题
  18. 修复Unity3D下LuaValue转换为object时,如果数据为数组或者字典里面的元素没有解包问题。

LuaScriptCore模块项目正式成立

为了帮助广大开发者完成更多的开发需要,该项目会以功能模块的方式来实现更有针对性的功能需求,目前处于建设阶段,希望大家可以多提需求和建议,同时也希望大家能将自己做的模块共享出来,帮助项目更加完善和强大~

具体请移步至:LuaScriptCoreModules

Release 2.3.2

13 Dec 03:48
Compare
Choose a tag to compare

更新内容:

1 优化对象构造接口,与原生层构造方法相绑定(之前版本只会调用默认构造方法)
2. 优化Swfit下的LuaValue类型构造方法。
3. 优化Unity3D下addSearch方法发布到Android平台后路径无法查询问题
4. 优化LuaValue转换为其他类型时的内部处理
5. 修复GC可能会导致主线程阻塞问题。
6. 修复Xcode 10下打包脚本报错问题。
7. 修复Windows下无法编译Unity项目问题。
8. 解决Android平台源码编译问题并由GCC编译调整为clang编译(感谢@zhaoxuan同学提供支持)
9. 修复Swift下LuaFunction、LuaTuple、LuaPointer在lua层回传后不再是同一对象问题。
10. 修复Unity3D下传递List和Dictionary类型出现异常问题
11. 修复Unity3D下传递自定义类型对象出现异常问题
12. 修复Unity3D下输出信息带%号是出现乱码问题
13. 增加Android平台和Unity3D下一些缺失的功能接口

LuaScriptCore模块项目正式成立

为了帮助广大开发者完成更多的开发需要,该项目会以功能模块的方式来实现更有针对性的功能需求,目前处于建设阶段,希望大家可以多提需求和建议,同时也希望大家能将自己做的模块共享出来,帮助项目更加完善和强大~

具体请移步至:LuaScriptCoreModules

Release 2.3.0

08 Aug 03:54
Compare
Choose a tag to compare

更新内容:

  1. 增加线程安全机制
  2. lua核心升级至5.3.5版本
  3. 修复Android平台下使用ArrayList作为参数传入callMethod中无效问题。
  4. 允许Android、Unity平台下使用泛型作为参数传入lua。
  5. 修复Android平台下map中设置null元素转换失败问题
  6. Android和Unity平台下的LuaExportTypeConfigLuaExportTypeAnnotation标注过期(后续版本将移除),使用LuaExclude注解(特性)来代替:

Android平台

//调整前
@LuaExportTypeConfig(excludeExportInstanceMethodsNames = {"method1", "method2"})
class TargetClass implements LuaExportType
{
    public void method1 () {}
    public void method2 () {}
}

//调整后
class TargetClass implements LuaExportType
{
    @LuaExclude
    public void method1 () {}

    @LuaExclude
    public void method2 () {}
}

Unity平台

//调整前
[LuaExportTypeAnnotation(excludeExportInstanceMethodNames=new string[]{"method1", "method2"})]
class TargetClass : LuaExportType 
{
    public void method1 () {}
    public void method2 () {}
}

//调整后
class TargetClass : LuaExportType 
{
    [LuaExclude]
    public void method1 () {}

    [LuaExclude]
    public void method2 () {}
}

Release 2.2.1

25 May 03:25
Compare
Choose a tag to compare
  1. 修复访问属性时导致堆栈错乱引发的一些未知问题
  2. 修复框架中的内存泄漏问题
  3. 优化抛出异常接口raiseException
  4. 修复一些不必现的崩溃问题
  5. 优化执行效率

Release 2.2.0

04 May 06:27
Compare
Choose a tag to compare

更新内容:

  1. 废弃原有构造函数create,使用类型()方式构造对象;
  2. 统一使用冒号来进行类方法和实例方法的声明和调用(之前版本类方法用点语法,实例方法用冒号语法)。
  3. 优化类型加载逻辑,提升执行效率。
  4. Object类型新增typeMapping方法,用于为原生类型定义别名。
  5. LuaContext新增raiseException原生方法,用于抛出Lua执行异常。
  6. 修复iOS、OSX下Function类型传入原生层后释放时崩溃问题。
  7. 修复iOS、OSX下32位设备返回布尔类有误问题。
  8. 修复Windows下编译Android项目报错问题。

注:由于本次更新涉及语法变更,更新后需要调整变更的语法,请使用旧版本的同学谨慎升级

Release 2.1.1

28 Jan 03:44
Compare
Choose a tag to compare

本次更新内容包括:

1、修复iOS / OSX平台下调用方法导致内存泄漏问题。
2、修复Android平台下,类型方法的参数使用Object类型来声明参数时,强转报错问题。

Release 2.1.0

21 Jan 02:35
Compare
Choose a tag to compare

更新内容如下:

  1. LuaValue增加Class类型
  2. 完善异常捕获检测,让问题定位更加准确
  3. 修复继承Object对象的Lua类型操作异常问题。
  4. 优化查找属性和获取属性值业务逻辑
  5. 优化GC回收处理
  6. 异常捕获优化,修正原生方法执行异常后无lua异常报告问题。
  7. 增加TmpValue,用于解决Table类型原生转换后再回传lua产生的变化问题。
  8. 修复父类属性在子类重写后无法正常调用问题。
  9. 修复Unity下多个LuaContext相互影响问题。
  10. 修复对象创建时在init方法中调用self相关的属性和方法导致栈溢出问题。
  11. 修复Lua中直接调用subclass派生类型无法进行扩展类型属性定义问题。

Release 2.0.0

03 Dec 03:21
Compare
Choose a tag to compare

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协程操作时访问异常问题。

Release 1.3.5

02 Aug 07:35
Compare
Choose a tag to compare

修复Lua协程中调用原生方法异常问题

Release 1.3.4

12 Jun 10:44
Compare
Choose a tag to compare
  1. LuaContext增加retainValuereleaseValue,允许原生层对Lua层对象进行内存上的管理。
  2. 新增LuaManagedValue类型,使用该类型可以延长Lua对象生命周期,使其在类型被释放之后进行。
  3. 改进框架,优化执行效率