cocos2dx迁移到android

== lua项目迁移到Android ==
=== 准备
* 下载cocos2d-x 3.5
* 下载sdk,ant
* 下载android-ndk-r9b(执行./genbinding.py使用)
=== 1,先创建出lua项目
{{{
cdcocos2dx ./setup.py
sourceFILETOSAVESYSTEMVARIABLE cocos new pupu -p com.lubangame.pupu.android -l lua -d pupu1
$ cd pupu1/pupu
}}}

=== 2,添加自己的cpp文件

  • 将需要的cpp文件(夹)放到(推荐){{{/pupu1/pupu/frameworks/runtime-src/Classes }}}目录下。
  • {{{$ cd cocos2d-x/tools/tolua }}}
  • 根据模板格式编写xx.ini文件:
    :: [xx] –文件名
    :: prefix = xx –生成cpp文件前缀
    :: target_namespace = xx –cpp文件的命名空间
    :: cocos_headers = -I%(cocosdir)s/cocos –cpp文件需要引入文件头的路径
    :: headers = %(cocosdir)s/pupu1/pupu/…/Request.h –cpp文件需要的文件头
    :: classes = Request –生成的类
    :: 其余勿需大改动(无特殊要求)

  • 如果有自定义命名空间:
    {{{$cd cocos2d-x/tools/bindings-generator/targets/lua}}}
    –在ns_map: 下面写上自己的命名空间

  • {{{$cd cocos2d-x/tools/tolua}}}
    –编辑genbindings.py,在cmd_args={….}中添加自己的xx.ini文件
  • 执行./genbingdings.py(自动绑定cpp–lua),生成对应cpp,hpp文件在
    {{{cocos2d-x/cocos/scripting/lua-bindings/auto}}}下面的lua_xx_auto.cpp,lua_xx_auto.hpp
  • 复制两份文件到Classes目录下。编写proj.android/../jni下的Android.mk文件,将这个cpp文件编写进去。
  • {{{$cd cocos2d-x/…./Classes}}},编写AppDelegate.cpp,在{{{lua_State* L = engine->getLuaStack()->getLuaState();}}}后面注册自己的cpp代码。注册函数在lua_xx_auto.hpp里面。

=== 3.关于Android.mk的通配写法:
{{{

遍历目录及子目录的函数

define walk
(wildcard (1)) (foreache, (wildcard (1)/), (call walk, $(e)))
endef

遍历Classes目录

ALLFILES = (callwalk, (LOCAL_PATH)/../../Classes)

FILE_LIST := hellolua/main.cpp

从所有文件中提取出所有.cpp文件

FILE_LIST += (filter (ALLFILES))
FILE_LIST += (filter (ALLFILES))
FILE_LIST += (filter (ALLFILES))

LOCAL_SRC_FILES := (FILELIST: (LOCAL_PATH)/%=%)

LOCAL_C_INCLUDES := (LOCAL_PATH)/../../Classes  
LOCAL_C_INCLUDES +=
(shell ls -FR (LOCAL_C_INCLUDES) | grep(LOCAL_PATH)/)  
LOCAL_C_INCLUDES :=
(LOCAL_C_INCLUDES: (LOCALPATH)/ (LOCAL_PATH)/%) \
(LOCALPATH)/../../../cocos2dx/external  (LOCAL_PATH)/../../../cocos2d-x/tools/simulator/libsimulator/lib
}}}

=== 4,编译项目
* {{{$ cocos run -p android -j 16}}}
* note:在执行过程中出现的问题:
:: LuaBasicConversions.h是模板文件,里面的luaval_to_object()方法需要四个参数。在lua_xx_auto.cpp中有地方调用这个方法的时候会传入五个参数引发错误。 自己处理(将最后一个参数干掉..)

end.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值