一、问题
当下,使用COCOS2D-X开发的同学看上去不少了,但奇怪的是,在中文网络搜索中使用EasyNDK-for-cocos2dx的介绍资料见之极少!?
所谓的跨平台开发,COCOS2D-X+Cocos Studio尽管节约了开发人员不少时间,但是大凡被这个“利器”吸引的人在投入后可能都没有感觉过轻松。其中一个主要原因就是,如果你选择使用C++途径的COCOS2D-X+Cocos Studio游戏开发,真正要实现跨多种平台时,你还要学习使用Android平台相关的Java,iOS平台相关的Objective-C和Windows Phone平台相关的C#。至于需要学习这些内容的多还是少,则与开发者的开发进度密切相关。总之,当然是越熟练越好了。
本文介绍的是基于上述环境开发时后期的集成第三方平台时所要解决的一大难题。我当下想集成的是有米积分墙广告SDK。但遗憾的是,有米官方仅提供了基本方式的集成支持DEMO,即是在Android平台这块,他们仅提供了Andoid平台Java平台技术集成有米积分墙广告SDK有关示例;而在iOS平台这块,也仅提供了iOS平台Objective-C平台技术集成有米积分墙广告SDK有关示例。因此,这下惨了!需要开发人员对于Andoid平台Java技术和iOS平台Objective-C技术都要有深入了解。
二、办法
在研究上述问题时,我无意间搜索到了EasyNDK-for-cocos2dx这个东西。老实说,真是感觉太幸运了!
有了EasyNDK-for-cocos2dx,尽管还需要我们了解Java技术和Objective-C,但是简单与省事多了。
(1)老办法
以Android平台为例,要实现C++与Java代码的互操作,必须借助于JNI及NDK,操作繁杂,且相当容易出错。对于,iOS平台,则需要开发者非常了解Objective-C与C++混合编程技术。
例如,在Android版本程序中需要从Cocos2d-x的C++端按钮点击触发Java端的一个弹出屏幕,这时需要使用Android端多线程技术编程--这一块无法逃避。相关的代码示例,对于最基本的C++与Java代码的互操作倒是还不少,但是对于实战中复杂情况则少得多了(甚至很难找到较完整的示例)。
(2)Easy-NDK新办法
Easy-NDK开发者可以说为全球cocos2d-x开发者作出一个重大贡献,值得大力表扬。开发者正是从上述问题的复杂中体会到这一过程的艰难,编写出这个工具。具体地说,他使用大家,无论在哪一平台,都易于理解的消息通信机制,以一种统一方案和极简化的代码彻底地解决了上面基于cocos2d-x开发后期可能面临的技术难题。
更为值得欣慰的是,针对2.x和3.x都有了版本支持,都发布在github平台上。具体DEMO剖析,先不解决了(不好意思,因为还有其他一些紧急任务要做)。地址如下:
2.X版本:https://github.com/aajiwani/EasyNDK-for-cocos2dx
3.x版本:https://github.com/alfonsocejudo/EasyNDK-for-cocos2dx3
我现在已经成功制作了2.x版本针对Android平台的使用(我的应用中集成有米积分墙),对于iOS平台,相信也是EASY。所有这些在分析几遍DEMO后,你需要的仅仅是一些复制操作而已,再加几句简单的代码调用。
无论老手还是新手,抓紧去试试吧,1个小时左右时间就够了;否则,你会很后悔。
三、画蛇添足
前面我研究Mob的ShareSDK时发现他们的跨平台方案也相当精简,看出来其SDK开发者对于上述三大语言把握相当了得。从其源码分析来看,怀疑他们也借用了EasyNDK类似思想!有好事者,去看看吧。
四、参考资料
1,http://www.tairan.com/archives/3333。
2,http://www.tuicool.com/articles/JN3URzr。