如何将外部库集成到 Cocos Android 项目中

Posted

技术标签:

【中文标题】如何将外部库集成到 Cocos Android 项目中【英文标题】:How to integrate external Libraries into Cocos Android Project 【发布时间】:2018-06-24 17:57:58 【问题描述】:

我想制作一款使用 C++ 构建并使用 Lua 编写脚本的游戏。为此,我制作了自己的 Lua 引擎。对于 Windows,我只是简单地包含了 Lua 头文件、Lua 库和 Lua dll。这工作得很好。

现在我想为 android 导入相同的项目。我面临的问题是,在构建时,它为我所做的所有 Lua 调用提供了“未定义的引用”。它能够包含 Lua 头文件,但仍然无法编译。

编辑 1:现在我假设这是因为没有链接 lib 和 .dll 文件。我知道 Android 不使用 dll 和 lib 文件作为 Windows。它使用 .so 文件。但是谁能建议我如何构建 .so 文件!?

编辑 2:所以我做了更多的研究并最终构建了 .so 文件。但现在我有四组库:ar64-v8a、armeabi-v7a、x86、x86-64。谁能告诉我这组库有什么区别,以及如何在我的主要 cocos 项目中实际使用它们!?

#lua

LIB_VERSION:=lua-5.2.2

LOCAL_PATH:= $(call my-dir)
LIB_ROOT_REL:= ../../$(LIB_VERSION)
LIB_ROOT_ABS:= $(LOCAL_PATH)/../../$(LIB_VERSION)

include $(CLEAR_VARS)

LOCAL_CFLAGS := -O2 -Wall -DLUA_COMPAT_ALL -D"getlocaledecpoint() ='.'"

LOCAL_SRC_FILES := \
 <ALL LUA SOURCE FILES INCLUDED HERE>

LOCAL_C_INCLUDES += \
 $(LIB_ROOT_ABS)/src \

LOCAL_LDLIBS += -llog

LOCAL_MODULE := liblua

include $(BUILD_SHARED_LIBRARY)

【问题讨论】:

欢迎跨平台开发。 Android 没有 DLL 的概念,因为那是 Windows 的概念。您需要在您的 Android 项目中使用 Lua 库中的适当 .so 文件,如下所述:developer.android.com/ndk/guides/prebuilts.html 如果您的 Lua 引擎基于现有的带有 Android 端口的引擎 - 您的更改可能与现有的 Android 兼容港口。 我构建了 .so 文件。你能解释一下如何在 cocos 项目中使用它们!? 【参考方案1】:

您拥有的四个不同文件用于四种不同的架构 - ar64-v8a、armeabi-v7a、x86、x86-64。根据您计划支持的架构,您必须在 libs 下添加相应的文件夹并将相应的 .so 文件复制到该文件夹​​中。 因此,如果您打算只支持 armeabi-v7a,那么您必须在 libs 文件夹中创建一个名为 armeabi-v7a 的文件夹,并将 armeabi-v7a so 文件添加到其中。

【讨论】:

以上是关于如何将外部库集成到 Cocos Android 项目中的主要内容,如果未能解决你的问题,请参考以下文章

将具有外部依赖项的共享库集成到 MATLAB |即犰狳、LAPACK、BLAS

集成其他库 - Android Studio

如何在 android studio 中编辑依赖项/外部库? [复制]

Android targetSdk向后兼容

添加Android特定外部库

如何将外部库项目添加到 android studio 1.2.2?有溶液