1.配置cocos2d-x & Android开发环境
我想如果有意搞这个东东的,应该不用什么图文并茂了吧,稍微看一下就明白了。
1.1.安装VS2008
这是微软开发的集成开发环境,也是cocos2d-x的C++主战场,VS2008是VS系列最稳定的版本。
下载地址:http://pan.baidu.com/share/link?shareid=532811852&uk=637953331
激活方式就不提供了,自己度娘。MSDN按需安装。
1.2.安装Visual Assist_X(可选)
这款神奇是VS2008必装的插件,智能提示,辅助功能,是VS的好基友。
下载地址:http://pan.baidu.com/share/link?shareid=564415924&uk=637953331
激活方式你懂的。
1.3.安装Cygwin
Cygwin是windows平台上运行Linux的模拟环境,对于从Linux到Windows的应用程序移植,或者是使用GNU工具集在Windows上进行嵌入式开发都非常有用。可以通过在线安装,也可以离线进行安装,我们这里主要用来进行cocos2d-x跨平台(安卓)的交叉编译。
Cygwin下载地址:http://pan.baidu.com/share/link?shareid=561636163&uk=637953331
Cygwin离线包下载地址:http://pan.baidu.com/share/link?shareid=561923288&uk=637953331
采用在线安装你要保证网速够给力,不然几个小时是必须的,这里提供的离线包包含了develop的相关工具。
1.4.安装Java
Java是Android支持的编程语言,也是安卓环境搭建的基础。主要麻烦的地方是环境变量的设置。
下载地址:http://www.java.com/zh_CN/ 下载chromeinstall-7u55.exe安装,生成名为jdk1.7.0文件夹
然后百度下载JDK,jdk-7-windows-i586.zip, 安装在上面同一个目录下,生成名为jre7文件夹。
环境变量配置:
JAVA_HOME:D:\Andorid\Java\jdk1.7.0_25(安装路径)
CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
1.5.安装带Android ADT的Eclipse
Eclipse集成开发环境是用以android app,当然也可以进行C++的开发,只要你安装相应的组件即可。安装Android ADT就可以进行Android app的开发,这里选择直接使用谷歌提供的打包好Android ADT的Eclipse,就免去了ADT的安装等操作。
下载地址:http://developer.android.com/sdk/index.html
安装完成后,通过目录下SDK Manager.exe下载相应SDK版本就可以了。
1.6.安装Android NDK
Android NDK是Android系统对外提供的基于C++接口的软件工具包,它集成了交叉编译器,只要修改相应的编译脚本文件就可以创建出so文件,且自动将其与Android app进行打包。
下载地址:http://developer.android.com/tools/sdk/ndk/index.html
使用方式:进入Eclipse→Windows→Preferences→Android→NDK→选择所在的路径。
需注意的是,有些较高NDK版本在和cocos2d-x配合编译的时候会出现问题。所以各个工具之间应选择可兼容的。
配置:修改在安装cygwin目录下,如本人安装目录如下D:\cygwin64\home\yangxg
然后最好用UE编辑器点开.bash_profile,然后在最下面加上ndk路径以及cocos2dx路径
NDK_ROOT=/cygdrive/e/android/android-ndk-r9c
export NDK_ROOT
保存退出,重启cygwin,如果有初五dos2unix -n .bash_profile .bash_profile
1.7.安装cocos2d-x
cocos2d-x引擎这里就不再介绍了,国内官网是http://cocos2d.cocoachina.com/。
下载地址:http://cocos2d.cocoachina.com/download
安装方式:
(1)点击build-win32.bat,用来编译cocos2d-x文件。
(2)点击install-templates-msvc.bat,用来安装VS模版(向导)。
(3)create-android-project.bat,用来创建Andorid工程,在使用之前要先对其内容进行配置(Cygwin路径,Android SDK路径,Android 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:\android\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:\android\android-ndk-r7
- if not exist "%_NDKROOT%" echo Couldn't find ndk at "%_NDKROOT%" & pause & exit 6
较高版本的cocos2d-x已经不再支持VS2008,而是转向支持比较高的VS2010和VS2012了,所以选择的时候请注意。
2.创建HelloCocos2dx的Win32项目
可以在vc2008 中添加 Cocos2d-win32 的应用模板。
进入到cocos2d-x解压之后的目录
再进入template\msvc。
然后双击 InstallWizardForVS2008.js 脚本执行,你应该能看到像下面的提示。
这时,再打开 vc2008, 就可以在新建项目下出现cocos2dx的模板;创建新的工程
编译的时候还是会出现问题:
fatal error C1083: 无法打开包括文件:“CCStdC.h”: No such file or directory
fatal error C1083: 无法打开包括文件:“cocos2d.h”: No such file or directory。。。。。。
解决办法:
1、项目属性->c/c++->常规->附加包含目录加上这些文件:(可能coco版本不一样 文件名可能不一样)
D:\cocos2d-2.0-x-2.0.4\CocosDenshion\include;D:\cocos2d-2.0-x-2.0.4\cocos2dx\platform\third_party\win32\OGLES;D:\cocos2d-2.0-x-2.0.4\cocos2dx\platform\win32;D:\cocos2d-2.0-x-2.0.4\cocos2dx\platform;D:\cocos2d-2.0-x-2.0.4\cocos2dx\include;D:\cocos2d-2.0-x-2.0.4\cocos2dx;D:\cocos2d-2.0-x-2.0.4;D:\cocos2d-2.0-x-2.0.4\cocos2dx\kazmath\include;D:\cocos2d-2.0-x-2.0.4\external;
2、添加库目录:工具->选项->项目和解决方案->vc++目录添加:
D:\cocos2d-2.0-x-2.0.4\Debug.win32
再编译出现 问题:fatal error LNK1181: 无法打开输入文件“libcocos2d.lib”
解决:项目属性->连接器->常规->附加库目录:;D:\cocos2d-2.0-x-2.0.4\Debug.win32
编译成功,运行 出错 :没有找到libcocos2d.dll.......
解决:D:\cocos2d-2.0-x-2.0.4\Debug.win32 下面的.dll文件复制到c:/window/system32下。
接下来运行出错(本人项目 Release):无法找到*.exe的调试信息。
解决:首先打开菜单 项目->项目属性页
再运行正常,但是关闭的时候出现错误:debug assertion failed
但如果项目配置是Debug的话,该错误不会出现,网上查了一下,发现是个很水深的命题。具体怎么改我也不知道,就先用debug模式吧。有知道的朋友,留个答案给我。
3.创建HelloCocos2dx的Android项目
(1)关闭VS项目,将cocos2d-x中刚才创建的HelloCocos2dx的VS项目剪切到别的地方。
(2)点击已配置好的create-android-project.bat,输入包名和项目名称,项目名,接下来选择平台版本,输入ID。
退出, 这样项目就建立完成,
其中Classes:是存放默认工程的C++文件
proj.android 是android的eclipse工程项目
Resources 资源文件
(3)Cygwin的交叉编译,执行build_native.sh进行编译
出错:
Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: ./jni/Android.mk 。。。。
解决:这是因为上面选择ID所对应SDK版本不存在,所以选择一个存在的ID问题就解决了。
出错:
make: *** [obj/local/armeabi/objs-debug/cocosdenshion_static/SimpleAudioEngine.o ] Error 1
解决:在文件夹CocosDenshion/android中找到SimpleAudioEngine.cpp文件,注释掉: //LOGD(deviceModel);
以下错误类似:
把cocos2d-2.0-x-2.0.4\CocosDenshion\android\opensl文件夹下的OpenSLEngine.cpp文件 //LOGD(errorInfo);
cocos2d-2.0-x-2.0.4\CocosDenshion\android\opensl文件夹下的SimpleAudioEngineOpenSL.cpp//LOGD(errorInfo);
再执行:make: *** [obj/local/armeabi/objs-debug/cocos2dx_static/platform/android/CCCommon.o] Error 1
解决:在Application.mk文件后面添加下面代码:APP_CPPFLAGS += -Wno-error=format-security
等待编译生成so文件,so文件在proj.android\obj\local\armeabi目录下,如下即成功了。
- x/platform/third_party/android/prebuilt/libtiff/libs/armeabi/
- StaticLibrary : libcocos2d.a
- Compile++ thumb : cocosdenshion_static <= SimpleAudioEngine.cpp
- Compile++ thumb : cocosdenshion_static <= SimpleAudioEngineJni.cpp
- StaticLibrary : libcocosdenshion.a
- SharedLibrary : libgame.so
- Install : libgame.so => libs/armeabi/libgame.so
- make: 离开目录“/cygdrive/d/Cocos2d-x/cocos2d-2.0-rc2-x-2.0.1/HelloCocos2dx/proj.android”
5.导入eclipse,生成apk
先看一下CDT是否安装,点菜单File-New-Project,出现新建项目界面,出现了C/C++项目,如下图所示:
本人下载的是已经安装好CDT的eclipse,所以建议去下这种。
5、 不过光有CDT还不行,CDT编译代码还是需要调用cygwin当中的编译工具进行,所以我们还需要手动配置C/C++的编译器,还是以NDK自带的hello-jni为例子,首先打开Eclipse,File->New->Project->Android->Android project->Andriod project from exiting code,
6、 把这个项目导入进来,导入后如下图所示:
7、 编译C文件:
右键单击HelloJni之后,点击Properties,弹出配置界面,之后再点击Builders,如下图所示:
点击New按钮,新添加一个编译器,点击后出现添加界面,选择Program,点击OK:
8、 点击OK后,出现了添加界面:
在Main Tab界面, 填充以下内容:
Name:
编译器名称,随便填写。如:NDK_Builder
Location:
可执行工具的位置。即NDK安装目录下ndk-build.cmd的位置。
你可以点击Browser File System...按钮选择Android NDK安装目录下的ndk-build.cmd文件来指定Location。如下图:
你也可以设置一个变量来指定Android NDK的安装目录后设置Location。点击Variables按钮指定。如下图:
出现选择Variable的选择框。
单击Edit Variables...按钮。出现Variable管理的界面。单击New按钮添加Variable。
输入Variable的名称,如:ndk_home。然后单击Browse...按钮,选择Android NDK的安装目录后,单击OK。
至此,NDK的Variable设置完成。
然后,单击Main Tab界面上Location的Variables...按钮,选择刚才设置的ndk_home变量。如下图:
单击OK后,在Location的编辑框里会有选择的ndk-home变量,在其后面添加上/ndk-build.cmd,OK,Location设置完成。
如下图:
Working Directory:
要编译的C/C++程序的工作目录。一般指定到jni文件夹,因为所有的C/C++程序都在该文件夹内实现。
首先选择Working Directory里的Browse Workspace...按钮,如下图:
然后,选择要编译的项目HelloJni的jni文件夹。
9、 接着切换到Refresh选项卡,给Refresh resources upon completion打上钩,选择The Project containing the selected resource项,
表示只更新包含选中资源的项目,选中的资源项就是Main Tab选择的jni文件夹。
完成后如下图:
10、 最后切换到Build Options选项卡,勾选During auto builds,如下图所示:
Specify Resources 按钮单击后,选择HelloJni项目的 jni 文件夹。
11、单击 Apply OK 确认设置后,确保此 NDK 构建工具设置为列表中的第一个条目,方法是选择Up 按钮,直到其位于 Builders 列表的顶部
记得一定要点Up按钮,把它排到第一位,否则C代码的编译晚于Java代码的编译,会造成你的C代码要编译两次才能看到最新的修改,排到第一位后如下图所示:
12、 现在再次恭喜你,编译配置也配置完成啦:
单击项目,选择Build Project后。consolo出错:
D:/cocos2d-2.0-x-2.0.4/hellococo/proj.android//jni/Android.mk:19: *** Android NDK: Aborting. . Stop.
Android NDK: D:/cocos2d-2.0-x-2.0.4/hellococo/proj.android//jni/Android.mk: Cannot find module with tag 'CocosDenshion/android' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?
Android NDK: The following directories were searched:
解决:修改android.mk:注意斜杠方向
include $(BUILD_SHARED_LIBRARY)
$(call import-add-path,d:/cocos2d-2.0-x-2.0.4)
$(call import-add-path, d:/cocos2d-2.0-x-2.0.4/cocos2dx/platform/third_party/android/prebuilt)
$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions)
又出现错误:
In file included from d:/cocos2d-2.0-x-2.0.4/cocos2dx/base_nodes/CCNode.h:34:0,
from d:/cocos2d-2.0-x-2.0.4/cocos2dx/actions/CCActionInterval.h:30,
from d:/cocos2d-2.0-x-2.0.4/cocos2dx/include/cocos2d.h:42,
from D:/cocos2d-2.0-x-2.0.4/hellococo/proj.android//jni/../../Classes/HelloWorldScene.h:4,
from D:/cocos2d-2.0-x-2.0.4/hellococo/proj.android//jni/hellocpp/main.cpp:6:
d:/cocos2d-2.0-x-2.0.4/cocos2dx/platform/android/CCGL.h:36:31: fatal error: GLES2/gl2platform.h: No such file or directory
compilation terminated.
make.exe: *** [D:/cocos2d-2.0-x-2.0.4/hellococo/proj.android//obj/local/armeabi/objs/game_shared/hellocpp/main.o] Error 1
解决:Application.mk添加:
APP_PLATFORM := android-8
console没问题,但是problems出现四个错误:
Description ResourcePathLocationType
error: Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon').AndroidManifest.xml/hellococoline 9Android AAPT Problem
Cocos2dxActivity cannot be resolved to a type hellococo.java /hellococo/src/com/android/testline 33Java Problem
Cocos2dxActivity cannot be resolved to a type hellococo.java /hellococo/src/com/android/testline 30Java Problem
The import org.cocos2dx.lib cannot be resolved hellococo.java /hellococo/src/com/android/testline 26Java Problem
解决:1
1.只需要将cocos2d-x引擎的根目录的cocos2dx/platform/android/java/src\org\cocos2dx\lib文件夹下文件夹全部复制到项目的src\org\cocos2dx\包下即可。
2.
也遇到了这个问题:console已经没问题了,但是problems出现错误:
Program "gcc" not found in PATH Preferences, C++/Build/Settings/Discovery, [CDT GCC Built-in Compiler Settings] optionsC/C++ Scanner Discovery Problem
Program "g++" not found in PATHPreferences, C++/Build/Settings/Discovery, [CDT GCC Built-in Compiler Settings] optionsC/C++ Scanner Discovery Problem
这个问题搞了好久,还是不明所以,最后实在没办法了,把eclipse的压缩包解压缩到别的地方,就是用新的eclipse来弄这个工程,一下子就不见了这个问题。有知道上面问题的朋友,麻烦发给我答案撒。
接下来把anriod的手机插入电脑, 点RUN就可以看到结果了。