Colin-Liao 个人原创,欢迎转载,转载请注明地址。Colin-Liao的专栏地址http://blog.csdn.net/focusdeveloper
最近在MAC上面配置cocos2dx的android开发环境,这里作下总结以及在搭建环境时候遇到的问题,希望给正在困惑的童鞋一些帮助。
首先配置环境必要的条件:
ADT 下载地址:http://eclipse.org/downloads/ 这里adt中包含了eclipse和android SDK,为了让开发android的同学些不那么麻烦。我下载的是最新版本的。
NDK 下载地址: http://developer.android.com/sdk/ndk/index.html我下载的是最新版本r9,如果有的童鞋想下载r8e的http://dl.google.com/android/ndk/android-ndk-r8e-darwin-x86_64.tar.bz2 。这个是64位的 根据自己的情况选择。
cocos2d-x 下载地址:http://code.google.com/p/cocos2d-x/downloads/list?can=1&q=label%3Acocos2d-x 这里各种各样版本都有我下载的最新的。
我把上面下载的文件都放在了/Users/apple/documents/android这个文件夹下面,然后我们就开始下载android SDK 了,在下载下来的ADT文件中找到eclipse,并且运行eclipse。
然后在window选项中选择 android SDK Manager,如下图,然后在刷新出来的选项中选择需要的Android SDK。
如果下载不动的话,请看看我的上一篇博客http://blog.csdn.net/focusdeveloper/article/details/10229091 。
这个步骤估计时间用的比较久,等待完成。
现在配置环境变量,也就是cocos2dx,NDK,SDK的地址:
打开中断 输入 pico .bash_profile,然后配置自己的环境变量,我的地址如下
输入完成后ctrl+x保存下,然后Y确定,回车,环境变量就配置好了
我们现在开始创建cocos2d-x工程打开终端,
输入cd $COCOS2DX_ROOT,回车 (应该到了你的cocos2dx的地址了)
输入./crate-android-project.sh 回车 (创建一个android project) 出现 Input package path. For example: org.cocos2dx.example
输入 org.cocos2dx.focus 回车 这里名字可以自己取。然后会出现如下选择SDK的图片(意思是说你创建的项目的SDK版本)
然后显示input target id: 我选者的是7 即android 2.2的系统,android-8 回车 之后显示input your project name,输入的项目名称
输入androidTest 回车,不出以外项目就创建完成了。
接下来的工作就是要将刚才创建的项目和NDK一起来编译成真正可以执行的android项目了。
在刚才的终端中cd 进你创建的项目中
输入 cd androidTest 回车
输入 cd proj.android 回车
输入 ./bulid_native.sh(native 是NDK的开头字母)回车
现在开始编译:
如果是用的NDK r9应该会报如下错误
这个问题是ndk r9中自带的bug所以不要在意,以后版本估计会修复(如果用ndk r8e这里将没有问题出现)。现在在文件夹中找到androidTest项目,路径为androidTest/proj.android/jni/Application.mk,然后以文本编辑的格式打开它在后面加入
APP_CFLAGS += -Wno-error=format-security 完成之后在编译一次./build_native.sh.
现在出现如下图所示表示已经完成了编译
那么接下来的工作就是将已经编译好的android项目放到eclipse上面运行了。
打开ADT,选择file->new->project
然后在弹出的窗口中选择android->android project from Existing code 然后next出现如下界面
将之前创建的项目路径browse上去,完成之后,ADT的package explorer下面应该有你的项目了,不过现在貌似有一个红色的叉,出错了。原因是因为没有包含进
cocos2d-2.1rc0-x-2.1.2/cocos2dx/platform/android/文件夹下面的java包,解决这个问题有两种方法
1.像刚才在adt中加入我们创建的项目一样加入这个java包,不过这种方法在每次你在ADT中加项目的时候都要加(如果里面没有)。
2.找到/Users/apple/Documents/android/cocos2d-2.1rc0-x-2.1.2/template/android/文件夹下面的copy_files.sh文件打开找到
# 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
# replace Android.mk
sh $COCOS2DX_ROOT/template/android/gamemk.sh $APP_DIR/proj.android/jni/Android.mk $NEED_BOX2D $NEED_CHIPMUNK $NEED_LUA
}
这段代码在其中加入
cp -rf $COCOSJAVALIB_ROOT/src $APP_DIR/proj.android这句话(它会将java这个包复制到我们新建的项目中),如下
# 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
}
第二种方法会在项目的proj.android/src/org/cocos2dx文件夹下面声称lib文件夹里面包含了java文件夹下面的文件。
第二种方法在创建项目的时候才起作用,无论用上面哪种方法完成后就因该不会报错啦。
现在可以开始运行了,运行都是很简单的事情。
这里我讲讲连接上真机的时候在android device chooser的框类没有可以选择的真机器,现在该怎么处理呢?
打开终端:
输入 system_profiler SPUSBDataType 在输出结结果中寻找你的设备。(确保现在设备连接在mac上并且设备上的开发者调试是开启的)
找到Samsung Android USB Device: (你的根据自己的是什么设备),找到下面的Vendor ID: 0x04e8,并且将起其录下来。
现在我们要将 这个vendor ID加入到adb_usb.ini文件中。同样两种方法:
1.在终端输入mkdir ~/.android (确保有这个文件夹)
再次输入echo "0x0x04e8" > ~/.android/adb_usb.ini 回车。这样就将vendor ID 加入到ini文件中了
2.直接找到这个文件直接更改:/Users/apple/.android/adb_usb.ini ,这个是文件路径,但是.android文件夹是隐藏的,在终端输入
defaults write com.apple.finder AppleShowAllFiles -bool true回车,然后重新启动finder .android文件夹就显示出来了。
更改完成后这sdk的platform-tools文件下有一个文件 adb,现在我们要重启adb然后我们的设备估计就能出来
在终端输入/Users/apple/Documents/android/adt-bundle-mac-x86_64/sdk/platform-tools/adb kill-server(这个路径是我的哈,当然你也可以配置环境变量) 回车。
接下来输入/Users/apple/Documents/android/adt-bundle-mac-x86_64/sdk/platform-tools/adb start-server 回车
最后输入 /Users/apple/Documents/android/adt-bundle-mac-x86_64/sdk/platform-tools/adb devices
你的设备就出来了。
现在回到ADT中在运行一次项目,就能够找到真机了。
最后讲一下你创建的如果是sdk 4.0之后的项目那么即使你按照我上面的叙述做的估计都还是会有错误。如下图
错误的原因是因为在项目的res/drawable-hdpi文件夹下面的图片名字为ic_launcher.png,所以将上图的错误icon改为ic_launcher即可。但是别忘了command+s保存,保存的时候会生成R.java文件,现在就没有问题啦。
下一篇为如何加入自己的xcode下的cocos2d-x项目到ADT。