手游开发行业越来越依赖引擎跨平台开发,其中比较好上手的引擎之一便是Cocos2dx引擎,鄙人在一较小手游公司从事手游开发仅两年,起初从Android搞起,由于开发团队结构不太稳定,一年间,换了三个组长,来过三个小弟,最终也就我死皮赖脸不愿意走,成为开发里“资历最老的新人”。一年后,已经能轻松处理近二十款Android手游得UI调整、Debug、换皮、各种计费SDK、统计分享等业务,毫无压力,也毫无动力。一年后,两个前辈外调,开始厌倦,也生退意,中秋节前跟老板提了一提,老板以老鸟走了、小鸟未初飞挽留,动员我学习cocos引擎,同时开又始招揽贤才,让我带好新人的Android业务再走。半年间,好在留住了两个小鸟,且有点Android基础,又脑瓜子灵光,倒是没让我太费心,还便宜了我自己研究cocos引擎。由于C++基础不太扎实,很少给我安排Cocos作业,顶大是参与一个页面布局之类的皮毛。而且策划那边也比较混乱,偶尔出一些无足轻重或没头没脑的任务,比如,我连C++算法都不熟练的前提下,会给我安排两个连组长都搞不定的iOS改版,在我简单2D场景逻辑都没掌握成熟的时候,给我弄一个基于Cocos3.X引擎的3D宠物客户端项目,也好在我有大把时间摸索,还擅长偷梁换柱举一反三,凑凑合合能交差。又半年后,简单的场景逻辑已经成熟,大部分Android本事也都教给了两个小鸟,偶尔给我安排一个2dx场景布局也玩玩闹搞定,可能此后老板期待着我自己识趣,早点主动隐退,很少给我安排大项目,不过我开始迷上引擎,经常自己搞一些有趣的实践效果做到自己的Demo中。后来公司一款轻游戏彻底包给了我,无论是换皮,还是计费,或者新玩法改版,甚至是iOS版发布,都成了我分内之事,一切按部就班信手拈来。
由于早前的3D宠物客户端开发这边技术不成熟、美术宠物3D模型缺胳膊少腿,仅实现了宠物的基本3D旋转,尚未实现宠物本身的常规动画、触摸互动模块,不久主抓这个3D项目的策划又出差了,这个项目就彻底冻结了,如果不是我不懂3DMax,非得个人搞出个模样,这个烂尾项目至今也让我耿耿于怀。
当初给顶头上司报进度看效果的时候只能在Mac的iPhone模拟器上看,或者装到iPhone测试机上,而比较主流的Android平台一直没心思琢磨引擎3.X系列的Android版本编译问题。而今在赋闲在家,再整理项目时又找到了原来的工程,开始较真于cocos2dx之3.x系列的Mac环境中APK编译问题,经过半宿的配置、查阅、验证,最终验证出一套可参考的编译流程,接下来鄙人先简单明确几个问题:
Option 1:对于主流的cocos 2.x系列引擎的Android版本编译过程不再赘述,但是对于 3.X系列工程,前期版本的创建、编译流程已经不再适用,个人觉得,前期2.X版本的处理过程偏向于模板、集成环境配置、图形化界面编译,后期3.X版本的处理过程主要依托Python命令创建、编译、运行。
Option 2:3.X项目结构与早期版本稍异,2.X系列工程所有项目共用一套引擎库,默认存放目录cocos2dx-2.X/projects/,不适宜对引擎源码进行个性化改造,3.X系列工程基于一套引擎库创建,创建过程中,单个项目会拷贝一份私有库,而且项目存放位置没有太大约束,由于项目自带私有库,引擎源码个性改造不会影响其他项目,就是多二三百兆的磁盘开销。
Option 3:2.X项目可以依靠Eclipse的CDT插件进行编译配置,但是似乎该插件对3.X项目不再支持,常见
An internal error occurred during: "Launching MyProject".
java.lang.NullPointerException
以后无聊再回头追究这种问题的根源,既然不能通过插件配置环境变量,我们完全可以凭借命令实现Android版本的编译、运行。
接下来开始简略列出操作流程:
Step 1:
创建项目命令,与2.X系列大同小异
Desktop yaong$ cocos new -p com.yaong.test3x -l cpp Engine3X
前提要求是配置好引擎的依赖环境,软件支持可能涉及 SDK、NDK、 Ant,比较稳妥的配置顺序应该由 SDK、NDK、ANT到 Cocos2dx 3.X的setup.py,这样应该能够较规范的在环境变量中加入需要的变量。另外,3.X系列推荐使用NDK r10c及以上(非必须)
下载地址:http://dl.google.com/android/ndk/android-ndk-r10c-darwin-x86_64.bin
编译NDK方法:
ndk$ chmod a+x android-ndk-r10c-darwin-x86_64.bin
ndk$ ./android-ndk-r10c-darwin-x86_64.bin
上面两条命令将生成android-ndk-r10c的文件夹,将其拷贝治固定的目录,然后将其手动配置到环境变量中。
Step 2:
编译项目命令:
ProjectDir$ cocos compile -p android 9
实测 ndk-r9d,编译没大问题,只是警告说应该用r10c+,项目首次编译可能耗时较长(一般二至五分钟),会在控制台不断刷新编译条目,再次编译,刷新条目数量骤减,编译时间缩短,但是控制台会在编译库校验过程中卡上几十秒,看似卡死的状态,实则在后台校验编译期文件,绝对不要中断。
Step 3:
运行项目命令:
ProjectDir$ cocos run -p android -j 9
只要Adb调试桥上有待机设备,将在后台自动推送、安装apk、启动程序,