从Android应用程序调用Lua脚本

And*_*der 6 lua android

首先让我澄清一些事情:

我不是试图从命令行运行一个Lua脚本.
我不是想从Lua调用任何android函数

因此,除此之外,我正在努力做到这一点.

从Android Activity直接或间接调用(JNI/SL4A)Lua脚本并返回活动中的结果.

现在看一下SL4A的文档,我看到了一些缺点:

1)我找不到文档说它允许以编程方式调用Lua.2)看起来SL4A可能需要作为单独的应用程序安装(不是太无用).

我看到的唯一其他选项是NDK交叉编译所有Lua,然后尝试以某种方式在C代码中调用它.

Mic*_*man 7

您可能想看看我的示例项目AndroLua.它包含一个使用Android NDK直接嵌入到Android应用程序中的Lua解释器.只需进行非常小的更改即可成功将其嵌入到Android应用程序中.

为了从您的应用程序中实际使用Lua,LuaJava也捆绑在一起,允许您使用Java中的Lua ,反之亦然.

查看应用程序以查看示例如何覆盖print函数以允许输出TextView而不是控制台.

更新:加载模块

我假设您要加载的模块是在Lua中实现的.用于模块加载的标准Lua技术照常工作 - 您只需修改package.path应用程序数据目录(或您希望存储脚本/模块的任何位置).

想象一下,您hello.lua在应用程序数据目录中调用了一个模块:

$ adb shell
# cd /data/data/sk.kottman.androlua
# cat hello.lua 
module(..., package.seeall)
function greet(name)
  print('Hello ' .. name)
end
#
Run Code Online (Sandbox Code Playgroud)

然后尝试在解释器中运行此代码:

-- add the data directory to the module search path
package.path = '/data/data/sk.kottman.androlua/?.lua;'..package.path
-- load the module
require 'hello'
-- run a function, should show "Hello Lua!"
hello.greet('Lua!')
Run Code Online (Sandbox Code Playgroud)