gpt4 book ai didi

android - 从 Android 应用程序调用 Lua 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:52:04 24 4
gpt4 key购买 nike

首先让我澄清一些事情:

我不是要从命令行运行 Lua 脚本。
我没有尝试从 Lua 调用任何 android 函数

因此,除了这些,这就是我正在尝试做的事情。

从 Android Activity 直接或间接调用 (JNI/SL4A) Lua 脚本并在 Activity 中取回结果。

现在查看 SL4A 的文档,我发现了一些缺点:

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

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

最佳答案

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

为了在您的应用程序中实际使用 Lua,LuaJava还 bundle 了允许您从 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
#

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

-- 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!')

关于android - 从 Android 应用程序调用 Lua 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8558413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com