cocos2dx-x3.0的正式版出来也有一段时间了,现在最新的版本是到了3.2alpha,和2.x系列相比,能够找到的相关资料除了官网上的wiki,其他的也不见得多,遇到的一些和2.x的差异和问题在这里记录下来备忘。

和2.x的shell脚本相比,3.x系列的配置全部python化了,最大的好处当然是跨平台,在windows下面也可以脱离cywin进行android版本的编译,虽然ios版本还是离不开xcode,但是可以mac和win分别编译不同版本的感觉还是不错的,省时省力。

先从python开始,在3.x的lua项目中除了android版本的编译,还有一个更重要的部分是lua-binding的生成,与2.x要在tolua++中手写.pkg文件不同,3.x所采用的bindings-generator(位于cocos2d-x/tools下)基本上是全自动解析的,自己新加入的一些需要绑定的cpp类只需要添加(独立于cocos2d-x模块外的部分)或修改(修改cocos2d-x自身)一下cocos2d-x/tools/下的ini文件即可,确实方便了不少,但是相对的配置的麻烦也出来了。

想要通过执行cocos2d-x/tools/tolua/下的genbindings.py来生成对应的绑定文件(位于cocos2d-x\cocos\scripting\lua-bindings\auto,也可以通过修改genbindings.py文件来生成到不同路径下),就得先准备好python,python的两个插件,ndk。这里的python也可以用于3.x项目文件的生成以及android版本的编译,项目生成在后面再说,虽然有些因果倒置,但是还是提前从这里入手。

在cocos2d-x\tools\tolua下面的README.mdown以及官网的wiki上有记载怎么样安装,这里单独说一下windows版的配置,就windows版需要手动diy的部分比较多:

1.readme中说需要的是ndk:android-ndk-r9b,现在官网最新的版本是android-ndk-r9d,建议用最新版本,根据操作系统选择32位或64位的版本,要和后面的adt和jdk保持一致,但是如果用r9c和r9d的话,需要将tolua下的ini里面的android_headers中的4.7改为4.8,这也就是为什么readme中要求用r9b的原因,(另外提一句如果用r9c在生成的时候还会出错,需要根据报错的地方修改ndk中对应的math.h文件注释掉出错的那一行),下好后解压,然后将解压的路径新增到环境变量的NDK_ROOT中

2.安装python, (32bit) from (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi). 这个就严格按照要求来,注意是32位版本的,64位版本的装不了所需的两个插件。装好后将python的安装路径加到环境变量PATH里,重开cmd命令行输入python看看有没有即可验证。接着装pyyaml: http://pyyaml.org/download/pyyaml/PyYAML-3.10.win32-py2.7.exe 以及pyCheetah :https://raw.github.com/dumganhar/cocos2d-x/download/downloads/Cheetah.zip, 下下来解压到 python路径的“Python27\Lib\site-packages”里

这样一来就万事俱备了,在cmd的tolua路径下运行python genbindings.py,然后就可以生成lua绑定了。

说完这个,回到开始的项目配置,python这个主角已经装好了,ndk也入住了,要通过cocos2d-x下面的setup.py生成新项目还需要一些其他的东西,基本都是用来编译android项目的:

adt:Android Development Tools,注意32位还是64位的版本,和ndk以及jdk保持一致,这个决定了android的api level,可以通过附带的skdmanager来下载不同版本android的api用于编译。下载好后解压,然后在环境变量中新增ANDROID_SDK_ROOT指向此路径下的sdk目录。以后可以用这个里面的eclipse来debug生成的android项目

jdk:Java SE Development Kit,依然注意32位还是64位版本,和ndk以及adt保持一致,一定是jdk,仅有jre是不行的。下载好后安装,安装完成后在环境变量中新增JAVA_HOME指向此路径,可以在cmd中输入java和javac都能有输出来验证

ant:Apache Ant,用于辅佐编译android项目(Apache Ant is a Java library and command-line tool that help building software),下载好后加压,在环境变量中新增ANT_ROOT指向此路径下的bin目录,然后再加入PATH中,可以在cmd中输入ant验证

最后,添加一个环境变量COCOS_CONSOLE_ROOT指向“cocos2d-x-3.x\tools\cocos2d-console\bin”这个路径,然后就可以在cmd中到cocos2d-x-3.x的路劲中运行python setup.py。这样一切都搞定了(?),在cmd中运行cocos,可以创建项目,编译项目等等一条龙服务。创建一个新项目:cocos new MyGame -p com.MyCompany.MyGame -l lua -d ./MyCompany ,-p后面接的是android的包名, -l可以选择cpp或者lua,-d就是目录了,这样实际上是根据不同的项目模板(cocos3.x/tests下面)来生成新的工程配置文件。

生成之后cmd进入该目录,可以输入cocos compile -h看看编译的参数表,3.2alpha新增了不少选项,有待尝试。-p android可以生成android项目,--ap 后面的参数就是adt里android的api level,还有一个比较有用的--ndk-mode,除了debug和release以外还可以选择clean作为参数重新编译项目。

cocos这个命令所用到的python文件都在cocos2d-x-3.x\tools\cocos2d-console下面,编译android的在plugin目录下的project_compile/build_android.py。如果要添加其他需要编译的路径(比如说自己要用的cpp库),修改project-android下的build-cfg.json文件,加入新的路径到ndk-module-path中,注意相对路径

相比cocos2d-x-2.x那个windows系统需要在cywin下运行的build_native.sh来编译android工程,新的基于python的配置文件要更加自动化,脚本化一些,虽然在最开始也感觉这个cocos命令一下集成了许多的功能让人不知道从何下手,还不如2.x时候一个文件来得直接(3.x也可以一个文件,就是build_android.py来搞定,稍加配置然后python build_android.py -p apilevel myGame即可),但是经过一段时间的使用,无论从lua的绑定还是自动编译的过程而言,3.x这套脚本配置确实要进化了很多,当然,3.x相对于2.x进化的不只是在这方面,还有许多新的feature(坑)加入,这个请听下回分解。

从cocos2d-x-2.x到cocos2d-x-3.x: lua项目配置的更多相关文章

  1. cocos2D(三)---- 第一cocos2d的程序代码分析

    在第一讲中已经新建了第一个cocos2d程序,执行效果例如以下: 在这讲中我们来分析下里面的代码,了解cocos2d的工作原理,看看屏幕上的这个"Hello World"是怎样显示 ...

  2. 小尝试一下 cocos2d

    好奇 cocos2d 到底是怎样一个框架,正好有个项目需要一个游戏框架,所以稍微了解了一下.小结一下了解到的情况. 基本概念 首先呢,因为 cocos2d 是基于 pyglet 做的,你完全可以直接用 ...

  3. 在cocos2d里面如何使用Texture Packer和像素格式来优化spritesheet

    免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...

  4. Cocos2d入门--3--小球运动

    本章直接上源代码.内容不难,主要就是 HelloWorldScene.h文件: #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H_ ...

  5. cocos基础教程(5)数据结构介绍之cocos2d::Value

    1.概述 cocos2d::Valie 是一个包含了很多原生类型(int,float,double,bool,unsigned char,char* 和 std::string)外加 std::vec ...

  6. cocos基础教程(5)数据结构介绍之cocos2d::Map<K,V>

    1.概述 cocos2d::Map<K,V> 是一个内部使用了 std::unordered_map的关联容器模版. std::unordered_map 是一个存储了由key-value ...

  7. cocos基础教程(5)数据结构介绍之cocos2d::Vector

    cocos2d::Vector cocos2d::Vector<T>是一个封装好的能动态增长顺序访问的容器.cocos2d::Vector<T>中的元素是按序存取的,它的低层实 ...

  8. cocos2d::Vector

    C++中的vector使用范例 一.概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector是一个容器,它能够存放各种类型的对象,简 ...

  9. cocos2d ccitemimage

    #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class H ...

  10. ! cocos2d 预编译重复

    由于预编译文件重复,导致下面的类没有被编译,所以,在写代码的时候也没有提示还报错,说LoadingScene没有定义. #ifndef __HELLOWORLD_SCENE_H__ #define _ ...

随机推荐

  1. LeetCode OJ:Maximum Product Subarray(子数组最大乘积)

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  2. mac上安装mongoDb以及简单使用

    年初粗略学习了下node,这好几个月没玩,突然发现已经忘完了,还是简单记录下基本知识,方便再次使用时资料查找. 一.mongoDb安装 在mac上安装了brew的情况下,可以直接执行命令 brew i ...

  3. maven打的包中含源文件jar包

    如何用maven package打的jar包中还包含源文件(resource)jar包: 在pom中如下添加: <build> <plugins> <plugin> ...

  4. html调bug

    F12-->Sources-->相应文件-->找有波浪线

  5. nginx 流量拷贝模块 ngx_http_mirror_module 安装试用

    1. 下载源码编译 https://nginx.org/download/nginx-1.13.4.tar.gz   2. 下载依赖模块包       这里直接yum 安装 yum -y instal ...

  6. EL and JSTL(Jsp Standard Tag Libary)(转)

    一.什么是 EL 语言. 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语音. 二.EL 语言的作用. 为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAS ...

  7. Hadoop体系结构之 Yarn

    1.1 YARN 基本架构 YARN是Hadoop 2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManage ...

  8. vue-cli结构

    |-- build // 项目构建(webpack)相关代码 | |-- build.js // 生产环境构建代码 | |-- check-version.js // 检查node.npm等版本 | ...

  9. python使用wxPython创建一个简单的文本编辑器。

    ubuntu下通过'sudo apt-get install python-wxtools'下载wxPython.load和save函数用于加载和保存文件内容,button通过Bind函数绑定这两个函 ...

  10. rbenv配置

    git clone https://github.com/rbenv/rbenv.git ~/.rbenv # 用来编译安装 ruby git clone git://github.com/sstep ...