下面是整个流程如果有什么不懂可以加群785554238,里面有最新的版本和相关最新的脚本例子以及插件
1.如果没有安装先从此处下载安装包 https://share.weiyun.com/chGtVAd2 密码:ha99bi,或者直接进群下载最新版本
2.开始今天的主题如何在懒人精灵中用lua脚本调用C++编写的android动态库so
3.编译so之前我们需要安装android ndk开发环境这里提供下载地址 https://dl.google.com/android/repository/android-ndk-r20b-windows-x86.zip
4.下载好后解压到你指定的目中,然后把当前ndk路径复制到环境变量中,点击确定即可,接下来测试ndk是否安装成功,我们打开控制台,输入ndk-build -v
表明安装成功
5.编写Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= assist
LOCAL_SRC_FILES:=lualib/$(TARGET_ARCH_ABI)/libassist.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/lualib/include
LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
LOCAL_MODULE := MyLib
LOCAL_SRC_FILES := src/MyLib.c
LOCAL_LDLIBS := -lm -lz
LOCAL_SHARED_LIBRARIES := assist
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
6.编写Application.mk
APP_ABI := x86 armeabi-v7a
7.编写c例子命名为MyLib.c
#include <math.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
static int Add(lua_State *L){
double d1 = luaL_checknumber(L, 1);
double d2 = luaL_checknumber(L, 2);
lua_pushnumber(L, d1+d2);
return 1;
}
static const struct luaL_Reg R[] = {
{"Add" , Add},
{NULL, NULL}
};
static int luaopen_LibMath(lua_State *L)
{
lua_newtable(L);
luaL_setfuncs(L, R, 0);
return 1;
}
static int luaclose_libMyLib(lua_State*L) //关闭so时释放资源
{
return 0;
}
int luaopen_libMyLib(lua_State*L)
{
lua_newtable(L);
lua_newtable(L);
lua_pushcfunction(L, luaclose_libMyLib);
lua_setfield(L, -2, "__gc");
lua_setmetatable(L, -2);
luaopen_LibMath(L);
lua_setfield(L, -2, "Math");
return 1;
}
8.开始编译,此处的层级目录如下
jni/Android.mk
jni/Application.mk
jni/src/MyLib.c
jni/lualib --此处lualib是依赖项,可以在群文件例子中直接获取
9.so已经生成,这时可以把so添加到自己的项目中,分别添加armeabi-v7a 和 x86两个文件夹中
相关例子可以在群文件中直接下载