配置

来源:互联网 发布:三个数据库应用系统 编辑:程序博客网 时间:2024/05/02 03:17

2013年1月3日 

    首先,下载JAVA的JDK(Java Development Kit),就是JAVA开发工具包。下载网站:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

原本想下载最新的1.7版本,但是网上传说不兼容cocos2d-x,木有办法,想学cocos2d就只能用1.6版本啦。我所下载的是Java SE 6 Update 38。

下载完毕后,直接安装,教程说需要记住安装路径(切勿默认,且路径中不要有中文和空格!——否则在后来搭建cocos2d-x开发环境时会出错)!因为下面配置环境变量是需要的。我的安装路径为C: \Java\jdk1.6.0_38【注:我的是WIN7系统】。

右键点击“计算机”->属性->高级系统设置,点击“环境变量”

在下面的系统变量里,点“新建”,变量名:JAVA_HOME,变量值:C: \Java\jdk1.6.0_38(也就是刚才的安装路径)。

 

再新建变量名:CLASSPATH,变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%

JAVA_HOME%\lib\tools.jar(注意里面的标点符号!);在系统变量里找到Path变量(如果没有就新建),点编辑,将原有的变量值前面加上 %JAVA_HOME%\bin;%JAVA_HOME%\jre\b

in;(注意如果是新建就没有后面的分号)。这样我就配置好了JDK。

其次,我需要下载Eclipse和ADT(Android Developer Tools)。Eclipse就是JAVA的一个集成开发环境,我需要用这个开发平台来设计我的游戏。ADT就是Android开发工具,是 Eclipse 平台下用来开发 Android 应用程序的插件。Eclipse+ADT下载网站:

http://developer.android.com/sdk/index.html

下载后,直接解压到C:\ Java即可。这样我的JAVA文件夹下就有了4个文件夹和一个EXE文件。

新建环境变量:变量名:ANDROID_SDK,变量值:C:\Java\sdk\platforms;C:\Java\sdk\tools;C:\Java\sdk\platform-tools(此处需要注意,导入platform-tools的路径是因为新版本中将adb等命令搬家了)。在PATH环境变量值中加入:%ANDROID_SDK%;(加在最前面即可)。

使用WIN+R呼出“运行”,输入:cmd,进入CMD,在CMD窗口中输入:java –version(注意空格和减号),出现以下信息则表示JDK安装成功:

继续在CMD窗口中输入:adb –h,则应该出现以下信息:

(太长省略部分图片)

打开eclipse文件夹,双击eclipse.exe就会打开开发环境。刚开始eclipse会让设置文件存储路径,我设置为D:\workspace。好,开发环境已经搭建完毕!

(注:eclipse中文语言包迅雷URL地址——我朋友说最好不要使用中文包,这样可以一点点的锻炼英语能力,不过,我用了……无所谓啦……:http://js.oyksoft.com/2012/BabelLanguagePack-eclipse-zh_3.5.0.v20091121043401.zip

2013128

cocos2d-x是一个支持多平台的开源2D手机游戏引擎,基于OpenGL ES,是cocos2dC++移植版。

下载地址(我下载的是2.0.4版本):

http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download

虽然很想用Eclipse来搭建开发环境,但是没弄懂,在这之前,先来用VS2010来学习吧,毕竟还是基本通用的【添注:29日日记有配置方法】。

(具体的配置流程根据“子龙山人”的配置教程而来,教程网址为:http://www.cnblogs.com/zilongshanren/archive/2011/09/27/2192928.html

下载之后,解压缩,文件如下:

双击cocos2d-win32-vs2010.sln文件,就可以在VS2010中看到解决方案的项目列表:

右键点击解决方案->生成解决方案,大概需要5分钟。

生成之后,很庆幸的没有失败,全部成功。这样就可以运行其中的项目,来查看效果。右键点击TestCpp->设为启动项目,按Crtl+F5,就可以看到cocos2d-x的一些效果示例了。

点击界面中的示例,就可以查看各种特效,如下图:

 

然后,需要导入模板,打开cocos2d-2.0-x-2.0.4\template\msvc文件夹,双击InstallWizardForVS2010.js,弹出对话框,安装成功!

为了避免麻烦,以适合我这样的鸟蛋学习,新建项目就直接在该解决方案中新建,在解决方案中,右键点击解决方法->添加->新建项目,就能看到cocos2d的模板了,项目名称:HelloCocos2dWorld,位置保持默认不变(改变位置需要复制lib文件,暂时跳过,以后学习)。点击“下一步”->“完成”。

就这样,VS2010中新建了一个cocos2d-x项目,文件列表如下:

右键点击项目->生成。提示成功。右键点击项目->设为启动项目。按Ctrl+F5,程序启动,界面如下:

2013年2月9日    

突然发现了一个教程,里面有写到一些我之前没看过的配置过程,既然看到了,就再试一下,结果……依然……但是这次我仔细研究了下,发现在C盘中多了一个文件夹Program,而在运行create-android-project.bat后的报错信息中,我发现有一段是说“Files\Java\cocos2d-2.0-x-2.0.4……”无效,编辑查看create-android-project.bat,但是却没有发现相关的路径,再去看Cygwin的相关配置文件,也没有发现该路径。说明不是配置信息的问题,于是我就从cocos2d-x的所在文件夹往前找,突然发现我居然犯了一个超低级的错误,原来在cocos2d-x的文件夹路径中,是不可以有空格的(当然中文更是不可以),于是乎将所有的相关程序全部搬家,搬到了C:\Java下,再更改相关配置和环境变量。终于在创建cocos2d-x项目时没有报错!(不过还有一些小插曲,具体的问题再下面的配置方法内说明)

(配置方法及编译方法主要学习于http://www.cnblogs.com/lhming/)

首先,需要下载NDK,下载地址如下:

http://developer.android.com/tools/sdk/ndk/index.html

下载后解压到C:\Java\android-ndk-r8d,如下:

然后,打开Eclipse,依次进入“窗口”->“首选项”->“Android”->“NDK”,将NDK路径复制进去,并保存(应用),如下:

在之前学习时所下载的Eclipse+ADT已经搭载了CDT,所以不用额外下载了。

再来下载Cygwin,下载地址如下:

http://www.cygwin.com/

点击setup.exe,就会开始下载安装文件。下载之后运行,它只是个安装启动文件,具体的资源还需要下载。将setup.exe剪切到比较大的盘下,如E:\cygwins,之后还需要在这个文件夹下存放安装缓存文件。

启动setup后,直接点Next,进入下一步,选择Direct Connection在线安装(如果有离线包则选择Install from Local Directory),点Next。此处为选择安装路径,建议选择C:\cygwin(如果C盘够大),下面的默认选择All Users。继续Next,选择缓存目录,建议选择比较大的盘下,如E:\cygwins(建议和setup放在一个文件夹内),下载后会是一个类似ftp%……的文件夹。点击Next,选择网络连接方式,默认选择第一个,然后Next,选择下载站点,我选择的是163的,点击Next。到这里会比较慢了,需要加载安装项,教程上有说在此处需要选择性安装,因为NDK需要的不多,但是对于我这样的鸟蛋来说找起来太费劲,所以直接找到Devel,将后面的Default改成Install(点击就会改变)即可,点击Next,开始下载安装,不过这段时间会很长,我等了2个小时。

这样就安装好了Cygwin,运行Cygwin(若没有快捷方式则运行该文件C:\cygwin\bin\mintty.exe),在弹出的命令行窗口中依次测试如下口令,若输出各版本信息和描述信息,则说明安装成功:cygcheck –c(若status都是ok的话则说明运行正常),gcc –v,g++ --version,make –versin,gdb –version。

接下来配置Cygwin,执行cygwin.bat,将会在cygwin\home\文件夹下生成一个以计算机登录名命名的文件夹。在文件夹中找到“.bash_profile”文件,用文本编辑器UltraEdit打开(一定要用,使用编辑器打开文件时,会提示你是否转换格式,千万不要转换!以下简称UE),然后在最后面加上如下代码:

NDK_ROOT=/cygdrive/C/Java/android-ndk-r8d

export NDK_ROOT

上面的C/Java/android-ndk-r8d就是NDK的安装路径。此处需要注意的是此文件中是不支持“\r”换行符的!最好是使用UltraEdit来打开修改文件(不转换格式),否则会报错!

(注:如果运行cygwin编译时发现提NDK_ROOT未定义,则在“.bashrc”文件内的最后也加上如上代码,若提示ndk_build无法找到文件路径,则将C:\cygwin\etc\defaults\etc\skel中的.bash_profile复制到cygwin\home\登录名文件夹下,再使用UltraEdit重新编辑)

终于可以进入正题了,配置create-android-project.bat并创建新项目。

使用文本编辑器打开create-android-project.bat,修改内容如下(修改的地方用下划线并加深表示,斜体为注释,不要添加进去):

@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  (此处为WIN7系统获取权限)

setlocal

:: Check if it was run under cocos2d-x root

if not exist "%cd%\create-android-project.bat" echo Error!!! You should run it under cocos2dx root & pause & exit 2

if not exist "%~dpn0.sh" echo Script "%~dpn0.sh" not found & pause & exit 3

:: modify it to work under your environment  

set _CYGBIN=C:\cygwin\bin  (此处为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=C:\Java\sdk\tools  (此处为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=C:\Java\android-ndk-r8d  (此处为NDK的绝对路径)

if not exist "%_NDKROOT%" echo Couldn't find ndk at "%_NDKROOT%" & pause & exit 6

…… (以下内容无修改忽略)

配置好路径后,右键点击create-android-project.bat->以管理员身份运行:

输入包名,命名规则与ADT中的相同,如:org.cocos2dx.hellocc。

然后输入项目名,如:hellocc。

此处要求我选择现有的SDK版本,选择2即Android2.3.3。(后面会有问题出现,最好选择这个版本)

创建成功!进入cocos2d-x目录,就可以看到我们刚刚创建的项目文件夹。

在这个文件夹下,有三个文件夹,分别是Classes(存放默认工程的C++文件)、proj.android(Android的Eclipse工程项目)和Resources(资源文件夹)。

2013年2月10日    

打开Cygwin,开始编译我们新建的hellocc项目,具体操作步骤如下:

1.打开cygwin,进入到hellocc/proj.android目录,输入./build_native.sh开始执行编译操作:

折腾了一天,发现还是报错,再看看错误信息为main.cpp:Permission denied (没有权限),原来……权限问题……(注:此处可能会有SDK版本问题的警告,只需修改AndroidManifest.xml中的minSdkVersion值对应当前版本即可,我选择的是2.3.3版本,即9)然后使用VS2010尝试打开main.cpp文件,提示“无法访问”。(chmod 777 ./*这个指令给予权限,ndk的权限我不知道怎么给)

在教程中,提供了一个获得管理权的一个注册表文件,该文件向右键菜单中增加了一条“管理员取得所有权”的菜单项,然后可以快速取得该文件夹的管理员权限,在此我先使用一种比较笨的方法(WIN7系统)。

首先右键点击hellocc文件件->属性,选择“安全”页,选择你的用户登录名,然后点击“编辑”,在弹出的界面中,选择用户登录名,将下面的“完全控制”后的“允许”选中,如下图所示:

然后再使用同样的方法将android-ndk-r8d文件夹取得权限(教程中没有说到这个文件夹需要权限,但是我编译时总报警告和错误,取得权限后成功)。

再运行编译,成功,如下图:

(补充一点,每次编译时都需要执行cd命令到cocos2d的文件夹,特别麻烦,不过可以通过修改cygwin\etc\bash.bashrc文件来自动跳转,使用UE打开文件,在最后添加如下命令cd c:/java/cocos2d-2.0-x-2.0.4即可在执行Cygwin时自动跳转到cocos2d-x的根目录)

编译通过,可以看到在……\hellocc\proj.android\libs\armeabi里面有三个文件,其中就有编译生成的libgame.so文件。

(注:在WIN7中,有时将文件夹取得所有权无效,需要编辑“高级”,及进入“安全”页后,点下面的“高级”,在弹出的界面点“更改权限”,选择你的用户登录名,点“编辑”,在弹出的界面中,将“完全控制”后面的“允许”选中,且要选择下面的应用到子容器选项。推荐使用下面的方法)

将教程中的注册表文件拷贝如下(使用UE编辑后另存为gl.reg,然后右键->以管理员身份运行,就可以在右键菜单中看到了):

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" 

接下来开始使用Eclipse导入刚刚编译通过的hellocc项目。打开Eclipse,在左侧的资源管理器中,右键->“导入”,选择Android的Existing Android Code Into Workspase,然后点击“下一步”,在弹出的界面中,选择hellocc项目中proj.android的路径,就会看到可以导入的hellocc项目,选中项目,然后点击完成即可(此处不要选中Copy projects into workspase和下面的添加到工作集),如下图:

导入项目后,发现hellocc.java文件报错,报错信息分别为:无法解析导入 org.cocos2dx.lib和Cocos2dxActivity 无法解析为类型,也就是说项目没有成功导入 org.cocos2dx.lib的Cocos2dxActivity库文件。还好某大神在他的教程的留言回复中解答了该问题,可以说这个是cocos2d-x的2.0.4版本中的一个小BUG吧。解决方法如下:

打开cocos2d-2.0-x-2.0.4\template\android中的copy_files.sh文件(使用UE),可见有如下代码:

……(部分隐藏)

COCOSJAVALIB_ROOT=$COCOS2DX_ROOT/cocos2dx/platform/android/java

……(部分隐藏)

copy_src_and_jni(){

    cp -rf $HELLOWORLD_ROOT/proj.android/jni $APP_DIR/proj.android

cp -rf $HELLOWORLD_ROOT/proj.android/src $APP_DIR/proj.android

……(部分隐藏)

也就是说COCOSJAVALIB_ROOT是lib的路径,而在下面的copy函数中却没有调用复制,所以在这个函数里加上如下代码:

cp -rf $COCOSJAVALIB_ROOT/src $APP_DIR/proj.android

修改之后,以管理员身份使用模板重新创建项目helloccgame(注意包名不可重复,即重新起一个包名),并运行Cygwin重新进行编译操作(基本上第一次编译都会出错,然后多次使用“获得管理权”后就会成功)。然后再通过Eclipse导入新项目,发现,依然N多错误,但是lib库已经成功被导入。接下来再来研究新的问题,问题提示信息如下:

SoundPool.OnLoadCompleteListener 无法解析为类型 Cocos2dxSound.java 

类型为 Cocos2dxSound.OnLoadCompletedListener 的方法 onLoadComplete(SoundPool, int, int)必须覆盖或实现超类型方法 Cocos2dxSound.java 

没有为类型 SoundPool 定义方法 setOnLoadCompleteListener(Cocos2dxSound.OnLoadCompletedListener) Cocos2dxSound.java 

没有为类型 SoundPool 定义方法 autoPause() Cocos2dxSound.java 

没有为类型 Cocos2dxGLSurfaceView 定义方法 setEGLContextClientVersion(int) Cocos2dxGLSurfaceView.java 

依次百度上面的问题发现,很有可能是SDK的版本问题所致,例如SoundPool.OnLoadCompleteListener是在SDK2.2之后才有的。原来在我刚才重新建项目时使用了SDK2.1,所以再次新建项目helloccgame233(选择SDK2.3.3),编译后导入(此处会报错SDK版本问题的警告,修改minSdkVersion值即可——上文有写),OK,终于成功!

右键->调试方式->Android Application,连接的手机自动运行程序,若未运行可将……\helloccgame233\proj.android\bin中的helloccgame233.apk程序安装至手机,运行成功!(因为cocos2d-x的2.0以上的版本支持了OpenGL ES2.0,默认的工程创建是要求运行于OpenGL ES2.0以上的,而目前模拟器还未支持此功能,所以要用真机调试,建议先用VS2010调试无误后再移植到Android中。至于如何用真机调试,只需要打开手机的USB调试模式即可,也可以使用360手机助手安装等等)

手机运行截图如下:

知道了如何去新建,那么之前用VS2010创建的又如何能移植过来呢?来尝试一下将之前学习时创建的HelloCocos2dWorld项目移植到Eclipse中去。

为了作以区别,修改部分代码如下:

修改HelloWorldScene.cpp文件下的CCLabelTTF对象实例的创建为

CCLabelTTF* pLabel = CCLabelTTF::create("Hello Cocos2d World Into Eclipse""Arial", 24);

进行重新生成并运行,运行截图如下:

首先,通过cocos2d-x的create-android-project.bat创建一个项目为:helloccworld,版本为2.3.3(创建项目后修改minSdkVersion值为9,否则编译会出错)。

然后将……\HelloCocos2dWorld\Classes下的所有文件复制粘贴到……\helloccworld\Classes中(此处应该先删除原来生成的文件),以及将……\HelloCocos2dWorld\Resources文件夹同样复制到Resources文件夹中。

再来使用UE修改helloccworld\proj.android\jni下的Android.mk文件,其中LOCAL_SRC_FILES:后面添加的是Classes下的cpp文件,LOCAL_C_INCLUDES:后面添的是所使用到的库的h文件,LOCAL_LDLIBS:后面添加的是使用到的库的cpp文件(因为我所使用的两个项目都是模板项目,所以基本文件相同,此处无需修改)。

获取helloccworld文件夹的权限后,运行Cygwin,执行编辑(具体方法同上),报错,错误信息为:HelloWorldScene.cpp文件中的Box2D/Box2D.h无法找到,此处的解决办法为删除对Box2D.h的头文件引用,因为helloccworld项目没有使用到该头文件(也可以在Android.mk文件中添加该头文件的路径:……\cocos2d-2.0-x-2.0.4\external\Box2D)。重新编译,报错权限不足,再次获取文件夹的权限后编译,通过。

打开Eclipase,导入helloccworld项目(具体步骤同上),右键->调试方式->Android Application,手机自动运行程序,截图如下(测试手机分辨率为800*480,所以会出现下图的黑框问题,字母及图片无误,黑框问题待学习解决):

其实,只能搭建好开发平台,就可以实现跨平台的开发了,补充学习了新建cocos2d的Android项目和跨平台转移cocos2d项目后,我又该继续学习之前的基础知识了。

考虑再三之后,决定还是继续以VS2010为学习平台,毕竟的是从C++入门编程世界的,相对于Java,还是对C++了解的多一些,理解的也快一些。

原创粉丝点击