上周五下班前,打包成功了。我很高兴,周六去踢场足球,周日去现场看了最后一分钟掉球的恒大,度过了一个愉快的周末。然后,噩梦的周一开始了。
我再次打包,打算打包就安装,但结果是失败的。为何?我周五明明成功了,为何又失败了?我又打了一次,结果就是还是失败,原因是用了其他工程打包,而非目标的那个工程。嚓···这个明显就是坑我自己。!@@!
又过了一整天了,其中又发生了一件很奇怪的事情。
当我选择 android-23进行打包工程的时候,可以打包成功,可是运行失败,报了.so文件构建错误的Exception。
我把这个cocos-Lua工程翻了一个遍。
开始的时候,不断地说我们没有定义引入Cpp中的方法。
我重新把所有的Android.mk文件全部查看了一遍。重新认识了mk文件的所有定义。
Android.mk文件属性定义。
然后我发现,其中一个我修改的mk文件写错了。
就是
\frameworks\cocos2d-x\cocos\scripting\lua-bindings\proj.android\Adnroid.mk
其中:
以上可以知道,把lua_HNLuaTest_auto.cpp加入到这个模块中进行编译。
我的错误在于:
这个LOCAL_STATIC_LIBRARIES可以知道,其引入了之前Park/android.mk编译的静态库,其中这里的LOCAL_STATIC_LIBRARIES的名称必须与Park/android.mk定义的模块名称一致,否则就连接到之前编译的Park静态库.
(之前的错误就是这样引起的。!@@!)
再打包apk一次,显然,成功了。
运行,没事~!
为了验证可以,我就去修改AppDelegate.cpp。在他们的方法中加入一句log看看。
再打包一次apk,运行到手机中,恩·!看到log了。
这下安心了,那么就继续往下走吧,到下一步,lua中调用这个C++类。
由于之前我们在auto/api/已经生成了lua_HNLua_auto.lua文件,根据上文提到的文章,Android平台的引入。
1.先把这个lua文件zip压缩。
2.把它引入到cocos code IDE工程中。如图:
3.在lua工程中引入Test类。
4.在cocos - IDE 中运行工程。
经过一天的摧残,你至少要懂得几个知识点:
1.mk文件的属性作用
2.lua打包android的apk的过程
3.cocos Lua工程的结构 ,其中它存在了相当多的引入,各个文件包引入相当乱一定要理顺。所以以下总结一下 这几天的所经历的步骤。
1.在工程的cocos文件夹中新建c++文件,为何在这个cocos文件夹中?
2.在这个自建的C++文件夹中新加入Android.mk文件,将它编译成一个模块
3.在tolua工具文件夹中运行修改好了py脚本,新构建hpp文件,存放在auto文件下面。
4.修改/scripting/lua-binding/pro.android/android.mk 把c++的模块加入编译。
5.在工程的入口文件,注册好C++类。
#include “../auto/lua_HNLuaTest_auto.hpp”
register_all_HNLuaTest(L);
6.压缩生成好的lua文件,在cocosIDE工程中引入
7.在Lua工程中调用这个C++类。
其中每一个步骤都不能有点儿的出错,因为出错的话,错误难找,也难解。
最后付上我的工程例子:
CocosLuaWithCpp3
PS:工程有点大,已经压缩了,这个你们要怪cocos-IDE了。