一、闲谈

手游开发行业越来越依赖引擎跨平台开发,其中比较好上手的引擎之一便是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、启动程序,

四 总结

以上步骤,皆经过我一一验证,可以实现,至于其他注意项,纯属个人实践总结,尚无深入研究。亟待更多智者指正文中谬误之处,期待更多同志一起研究讨论引擎相关技术。舍友上班去了,装逼大法修成,我也该睡了······呼呼·····早安


更多相关文章

  1. android导入外部数据库到项目中的使用方法
  2. Android(安卓)studio项目发布到Maven中央库
  3. Android7.1.2源码解析系列】Android编译系统翻译------Android_B
  4. 音视频学习之NDK交叉编译基础
  5. Android直播开发之旅(16):使用FFmpeg保存网络流到本地文件
  6. 编译时注解之butterknife的简单实现
  7. Android(安卓)推送之原理与初触Androidpn(Android(安卓)Push Noti
  8. [置顶] Android学习之Build环境初探
  9. [android]一个关于UDP和TCP的项目实践(二)

随机推荐

  1. 【Android(安卓)View事件(二)】详解事件分
  2. android版本更新全程解析
  3. Android(安卓)退出多个Activity | 退出程
  4. android画出图片阴影!!!!!!!!!!!!!!
  5. 个人作品
  6. Android面试系列文章2018之Java部分IO编
  7. 安卓开发文件缓存方法的具体实现(参考代
  8. Android(安卓)官网无法访问的解决方法
  9. android的armeabi和armeabi-v7a
  10. Android存储数据的方式