Quick-x提供的luaj非常好用,很简单的实现了Lua调用Java的功能,平台也提供了一个Luajavabridge示例,按照例子可以很快的掌握调用方法。
不过,在使用过程中,发现在某些Android机器上,在调用时会出错退出。检查出错提示,开始未能确定原因;后来向前追查,发现前面有一个警告提示,大意是在调用java类时路径指示可能有误。根据提示,又查了一下JNI文档,确定了原因。
在JNI中,调用Java类时,文档里的标准是使用'/'进行路径分隔,而在Luajavabridge这个示例中,使用的是'.'分隔。多数机型这两种方式都是支持的,但有些机器只支持标准格式,所以会出现问题。
因此,从通用性出发,Luajavabridge里的这句代码:
local javaClassName = "com.quick_x.sample.luajavabridge.Luajavabridge"
最好是改成:
local javaClassName = "com/quick_x/sample/luajavabridge/Luajavabridge"
大家在开发自己的项目时也应该注意一下这个问题,呵呵。
(2014.5.30加注:quick-x的2.2.3版本已经集成了我递交的pr,现在官方版本代码已经修正)