如何做dragonbones的lua绑定(Android)

发表评论 阅读评论

这篇写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相关文件下载路径

标签: , ,

  1. Francis | #1

    @zsf1975
    我在配置过程中也遇到这个问题,我猜应该是路径出了问题,所以仔细检查了mk文件,发现LOCAL_SRC_FILES += auto/lua_dragonbones_auto.cpp 这里的路径是有问题的,应该是LOCAL_SRC_FILES += ../auto/lua_dragonbones_auto.cpp ,重新用ant编译成功。

  2. lite3 | | #2

    @zsf1975
    这个配置不是quick的,是cocos2dx的,所以直接覆盖肯定不行。也没集成过quick。

  3. zsf1975 | #3

    @lite3
    打包apk现在还没搞好,只是用player运行win32的项目没问题。我查了下android.mk的LOCAL_C_INCLUDES配置都是正确的,cpp文件内容正常,有些郁闷,哈哈

  4. lite3 | | #4

    @zsf1975
    最终是弄好了是吗?

  5. zsf1975 | #5

    我顺利的在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.十分感谢

  6. lite3 | | #6

    @zsf1975
    这里手误,实际使用的是ndk9d

  7. zsf1975 | #7

    ndk9b不能编译通过,我这里使用的是ndk9b?是不是ndk9d不能通过

  8. zsf1975 | #8

    十分感谢这么好的文章,正常在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)

  9. | #9

    有mac版本的么?

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
回到顶部