链接地址:http://m.blog.csdn.net/blog/yhc13429826359/29357815

2014-6-8阅读578 评论0

前言:cocos2dx作为一个开源的移动2D游戏框架,其跨平台的特性让它备受开发公司的欢迎。这里我就不做概念性的解释了,通过这篇文章你就会了解到,它的跨平台性”是个什么样子的“---有点拟人化了
 
我举个比较形象的例子:
       有A、B、C三个部落,A部落的语言是A和O语言,B部落的语言是B和O语言,C部落的语言是C和O语言。你作为一个外星球人你会选择去学习哪种语言,让自己能够行走于各个部落之间?O语言对不对!因为学会这门语言你就可以任何一个部落中与人交流!

回到开发中,每个部落就是一个系统平台(Android、IOS),Android开发基于java语言但同样支持C++,IOS开发基于Object-C(新推出了swift--推出第二天就有公司30w招3年经验的swift程序员,我想说:“是哪家家公司?你可以招三年后的我”)但它也支持C++,而你我都知道cocos2dx是用C++编写的,那么cocos2dx的跨平台性就是用c++写的代码稍加修改就可以在Android和IOS中编译运行。

 
这就是cocos2dx的“一次编写,多平台编译运行”。注意哈:这区别于java的跨平台特性“一次编译,处处运行”(java开发的程序运行是基于JVM(虚拟机)的,不管什么平台,只要你安装了JVM,就可以运行java程序)
 
这篇文章会带你走过,如何在win32平台上创建一个cocos2dx的HelloWorld程序,然后移植到Android上去(Mac平台以后再介绍)
本人机器配置:
win7+vs2012(用着挺爽,以前一直用vs2008,现在直接越过vs2010--它启动超慢)
本文章开发环境:vs2012+cocos2d-x-2.2.2+Cywin+NDK+Android开发环境(在我的上一篇文章中介绍了如何搭建Android开发环境--

http://blog.csdn.net/longming_xu/article/details/28241045,本文就不介绍了)

学习进度表:

  1. 下载并安装vs2012(如果已安装就掠过,我在这里也不会介绍他的安装,如果你安装的其他版本也不打紧,毕竟他只是一个辅助开发的IDE而已(但很强大哦),只会在配置上有些不一致而已)
  2. 下载并安装Visual Assist X(番茄插件--因其图标是一个番茄样子,所以这么称之为番茄插件,这里我也不会介绍如何下载安装破解,自己网上去搜吧,一大堆)
  3. 下载安装python(python是一门强大的脚本语言,cocos2dx最最前身就是用python写的,这需要去看一下cocos2d的发展史。cocos2dx使用python脚本来创建新项目,后面你会看到它的创建脚本)
  4. 下载cocos2d-x-2.2.2版本
  5. 创建一个helloworld程序
  6. 下载Cygwin安装
  7. 下载NDK并安装
  8. 交叉编译项目
  9. Android开发环境搭建
 
开始上菜......

第一步:下载并安装vs2012:

我之前做端游开发一直用的是vs2008+番茄插件,用着还不错!想当初,刚接触公司项目的时候,好家伙,代码文件多达3000了,想象一下,一个习惯了脚本开发,突然要编译这3000个文件,这是何等工程!!!!每次改一个共用头文件,( ⊙ o ⊙ )!丫的就得用我半个小时还多的时间!!!!不过还好后来接触了IncrediBuild这个联机编译工具,它对c++开发者来说简直就是”神器“。我当时在公司三台机器上安装了联机编译,好家伙!!!只用10

分钟左右就搞定了3000多文件。vs系列+番茄插件+IncrediBuild简直是一个c/c++开发的超强组合!说到这就流口水!!....流口水????我怎么会想到这个词???vs2008---vs2010---vs2012我都安装过,个人感觉vs2010有点脆!光打开它就够我受的了,所以没几天就换上vs2012了(它的安装可是真够漫长的了)他们之间使用感受,可以上网上搜一下(也许后期我会写这么一篇文章...),我在这里假设你已经安装了vs2012开发环境了。

第二步:下载并安装Visual Assist X:

Visual Assist X---我们都称之为番茄插件,就是因为他的图标特像番茄(就是一个番茄,对吧)
其功能非常强大,能够提示关键字的输入,自动纠错,能够识别系统函数,用户自己定义函数和变量,为软件的开发带来了极大的方面,不仅提高了开发效率,也提高了编程的乐趣 。它是作为一个vs增强插件存在的,它让我们的编程更快捷方便。有很多小功能能够加速你的开发和纠错改错能力。(这里我假设你已经下载安装,当然你也可以选择不下载,他只是一个vs功能增强插件,没有它你一样可以用vs进行开发,只是它确实很“迷人的”,用一用就知道,别忘了破解一下...都是中国人!!)
 

第三步:下载和安装python:

python是一种面向对象、解释型计算机程序设计语言。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C++重写。我对python用的最多的就是对文件的处理和项目流程控制(打包发布啊),游戏开发中使用python脚本可以解决很多繁琐的工作,为自己项目开发节省很大一部分的时间,谁用谁知道!!!待会你就可以看到,cocos2dx如何用它来创建项目的。
下载地址:https://www.python.org/download/releases/2.7.5/(我们下载2.7.5版本,没有为什么,因为我用的就是这个版本,3.0以上版本变动很大,一些用法都变了,好像coco2dx安装脚本不支持3.0以上版本,所以乖乖下载2.7的版本吧----有些时候并不是最新的就是最好的,你懂得)
 
 
 
下载后执行python-2.7.5.msi进行安装就可以了。不要忘了在安装完成后配置环境变量哦,做程序开发如果不懂配置环境变量那么你就惨了.....
(我的这篇文章中有介绍环境变量配置的http://blog.csdn.net/longming_xu/article/details/28241045)
 

第四步:下载cocos2dx 2.2.2版本

cocos2dx每个版本的变动都很大(如果你想了解各个版本的变化,请自行谷歌),这也是我初学的时候比较蛋疼的地方,有时候就纳闷为什么cocos2dx不搞一个像unity3D那样的集成开发环境呢?每个版本的变动,竟然连工程创建方式都不一样,让我们情以何堪啊(3.0版本变动据说挺大的来...)!!!在这里我只介绍2.2.2版本的工程创建,其他版本自行谷歌喽(因为这不是本文的主要内容,如果有需要的话,可以考虑后续补充)。
下载地址:http://www.cocos2d-x.org/download/version#Cocos2d-x找到v2.2.2版本(现在都出到v3.1.1了)
 
 
OK!到这里你已经拥有了基本的开发环境(IDE(vs2012+番茄插件)+cocos2dx开发库),可以进行coco2dx开发了,下面我们就创建一个Helloworld程序吧。
 

第五步:创建一个Helloworld程序:

1、解压zip文件
 
2、解压后的文件结构是这个样子的(介绍组织结构的文章,自行谷歌)
 
3、如何创建一个项目呢?cocos2dx已经为我们提供了创建项目的工具,他是一个python脚本文件(所以你需要安装python环境)
①看见上图红框tools文件夹了吗,打开它进入project-creator目录下,红框就是项目创建脚本了(你不需要知道他是怎么实现的--如果你愿意的话你可以了解下):
 
 
②点击当前目录空白处,然后按shift+右键,选择-->在此处打开命令行窗口
 
③打开命令行,然后输入create_project.py后回车,出现提示喽,他会告诉你你需要传递的参数信息:
-project 是新建项目名称
-package 是java方式的包结构(这个是为了android移植而设定的)
-language 是你的项目所使用的开发语言(cpp即c++,lua,javascript三种)
 
 
 
################################################################################################################33
小提示:你可以自己编写一个bat小脚本命名为createProject.bat,使用的时候直接运行就可以了(调用了createProject.py)
@echo off
set /p projectName=请输入项目名称:
if "%projectName%"=="" goto inputError1
set /p packageName=请输入包标示名:
if "%packageName%"=="" goto inputError2
set /p language=请输入语言:
if "%language%"=="" goto inputError3
create_project.py -project %projectName% -package %packageName% -language %language%
pause
exit
:inputError1
@echo 项目名称不能为空!
:inputError2
@echo 包标示名不能为空!
:inputError3
@echo 选择语言不能为空!
pause

 
##############################################################################################################
④然后我们按照提示创建我们的新项目,如下图红框1内容。执行后如果出现了Done!说明你创建完毕了!红框2指出了创建项目的位置。
 
 
⑤那么我们进入项目文件夹project中,你会发现刚才新建的项目helloworld了
 
⑥进入项目中,其文件组织结构如下图,这样一个coco2dx的新项目就完成了。
Classes文件夹中是项目的代码位置
proj.开头的文件夹是各个平台的入口实现方式
Resource文件夹是资源文件位置
 
⑦让我们编译运行一下吧,进入proj.win32中,双击helloworld.sln解决方案文件,打开vs2012,执行编译运行(不用多说了)
⑧看结果吧,当当当当....大功告成!(这样我们就可以在win32平台下进行开发了---尽情地蹂躏cocos2dx吧)
 
到目前为止,我们已经学会了如何创建cocos2dx项目了,并吧helloworld程序跑起来了,可以进行win32开发了,那么下一步我们就是要将这个项目交叉编译到Android上了,下面你就会见识到cocos2dx的跨平台性了。

这里插入一点小介绍:

编写的c++代码为什么能在Android上运行?其实这是使用了java的jni(Java Native Interface --java本地调用)技术,jni技术允许Java代码和其他语言写的代码(c/c++)进行交互。
百科:众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言。但这并不等同于“第三方应用只能使用Java”。在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C/C++”的编程方式是可以实现的。(下面将要用的NDK其实就是采用了jni技术,对它简化了而已)
 
 

第六步:下载Cygwin安装

首先你会问Cygwin是什么东东对吧,其实他是一个UNIX 模拟环境,它让你可以在window下运行UNIX 环境,而不需要安装虚拟机!它对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对Cygwin产生了兴趣。说白了它就是一个小linux系统(模拟的),在Cygwin中你可以使用绝大部分Linux软件和功能。如Gcc,Make,Vim,Emacs等等。总之如果你想使用某个Linux下的功能,而windows上又找不到好的替代品的话,你就可以用Cygwin。使用的最频繁的是Gcc和Make。经常会用它们来编译一些我从网上下载的开源的工程。这些工程在Windows上编译往往很麻烦。

它的安装教程我就不写了,得配好多图....
我就先“盗用”别人的链接了供大家参考一下:
 
 

注意:安装组件过程中,必须安装的GUN MAKE组件,需要用来编译c/c++文件。对linux不熟悉的话直接全部安装Devel目录下的所有组件即可。也可以下载平台的组件包到本地,从本地安装,具体看你选择哪种方式了。安装完成,打开会出现一个linux shell的命令行窗口,测试GNU MAKE版本:make -v ,窗口显示gnu make 版本号即表示安装成功,然后你就可以模拟linux操作了。

 

那么为什么要安装它呢?这就与下面我们安装的NDK(Native Development Kit 本地开发工具包)有关系了!!由于NDK(注意:NDK r7版本和之后版本自带了一个编译器,就不需要Cygwin了)编译代码时必须要用到make和gcc,所以你必须先搭建一个linux环境, cygwin是一个在windows平台上运行的unix模拟环境,通过它,你就可以在不安装linux的情况下使用NDK来编译C、C++代码了。

 
 

第七步:下载NDK并安装

那么什么事NDK呢?NDK全称Native Development Kit 本地开发包。
 
百科:
NDK是一系列工具的集合------
①NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。
②NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
③NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。
 
如果你下载的是NDK r7之前的版本,那么你会发现都会提到Cygwin下载(以提供make 和 gcc的MinGNU环境)。NDK r7和之后的版本都自带了编译器,就不需要下载Cygwin了。(这里我不管是哪个版本,都用Cygwin去做交叉编译,就当做是学习Cygwin了,后面会介绍直接使用NDK r7自带的编译器,不使用Cygwin)
 
下载地址:
 
 
 
1、下载完成后获得一个压缩包,解压到指定文件夹就可以了,我解压到了之前搭建Android时的SDK同级目录下了D:\Android下
 
 
 
 
2、解压完成后,不要忘了配置一下NDK的系统环境变量!!!!
 
 
 
到此为止,Cygwin+NDK下载安装完毕!!!!那么如何使用他们进行交叉编译?

第八步:交叉编译项目

1、进入cygwin/home/计算机名下,打开.bash_profile
 
2、在.bash_profile文件最后添加如下内容:
#ndk的根路径
NDK_ROOT=/cygdrive/d/Android/android-ndk-r9d
export NDK_ROOT
 
#cocos2dx的根路径
COCOS2DX_ROOT=/cygdrive/g/projects-cocos2dx/cocos2d-x-2.2.2
export COCOS2DX_ROOT
 
 

小知识:bash中export命令----将一个bash局部变量变成一个bash全局变量

 
 
3、现在你可以打开Cygwin终端,执行如下命令
cd $NDK_ROOT
cd $COCOS2DX_ROOT
出现下图输出即配置成功了,你可以直接使用这些变量了(为什么要配置这些变量,下面我会解释原因!!!!)
 
4、进入cocos2dx中的proj.android\jni修改Android.mk文件(在红框内容处增加你所要编译的文件路径,helloworld示例程序只有以下三个)
 
5、 进入cocos2dx中的proj.android,执行build_native.sh文件
 
 
 
6、然后耐心等待编译完成吧!!会花费几分钟吧!!编译完成后,会出现如下界面,并在proj.android\libs\armeabi\下生成so文件(binggo!!交叉编译成功!)
 
 
####################################################################################
补充介绍:上面第二步配置Cygwin的.bash_profile文件时的NDK_ROOT和COCOS2DX_ROOT有什么用呢?你又没有注意到你执行build_native.sh的时候会打印一些信息,我们看一下build_native.sh脚本内容!!
红框1---判断NDK_ROOT变量是否定义了;(这就是我们配置了NDK_ROOT的原因)
红框2--获取当前执行的bash脚本的路径;
红框3--打印相关路径信息;
红框4--新创建一个assets资源文件夹,拷贝Resources下资源到assets中!
熟悉bash的人应该不难理解它。
 

####################################################################################

第九步:Android开发环境搭建

(我的上一篇文章 http://blog.csdn.net/longming_xu/article/details/28241045 详细介绍过了,就不再赘述了,直接使用就可以了!)
我们的交叉编译工作已经搞定了,最后就是生成apk,在Android手机上测试了。
 
1、首先打开eclipse,然后File----New-----Project--从已有的代码创建一个项目---next
 
2、导入helloworld项目地址,执行Finish
 
 
3、创建新项目目录结构如下图,你会发现他报错了,说没有导入包org.cocos2dx!!!
 
 
4、解决办法有两种:
一种是拷贝\cocos2d-x-2.2.2\cocos2dx\platform\android\java\src下的org文件夹到\cocos2d-x-2.2.2\projects\helloworld\proj.android\src中,刷新一下项目,错误消失
 
另一种是直接新创建一个项目把java的库作为lib方式加入进来(cocos2dx自行配置了此方式),添加完成后,错误消失
 
 
5、右键helloworld---properties,修改如下图(android目标版本),同理libcocos2dx---properties(不过需要指定他为lib)
 
6、ok了,没有任何错误了,右键helloworld项目,执行一下吧run as...
 
这样你就在cocos2d-x-2.2.2\projects\helloworld\proj.android\bin下生成一个android的apk文件了,可以安装到android手机上了!!!!(你也可以用AVD模拟器测试一下,不过它一般反应比较慢,建议真机测试!!)
 
 
 
 
ok了!cocos2dx的交叉编译到Android上完成了。我们总结一下吧!
1、首先你要下载安装vs2012+番茄插件----这样你就可以进行c++开发了
2、下载安装python----创建cocos2dx的新项目时候需要用到
3、下载cocos2d-x-2.2.2版本,解压即可---我们进行游戏开发的2d游戏开源框架
4、然后我们介绍了利用上面的各种工具如何创建一个helloworld程序
5、下载安装cygwin和NDK(r7以后就不需要cygwin了,它自带了一个编译器)
6、进行交叉编译项目(就是在cygwin下执行proj.android文件夹下的一个脚本:里面配置好了各种信息。在执行脚本之前不要忘了配置一下jni文件夹下的mk文件哦)编译完毕会生成一个so文件。小提示:什么是mk文件?什么是so文件?android的东西,可以去了解一下,我没去了解过!
7、最后一步就是在eclipse中导入该项目,编译生成apk了!!!!完事你就可以部署到手机上了!
 
 
建议:如果想要了解这些的原理,可以学习一下android项目开发(jni技术、ndk的使用、cygwin的使用、bash的语法啊),了解了这些你应该就会觉得交叉编译到android上其实不难
 
总算是写完了,有了上一次写博客的经验,这次尽量写的不那么啰嗦!可是依然稍显啰嗦......希望大家不要介意,只是想要写的让大家明白些。大家如有有什么疑问可以回复给我,我会及时给大家解决!同时欢迎大家批评指正哦。
 
本博客只介绍方式一:cygwin+NDK,那么方式二呢?NDK r7版本之后就不需要cygwin了,因为它自带了一个小编译器!!!配置一下eclipse即可(待续)

[原]详解如何将cocos2dx项目编译到Android平台上的(方式一:Cywin+NDK)的更多相关文章

  1. Cocos2d-x项目编译为Android应用——命令行方式

    配置: 相关工具:Cocos2d-x 3.2 + Ant 1.9.4 + Android NDK r9d + Android SDK 运行平台:OS X 10.9.4+ Xcode 6 前言:笔者使用 ...

  2. 编译在android 平台上跑的C应用程序

    Android 用的是 Bionic C, 而不是通常的glibc,因此简单使用交叉工具链并不能够编译出适合运行在android 设备上的 C/C++ 程序. 交叉工具链可以很轻松在 Android ...

  3. 详解Google Chrome浏览器(操作篇)(上)

    开篇概述 在上篇博客中详解Google Chrome浏览器(理论篇)一文中,主要讲解了Chrome 搜索引擎使用.Chrome安装和基本操作.Chrome 基本架构.多线程等原理性问题,这篇将重点讲解 ...

  4. 《React Native 精解与实战》书籍连载「Android 平台与 React Native 混合开发」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  5. Mac系统下编译支持Android平台的最新X264编码器

    Mac系统下编译支持Android平台的最新X264编码器 原文来自 http://www.mingjianhua.com,转载请注明出处 1.首先去官网下载最新的x264源代码,解压到任意目录 ht ...

  6. 前端搭建Linux云服务器,Nginx配置详解及部署自己项目到服务器上

    目录 搭建Linux云服务器 购买与基本配置 链接linux服务器 目录结构 基本命令 软件安装 Linux 系统启动 启动过程 运行级别 Nginx详解 1.安装 方式一:yum安装 方式二:自定义 ...

  7. (转) shiro权限框架详解06-shiro与web项目整合(上)

    http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springM ...

  8. 一篇看懂JVM底层详解,利用class反编译文件了解文件执行流程

    JVM之内存结构详解 JVM内存结构 java虚拟机在执行程序的过程中会将内存划分为不同的区域,具体如图1-1所示. 五个区域 JVM分为五个区域:堆.虚拟机栈.本地方法栈.方法区(元空间).程序计数 ...

  9. logback的使用和logback.xml详解,在Spring项目中使用log打印日志

    logback的使用和logback.xml详解 一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分 ...

随机推荐

  1. Apache与Nginx网络模型

    Nginx的高并发得益于其采用了epoll模型,与传统的服务器程序架构不同,epoll是linux内核2.6以后才出现的.下面通过比较Apache和Nginx工作原理来比较. 传统Apache都是多进 ...

  2. SQL中 and or优先级问题

    资源来源:http://www.linuxidc.com/Linux/2012-03/56267.htm 刚刚在项目中遇到这样一个问题,SQL语句如下: select * from LOAN_BACK ...

  3. (转)C++中extern “C”含义深层探索

    (转)C++中extern “C”含义深层探索 转自: http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html 1.引言 C++语 ...

  4. hdu 4349 Xiao Ming's Hope lucas

    题目链接 给一个n, 求C(n, 0), C(n, 1), ..........C(n, n)里面有多少个是奇数. 我们考虑lucas定理, C(n, m) %2= C(n%2, m%2)*C(n/2 ...

  5. perl5 第三章 操作符

    第三章 操作符 by flamephoenix 一.算术操作符二.整数比较操作符三.字符串比较操作符四.逻辑操作符五.位操作符六.赋值操作符七.自增自减操作符八.字符串联结和重复操作符九.逗号操作符十 ...

  6. [置顶] WEBSOKET服务器搭建

    简单介绍一下tomcat的webSocketAPI使用: 在这里啰嗦几句:[ 很多朋友听说webSocket不知道是什么.知道是什么不知道怎么用,知道怎么用不知道具体实现.其实我当初也是这样. 实际上 ...

  7. URlRewriter组件下载及使用说明

    下载地址:http://www.chx99.cn/file/URLRewriter.rar在web.config添加如下配置节: <httpHandlers>    <add ver ...

  8. Oracle游标-循环查询表中数据(表名),并执行

    Oralce 表中存有一个字段,该字段存储表名,要把该表中的所有表名查询出来(即表名结果集),且执行结果集from 表名结果集: declare v_ccount ); --定义一个游标变量 curs ...

  9. C++的发展,特点和源程序构成

    最近一段时间在学习C++,也借了几本相关的书籍.因为之前主要用C#写程序,大概写了也有两年了吧.所以在回过头来学习C++,还是挺快的.但是我觉得光看书是不行的,要写!!因此我想把我整个学习C++的过程 ...

  10. Java基础之编程语法(一)

    1.基本格式 所有Java代码都应该在一个class中. Java是严格区分大小写的. Java是一种自由格式的语言.Java代码分为结构定义语句和功能执行语句,功能执行语句最后必须以分号结束. 2. ...