下面是整个流程如果有什么不懂可以加群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两个文件夹中

 

 

相关例子可以在群文件中直接下载

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐