这篇写dragonbones的lua绑定之Android部分,不知道怎么在VS(Visual Studio)中绑定的话请看如何在lua项目中使用dragonbones。
有了上篇的基础,这次再做Android就比较简单了。
注意:ndk9b不能编译通过,我这里使用的是ndk9d,其他版面没有测试。
修改 Application.mk
文件路径: MyLuaGame/frameworks/runtime-src/proj.android/jni/Application.mk
添加预定义宏
APP_CPPFLAGS += -DDRAGON_BONES_ENABLE_LUA=1
这个为可选项,Application.mk为全局设置,如果这里添加了预定义宏,那么模块中就不必再添加了。
修改dragonbones的Android.mk
文件路径: MyLuaGame/frameworks/cocos2d-x/cocos/editor-support/dragonbones/renderer/cocos2d-x-3.x/android/Android.mk
添加依赖库及预定义宏
#liblua LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../../../scripting/lua-bindings/manual $(LOCAL_PATH)/../../../../../../external/lua/tolua $(LOCAL_PATH)/../../../../../../external/lua/luajit/include LOCAL_WHOLE_STATIC_LIBRARIES += cocos_lua_static LOCAL_CFLAGS += -DDRAGON_BONES_ENABLE_LUA=1
完整文件下载(cocos2dx3.2, cocos2dx3.3, cocos2dx3.4),其他版本的请自行修改。
修改spripting的Android.mk
文件路径: MyLuaGame/frameworks/cocos2d-x/cocos/scripting/lua-bindings/Android.mk
添加搜索路径及依赖像
LOCAL_SRC_FILES += auto/lua_dragonbones_auto.cpp LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../editor-support/dragonbones $(LOCAL_PATH)/../../editor-support/dragonbones/renderer/cocos2d-x-3.x LOCAL_CFLAGS += -DDRAGON_BONES_ENABLE_LUA=1 LOCAL_WHOLE_STATIC_LIBRARIES += dragonbones_static $(call import-module,editor-support/dragonbones/renderer/cocos2d-x-3.x/android)
完整文件下载(cocos2dx3.2, cocos2dx3.3, cocos2dx3.4),其他版本的请自行修改。
更新记录:
[2015/02/07] dragonbones的Android.mk中添加liblua的搜索路径
[2015/02/07] 增加cocos2dx3.3,cocos2dx3.4相关文件下载路径
» 本文链接地址:https://www.litefeel.com/how-to-do-lua-bindings-for-dragonbones-android/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
This post was last modified on 2019 年 02 月 25 日 01:44
View Comments (9)
@zsf1975
我在配置过程中也遇到这个问题,我猜应该是路径出了问题,所以仔细检查了mk文件,发现LOCAL_SRC_FILES += auto/lua_dragonbones_auto.cpp 这里的路径是有问题的,应该是LOCAL_SRC_FILES += ../auto/lua_dragonbones_auto.cpp ,重新用ant编译成功。
@zsf1975
这个配置不是quick的,是cocos2dx的,所以直接覆盖肯定不行。也没集成过quick。
@lite3
打包apk现在还没搞好,只是用player运行win32的项目没问题。我查了下android.mk的LOCAL_C_INCLUDES配置都是正确的,cpp文件内容正常,有些郁闷,哈哈
@zsf1975
最终是弄好了是吗?
我顺利的在vs中编译了项目,并在quick 3.3 player中正确运行包含db的游戏,但是按照您写的这篇文章,编译apk,连续出现undefined reference 错误,从[armeabi] StaticLibrary : libluacocos2d.a
[armeabi] SharedLibrary : libcocos2dlua.so
D:\Projects\Runner\frameworks\runtime-src\proj.android\..\..\cocos2d-x/cocos/scr
ipting/lua-bindings/proj.android/../auto/lua_dragonbones_auto.cpp:114: error: un
defined reference to 'dragonBones::AnimationState::setCurrentTime(float)'
就开始,有约30多处,我反复查看了Android.mk配置,到最后直接下载覆盖,还是不行。检查了两天,未发现问题,关键是编译很慢啊。希望能够予以解答。我的环境是quick cocos2d-x,ndk9d,java1.6.十分感谢
@zsf1975
这里手误,实际使用的是ndk9d
ndk9b不能编译通过,我这里使用的是ndk9b?是不是ndk9d不能通过
十分感谢这么好的文章,正常在win32下运行了包含db的游戏,按照文中的步骤设定后,执行quick中build_native.bat,出现下面的错误,何解?
D:\Projects\Runner\frameworks\runtime-src\proj.android\..\..\cocos2d-x/cocos/scr
ipting/lua-bindings/proj.android/../manual/extension/lua_cocos2dx_extension_manu
al.cpp:1034: error: undefined reference to 'register_all_cocos2dx_assetsmanager(
lua_State*)'
D:\Projects\Runner\frameworks\runtime-src\proj.android\..\..\cocos2d-x/cocos/scr
ipting/lua-bindings/proj.android/../auto/lua_dragonbones_auto.cpp:7144: error: u
ndefined reference to 'dragonBones::DBCCUtils::setAllBlendFunc(dragonBones::DBCC
Armature*, int, int)'
D:\Projects\Runner\frameworks\runtime-src\proj.android\..\..\cocos2d-x/cocos/scr
ipting/lua-bindings/proj.android/../auto/lua_dragonbones_auto.cpp:7181: error: u
ndefined reference to 'dragonBones::DBCCUtils::setAllGLParamState(dragonBones::D
BCCArmature*, cocos2d::GLProgramState*)'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invoca
tion)
有mac版本的么?