上周五下班前,打包成功了。我很高兴,周六去踢场足球,周日去现场看了最后一分钟掉球的恒大,度过了一个愉快的周末。然后,噩梦的周一开始了。

我再次打包,打算打包就安装,但结果是失败的。为何?我周五明明成功了,为何又失败了?我又打了一次,结果就是还是失败,原因是用了其他工程打包,而非目标的那个工程。嚓···这个明显就是坑我自己。!@@!

又过了一整天了,其中又发生了一件很奇怪的事情。

当我选择 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了。

cocos lua调用java_【Tech-Lua】Cocos-2dx-Lua调用java的小白教程(三)相关推荐

  1. cocos2dx java调lua,【Tech-Lua】Cocos-2dx-Lua調用java的小白教程(二)

    手把手教你如何在Win中的Cocos-2dx-Lua調用Java 網上有很多文章,說怎么Lua調用C++最佳實踐,什么官網說明文檔,可以這么一說,這些所謂的教程全都是斷手斷腳的,對於小白來說,一到了關 ...

  2. as3调用java_关于openamf我用as3链接java程序,并调用相关的方法,但是能够连上,却不能够调用是怎么回事...

    我用的openamf做flashremoting服务器是没问题的!这是as的代码!package{importflash.display.Sprite;importflash.net.ObjectEn ...

  3. c jni 调用java_如何使用JNI从C调用JAVA方法

    我想使用JNI( Java Native Interface)来调用特定的java setter方法,将short []缓冲区作为参数传递给它. Java方法实现如下: public void set ...

  4. Cocos 2d-X Lua 游戏添加苹果内购(二) OC和Lua交互代码详解

    这是第二篇 Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程 这是前面的第一篇,详细的说明了怎样添加内购项目以及填写银行信息提交以及沙盒测试员的添加使用以及需要我们注意的东西,结 ...

  5. Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程

    事前准备 最近给游戏添加了苹果的内购,这一块的东西也是刚刚做完,总结一下,其实这里不管是游戏还是我们普通的App添加内购这一块的东西都是差不多的,多出来的部分就是我们Lua和OC的交互的部分,以前刚开 ...

  6. Lua党看过来|Cocos Creator 即将支持Lua!

    廖大是Cocos2d-lua的老大,这是大家都晓得的.近日,廖大却不远千里飞来厦门,与Cocos Creator团队多位小鲜肉老腊肉整日厮混在一起,大门不出二门不迈,你知道为什么吗? 真相随着廖大今天 ...

  7. Lua学习笔记6:C++和Lua的相互调用

    曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有. 新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项目啦,只是为什么 ...

  8. lua 函数调用1 -- 闭包详解和C调用

    这里, 简单的记录一下lua中闭包的知识和C闭包调用 前提知识: 在lua api小记2中已经分析了lua中值的结构, 是一个 TValue{value, tt}组合, 如果有疑问, 可以去看一下 一 ...

  9. Lua移植到arm上 并实现在arm上 可以让lua脚本调c语言,C语言调用lua脚本

    Lua移植到arm上 并实现在arm上 可以让lua脚本调c语言,C语言调用lua脚本 首先参考http://wiki.chumby.com/index.php?title=Lua&print ...

最新文章

  1. 取代MybatisPlus?阿里推出了新 ORM 框架!(两者对比参考)
  2. 【研究院】低调务实的网易人工智能,你熟悉吗?
  3. 中兴手机数据通道打不开_中兴手机有流量,但是数据开不了怎么办?
  4. SRS-DOLPHIN
  5. swift通知栏推送_如何使用Swift使用推送通知构建食品交付应用
  6. [转载] Python 递归 深入理解递归 Python递归剖析,绝对让你看懂!
  7. 百度产品经理vs 腾讯产品经理:技术大牛与小白
  8. postgreSQL分页
  9. GitHub年度报告出炉:中国开源贡献仅次美国、Python成第二热门语言
  10. arduino使用oled代码_如何做一个Arduino无线气象站
  11. 当Github上下载的代码需要安装作者写的库时
  12. PHP通过PHP/JAVA Bridge调用JasperReport报表
  13. E - Elevator
  14. 济南推动大数据产业发展 居民生活将有新变化
  15. dell电脑如何安装ubuntu系统_戴尔T630安装Ubuntu操作系统及Gaussian 09
  16. 光耦w314的各引脚图_光电耦合器的管脚图及工作原理
  17. 我国土壤分布现状及应对措施
  18. ifix从sqlserver里读数据_Ifix学习(7)
  19. 计算机tpm,无法运行Win11的罪魁祸首 TPM是什么?
  20. ueditor图片上传 flash插件初始化失败

热门文章

  1. HOW-TO:带有MySQL的JEE应用程序中具有集群功能的Quartz Scheduler
  2. 如何使用JSON和Servlet创建JQuery DataTable
  3. 先进的ListenableFuture功能
  4. 终极JPA查询和技巧列表–第3部分
  5. 在实践中使用延迟队列
  6. Java RESTful API集成测试
  7. Xuggler视频处理简介
  8. python单行箭头_在Python中,如何让箭头尖在指定的坐标处开始/结束?
  9. Linux 命令之 less -- 分屏上下翻页浏览文件内容(查看文件内容/显示文件内容)
  10. oracle创建一个表同已存在表结构一样