【cocos2D-x学习】1.配置环境

【cocos2D-x学习】1.配置环境


【目标】:

在windows平台和android平台运行cocos2d-x的sample程序


【参考】:

《Cocos2d-x win7 + vs2010 配置图文详解(亲测)》 : http://www.cnblogs.com/andyque/archive/2011/09/27/2192928.html

《cocos2d-x入门(7)-win7下把win32游戏移植到Android平台(无需cygwin和minigw)》: http://codingnow.cn/cocos2d-x/706.html

《Cocos2d-x +Android + Windows 7》 : http://www.cnblogs.com/graphicsme/archive/2012/11/06/2756914.html

《Cocos2d-x学习之windows 7 android环境搭建》: http://www.cnblogs.com/lhming/archive/2012/06/27/2566460.html



        一个完整的cocos2D-x工程应该是一个跨平台的工程,能够在多个平台上运行,这里受制于硬件限制,仅给出Windows平台和Android平台的配置方案。


一、在windows上运行

        在 windows 上运行比较容易,且由于代码是可以跨平台公用的(当然也不是绝对的),所以可以先将windows上配置好。


1、下载cocos2D-x

        我使用的是 http://cocos2d-x.googlecode.com/files/cocos2d-2.0-x-2.0.4.zip , 最新版本可以在 http://cocos2d-x.org/projects/cocos2d-x/wiki/Download 上找到。


2、运行SAMPLE工程

      由于我使用的是VS2010,所以打开 cocos2d-win32.vc2010.sln ,可以看到里面包含了多个WIN32工程和LIB工程,任意选择一个WIN32工程为启动项目即可运行。


3、创建新工程

       这个在下一节会详细讨论。


二、在android上运行

        相比windows,在android上运行的配置要复杂得多。这里假设已经完成了windows的配置,至少已经把cocos2D下载下来了,另外本机上已经安装并配置好了 eclipse,并且已经有了android开发环境。


1、下载并安装 cygwin

        这里要特别说明:如果不是要新建工程,在新的NDK的支持下,并不需要配置cygwin。那么,在尝试新建工程的时候,可以直接复制cocos中sample工程来进行修改。如果想要通过模板建立新的cocos工程,则需要下载cygwin。

        下载的地址:http://www.cygwin.com/,下载时可以选择从163的镜像下载。另外需要注意的是,和一般的软件不同,cygwin 在下载时的配置,默认是什么都不下载,需要手动从列表中选择需要下载的内容。具体 cygwin 下载相关的可以参考 http://www.programarts.com/cfree_ch/doc/help/UsingCF/CompilerSupport/Cygwin/Cygwin1.htm 【主要我配置 cygwin 的时间比较久远了,记忆已经不太清晰了,这里不再详细展开】


2、安装CDT

       如果是直接安装的eclipse的C++版本,则可以跳过这步。在线安装的地址是   CDT - http://download.eclipse.org/tools/cdt/releases/juno  (我的eclipse是JUNO版的)


3、安装NDK

       早先的攻略还需要安装cgywin,目的是给工程提供C编译器,不过目前较新的NDK版本都自带编译器,所以可以跳过这步,直接安装NDK。我使用的是http://dl.google.com/android/ndk/android-ndk-r8b-windows.zip , 最新版本可以在http://developer.android.com/tools/sdk/ndk/index.html 上找到

       安装好NDK之后, 准备工作就算是完成了,可以用eclipse 打开 cocos的 sample 目录下的 HelloCpp工程来做个测试【打开的方法是 Android Application from existing code】。

 

4、添加编译依赖

       打开工程后,会发现编译报错,显然类 Cocos2dxActivity 什么的不配置一下是找不到的,在Properties > Java Build path > Link Source,选择E:\cocos2d-x\cocos2d-2.0-x-2.0.4\cocos2dx\platform\android\java\src路径,Name不与src冲突即可。

 

5、复制资源文件

       HelloCpp的资源文件是在根目录下的resource里面,在android工程中引用不到,一个简单的解决方案是将其resource下的所有文件和文件夹,整体复制到 android下的asset文件夹下。


6、添加builder

       可以参考 http://codingnow.cn/cocos2d-x/706.html 的配置,里面提供了图文说明。这里提供一个简单的文字说明:

       1)在工程的  Properties -> Builders -> New -> Program -> OK 创建一个新的builder

       2)在 main 页中,Location 选择ndk下的ndk-build.cmd 命令,如我本地的配置是 E:\java\android-ndk-r8e\ndk-build.cmd , Working Directory 填  ${workspace_loc:/ HelloCpp}  【可以通过点击 Browse workspace来选择】。其中  HelloCpp 是工程名,以后对于其他工程来说,需要修改这个名称

       3)在refresh 页中,勾选第一个复选框 "Refresh resources upon completion",然后选最后一项 "Speicific resources" 并勾选 "Recursively include sub-folders",在 Specify Resources 中选择本工程的 JNI文件夹。

       4)在 Enviroment 页中,添加 NDK_MODULE_PATH  E:\Cocos2D\cocos2d-2.0-x-2.0.4;E:\Cocos2D\cocos2d-2.0-x-2.0.4\cocos2dx\platform\third_party\android\prebuilt

       5)在 Build Option页中,将 Run this builder 的所有复选框都选中,勾选Specify working set of relevant resources,并在Specify Resources 中选择本工程的 JNI文件夹。

       6)OK,点击创建这个builder【别忘了给他取个名字】,并通过点击UP使之移动到第一位。

 

7、运行

       一切工作都已经完成,可以选择运行,不过在虚拟机上运行会报错,是由于模拟器不支持gles2.0导致的。需要配置。这里怕麻烦直接使用真机测试即可。MoonWarriors 之类的其他工程测试也是PASS的,不过都需要等待期C部分编译完成,耗时还是挺长的。


三、创建新的android工程

      创建新的windows工程会在下一节说明,这里跳过直接说android的。这一段是学习 http://www.cnblogs.com/lhming/archive/2012/06/27/2566467.html

1、修改 create-android-project.bat

      创建的核心内容就是运行cocos2D文件夹下的 create-android-project.bat ,不过这个bat文件有很多问题,所以需要手动修改一下。

      首先,在我的 WIN7 电脑上,直接运行会因为权限的问题而无法正常工作,所以需要添加权限,可以在 setlocal 之前添加 cd /d %~dp0:

@echo off
:: This script is used to create an android project.
:: You should modify _ANDROIDTOOLS _CYGBIN _NDKROOT to work under your environment.
:: Don't change it until you know what you do.
cd /d %~dp0
setlocal
      然后,需要指定三个环境变量  _CYGBIN 、 _ANDROIDTOOLS 、 _NDKROOT,分别修改为电脑上 cygwin 的 BIN文件夹,android SDK的TOOL文件夹,NDK的文件夹即可:

:: modify it to work under your environment	 
set _CYGBIN=e:\cygwin\bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & pause & exit 4

:: modify it to work under your environment
set _ANDROIDTOOLS=e:\java\android-sdk\tools
if not exist "%_ANDROIDTOOLS%" echo Couldn't find android sdk tools at "%_ANDROIDTOOLS%" & pause & exit 5

:: modify it to work under your environment
set _NDKROOT=E:\java\android-ndk-r8e
if not exist "%_NDKROOT%" echo Couldn't find ndk at "%_NDKROOT%" & pause & exit 6

      这样就算修改完成了。

      现在可以运行 create-android-project.bat 了,但是需要注意的是,如果是WIN7平台,一定要右键选择 “以管理员身份运行”,否则权限不够还是不能正常创建。


2、修改权限

      创建出来的工程在WIN7 平台上还有些问题,好几个文件的权限设置都是无法读写,所以需要手动设置一下权限,我这里借用一下“日月之明”的方法:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\runas]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\exefile\shell\runas2]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\exefile\shell\runas2\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"

       保存为XX.reg,并运行,就会在右键上出现“管理员取得所有权”的指令,对新创建的工程执行该指令,即可以解决权限问题。


3、导入到eclipse

      剩余的工作同第二节的4~7步一样。


四、将WIN32下调试通过的工程移植到android平台

1、复制代码至 jni 文件夹

包括头文件和代码文件,当然你也可以不放在 JNI下,但是对这个文件夹我们设置了自动编译,所以放在这里比较方便。下面可以自建文件夹进行归类。


2、修改 Android.mk

2.1  修改 LOCAL_SRC_FILES

添加代码文件的路径,这里如果一个文件一个文件的添加则太麻烦了,可以参照《编写Android.mk中的LOCAL_SRC_FILES的终极技巧》,例如我要添加JNI文件夹下的main.cpp 和 src路径下的所有cpp文件,则可以这样写:

SRC_FILE_LIST := $(wildcard $(LOCAL_PATH)/src/*.cpp)
SRC_FILE_LIST += main.cpp

LOCAL_SRC_FILES := $(SRC_FILE_LIST:$(LOCAL_PATH)/%=%)

2.2  修改 LOCAL_C_INCLUDES

添加头文件的路径,同样的可以参考原来导入 Classes 文件夹的方法。


2.3  修改 LOCAL_WHOLE_STATIC_LIBRARIES 和 import-module

默认是不带box2d引擎的,如果你不需要使用,则不用管这一块,如果你需要使用box2D引擎的话,则需要在LOCAL_WHOLE_STATIC_LIBRARIES中添加box2d_static,并在import-module中添加box2D:

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static box2d_static
            
include $(BUILD_SHARED_LIBRARY)

$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions) \
$(call import-module,external/Box2D)

3、修改 Application.mk

在NDK R9以上还需要修改一下这里,在Application.mk里面添加下面代码

APP_CPPFLAGS += -Wno-error=format-security

不然会无法通过编译


4、修改 main.cpp

我自建的工程一般会干掉原来的 HelloWorldScene,但是main.cpp中还include到了这个文件,但是实际上没有使用,所以需要将原来的 include 给删掉。


5、复制资源文件

和上面的第二节中是一样的,但是容易忘,所以在这里再次提醒。


6、修改平台差异代码

这一步是最麻烦的。主要包含两个方面,一个是原工程引入了依赖于平台的方法,例如引用了 win32上自带的宏,如 min max之类的。需要修改掉。另一方面是编译器本身有差异,我遇到的一个问题就是ndk的编译器不能够识别“引用”, ccPoint 参数不能在需要 ccPoint & 的地方使用,颇挫。


7、运行

按照原始模板工程的方法运行即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值