前言
最近要用cocos2d-x写android游戏,不熟悉Eclipse的我,折腾了很久,本文记录一下我在mac上配置cocos2d-x android开发环境的过程。
之前看了许多人的,还是觉得不爽,所以最后总结下我的配置方法。
参考
软件版本
cocos2d-2.1rc0-x-2.1.2
Android ADT Bundle: v21.0
Android NDK: android-ndk-r8d
OS X 10.7.5
爪机:一部 htc g12 系统版本 android 4.0
文件路径
cocos2d-x:~/.cocos2dx
Android NDK:~/.android-ndk-r8d
Android SDK:~/.android-sdks
安装&配置过程:
下软件 & 装软件
adt-bundle / android-ndk / 最新版cocos2d-x 统统下载下来。
adt-bundle 扔进/Applications里边,其中android-sdk的部分,按照我的自己的习惯复制了一份放在~/.android-sdks下面,ndk解压依旧按照习惯放在~/.android-ndk-r8d下面,cocos2d-x也类似。
配置环境变量~/.bash_profile最后边加入了下面一段。其实你不用写的像我这么繁琐,但是这么写是没问题的。
export NDK_ROOT_LOCAL=$HOME/.android-ndk-r8d
export NDK_ROOT=$NDK_ROOT_LOCAL
export ANDROID_NDK_ROOT=$NDK_ROOT
export ANDROID_SDK_ROOT=$HOME/android-sdks
export ANDROID_SDK_ROOT_LOCAL=$ANDROID_SDK_ROOT
export COCOS2DX_ROOT=$HOME/.cocos2d-x
export PATH=$ANDROID_NDK_ROOT:$PATH
export PATH=$ANDROID_SDK_ROOT:$PATH
export PATH=$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH
Java / Xcode / Eclipse
打开终端,输入java -version,显示:
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01-447-11M4203)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-447, mixed mode)
则说明正常,否则系统会自动安装&升级java。
java没问题了,打开Eclipse试试,发现没问题,ok继续。
装cocos2d-x的Xcode模版,在终端里,cd $COCOS2DX_ROOT,然后./install-templates-xcode.sh,没毛病之后,打开Xcode建个cocos2d-x iphone项目,跑一下,没问题,继续。
说明:这里安装Xcode模版是有用的,后边会提到。
Eclipse的Retina支持(转)
你要是用的Retina的MBP,请看 此文 中间一段。
修改cocos2d-x的文件拷贝脚本
为了图省事,加上点东西。
用文本编辑器打开$COCOS2DX_ROOT/template/android/copy_files.sh这个文件,大约在42行,后面加入一句cp -rf $COCOSJAVALIB_ROOT/src $APP_DIR/proj.android,加完之后,大致如下。
# from HelloWorld copy src and jni to APP_DIR
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
############## 加上下面这行 ##############
cp -rf $COCOSJAVALIB_ROOT/src $APP_DIR/proj.android
# replace Android.mk
sh $COCOS2DX_ROOT/template/android/gamemk.sh $APP_DIR/proj.android/jni/Android.mk $NEED_BOX2D $NEED_CHIPMUNK $NEED_LUA
}
有人觉得少这句是cocos2d-x的BUG,不管是不是bug,都对我这个不熟悉Eclipse的人造成了困扰。。。。
所以,加这个的目的就是图省事,省的建完项目之后再把这些文件加进项目里去,你要是不嫌麻烦,用eclipse建完项目再加进去这些文件也行,方法不赘述。
HelloWorld
现在来跑个hello world吧~。
终端:cd $COCOS2DX_ROOT,然后./create-android-project.sh
按提示输入package path,project name,如下:
dawns-MacBook-Pro:.cocos2d-x dawn110110$ ./create-android-project.sh
use global definition of NDK_ROOT: /Users/dawn110110/.android-ndk-r8d
use global definition of ANDROID_SDK_ROOT: /Users/dawn110110/android-sdks
Input package path. For example: org.cocos2dx.example
org.dawn.ccxandroid
Now cocos2d-x supports Android 2.2 or upper version
Available Android targets:
----------
id: 1 or "android-17"
Name: Android 4.2
Type: Platform
API level: 17
Revision: 1
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
ABIs : armeabi-v7a
input target id:
1
input your project name:
HelloCCX
…
最后脚本创建好项目之后cd HelloCCX/proj.android(HelloCCX是目录名,请替换成你之前写的)。
编译:./build_native.sh,然后就等吧…,不会太长,一会就好。
编译好之后,打开Eclipse,File->New->Project->Android Project From Existing Code,然后RootDirectory右边Browse,找到$COCOS2DX_ROOT/HelloCCX(在我这里也就是~/.cocos2dx/HelloCCX),如下图:
OK,现在看到项目貌似有点错误,就是AndroidMenifest.xml里图标资源名字不对,改成下面后打包运行OK。
android:icon="@drawable/ic_launcher">
最后运行吧,不知道模拟器上能跑起不?反正我是真机。效果如下图,不太清晰。
后续开发
目前你可以用cocos2dx写android游戏了,但是蛋疼的是,每次编译都要先跑一遍./build_native.sh然后再在eclipse里clean 最后打包成apk。麻烦的要死,怎么办呢?
方案1
在Eclipse里,把这个Android项目改成一个C++项目,并且更改项目设置,使用你自己的编译脚本来编译项目。此法参见本文开头的两篇文章,个人感觉比较复杂,而且我配好了之后用着还有很多毛病,不爽。
方案2(推荐)
由于cocos2d-x是用C++来写代码,而且在各个平台上基本都是一样的,所以我们可以用Xcode来开发(之前不是安装了cocos2d-x-iphone模版了么),等整个游戏写好之后,把代码(C++部分)和资源copy到eclipse的项目里,打包成apk。
也有人把Xcode项目里的C++代码直接链接到eclipse项目里,这样就不用copy文件了,也是个好办法~。
至于屏幕大小不一致等问题…,就忍一忍吧…。祝编码愉快~。