当前众多游戏引入脚本语言作为快速发布内容以及灵活扩展的解决方案,在寻找向Android应用集成Lua脚本语言的方案时,大量零碎的资料并没有向开发者指引一个明确的方向。在这里我把自己通过整合资料完成的方案写下来,希望能给需要的程序员帮助,欢迎大家提供更快捷的方案。
不再赘述Android开发环境的配置以及Lua脚本语言的介绍,需要了解的朋友可以Google资料。
我的开发环境是Window,列举我们将要用到的工具和组件:
- Native Development Kit r6 http://developer.android.com/sdk/ndk/index.html
- Cygwin 1.7 http://www.cygwin.com/
- Lua 5.1.4 source http://www.lua.org/
- luajava 1.1 source http://www.keplerproject.org/luajava/manual.html
简要介绍解决方案涉及到的几个基本概念,高手自动略过:
Lua用C实现,所以如果我们不打算用Java重写解释器的话,我们需要一种方式使C和Java能良好的沟通,熟悉Java的程序员肯定想到了JNI(Java Native Interface)。你可能在Linux环境和Window环境使用过JNI,过程并不复杂:写好Java文件并在其中声明好native方法→用javah生成C头文件→为C文件中声明的函数写好实现→编译C代码生成动态链接库,这样就可以在Java中使用native方法了。在Android下我们同样要经过这些步骤,只不过编译生成动态链接库的时候我们需要Google提供的NDK工具。在Window环境下使用NDK还需要安装UNIX模拟环境Cygwin。我们还将用到一个对Lua进行良好封装的开源项目luajava。
下面开始详细步骤: