本站文章均为[ 李华明Himi ](http://www.himigame.com/about-himi)原创,转载务必在明显处注明:
转载自[【黑米GameDev街区】](http://www.himigame.com/) 原文链接: [http://www.himigame.com/android-game/667.html](http://www.himigame.com/android-game/667.html "【iOS-cocos2d-X")
此篇针对较早的-x引擎讲解的,最新的可以参考:[ 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行即可!](http://www.himigame.com/cocos2dx-v2-0/962.html)
之前有两节介绍了mac下配置Android NDK并搭建Cocos2dX以及如何创建Cocos2d-X-Android项目,那么可能看过这两节的童鞋就很多疑问,问的最多的就是如何让Xcode中的iOS代码与Eclipse-Android代码通用?那么今天Himi就为大家详细解决这个问题,让我们只需在Xcode中编写代码,然后编译后直接导入Android即可运行打包!
废话不多说了,正题,整合步骤如下:(为了不让童鞋们混淆,许多文件的具体修改省略,Himi直接给出文件)
1.使用终端创建一个Android-Cocos2dx项目先;具体步骤参照如下博文:
[【iOS-cocos2d-X 游戏开发之四】Cocos2dX创建Android NDK新项目并编译导入Eclipse中正常运行!](http://www.himigame.com/android-game/645.html)
2.创建好之后,然后Xcode新创建一个Cocos2dX模版的项目(已有Cocos2dX模版项目的省略此步骤)
注意:下面的讲解为了避免童鞋们的路径混淆,那么这里Himi说下自己项目的相关路径和文件名:
Himi创建的Xcode项目路径:(项目名称:OhMonsterMRiOS)
/Users/Himi/Documents/HimiWork/OhMonsterMRiOS
Himi创建的Android项目名称:(项目名称:OhMonsterMRAndroid)路径后面用不到;
3.拷贝新创建的Android项目下的整个“android”文件夹,路径: OhMonsterMRAndroid/android
然后拷贝到 /Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS
上面这个路径就是你Xcode项目下与 ios、libs、Classes同一级别的地方!
注意!这里只要新创建的Android项目下名为“android”文件夹,其他的都不要!!!!
4.打开你的“终端”,先 cd 到你Xcode的项目下刚拷贝过来的android文件夹路径,这里Himi输入的命令如下:
cd /Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android 回车!
继续在终端输入 pico makefile 回车! 然后根据如下图进行输入:
[![](https://box.kancloud.cn/2016-03-31_56fcd021844d2.png "1")](http://www.himigame.com/wp-content/uploads/2012/03/12.png)
这里要注意:
clean 要顶格不留空格! 两个 rm 语句前都是 tab 缩进!不要弄错!
输入后,control+x 保存,然后 y ,最后回车! OK!
不要关闭终端,继续输入 make clean 回车! 当终端输出如下提示,表示你正确配置了:
~~~
rm -rf libs/
rm -rf obj/
~~~
5.下载如下四个 Android.mk 文件和一个Application.mk以及一个build_native.sh文件 ;
[mk.rar](http://www.himigame.com/?dl_id=69) (126 字节, 9 次)
下载解压后你可看到如下几个文件,( mk 表示你下载解压出的mk文件夹)
~~~
android/build_native.sh
android/jni/Android.mk
android/jni/Application.mk
android/jni/helloworld/Android.mk
Classes/Android.mk
libs/cocos2dx/Android.mk
~~~
这六个文件分别放入你Xcode项目如下路径,这里使用Himi的项目路径来说明,大家按照自己项目路径放入即可!
~~~
/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android/build_native.sh
/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android/jni/Android.mk
/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android/jni/Application.mk
/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android/jni/helloworld/Android.mk
/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/Classes/Android.mk
/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/libs/cocos2dx
~~~
这四个路径当中如提示文件已经存在,果断不用多想,直接覆盖即可!
6.OK,四个文件放置完成之后,童鞋们需要修改刚才下载中的 build_native.sh 文件,就是android/build_native.sh文件!
打开后只需要修改: NDK_ROOT 路径即可!别跟我说你的NDK_ROOT路径你不知道 =。 =不知道的童鞋请自动面壁~开玩笑拉,不知道的童鞋可以参考之前我介绍如何配置Android SDK 的博文哦~
7.最后一步了,拷贝两个文件就大功告成了!
首先到你存放Cocos2dX引擎目录路径下(如有看过之前文章,其实就是$COCOS2DX_ROOT路径),
然后找到CocosDenshion文件夹下的“android”文件夹,然后拷贝整个“android”文件夹到你Xcode项目下libs/CocosDenshion下,Himi的路径如下:
/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/libs/CocosDenshion
最后找到存放Cocos2dX引擎目录路径下的cocos2dx下的“platform”文件夹,将整个“platform”文件夹拷贝到你Xcode项目下libs/cocos2dx 下,Himi的路径如下:
/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/libs/cocos2dx
——(此步骤为加入cocos2dx-box2d步骤,如果不使用box2d请童鞋省略此步骤)——
(此步骤为加入cocos2dx-box2d步骤,如果不使用box2d请童鞋省略此步骤)从Cocos2dX引擎目录路径下/Box2D/拷贝Android.mk到Xcode项目下/libs/Box2D/下面去。
8.打开你的“终端”,先 cd 到你Xcode的项目下刚拷贝过来的android文件夹路径,这里Himi输入的命令如下:
cd /Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android 回车!
继续输入 make clean 回车!
继续输入 ./build_native.sh 回车!
如果之前的步骤都没有出现任何问题,OK,终端会输出一大堆的信息,最后显示如下类似内容!
~~~
Install : libcocosdenshion.so => libs/armeabi/libcocosdenshion.so
Compile++ thumb : game_logic_static <= HelloWorldScene.cpp
StaticLibrary : libgame_logic_static.a
SharedLibrary : libgame.so
Install : libgame.so => libs/armeabi/libgame.so
~~~
OK,到此证明之前的配置正确完成!如果出现了 …stop类似的信息,说明其中有些地方配置出现问题!
别着急,还没结束!最后说二点:
一. 你拷贝到Xcode项目中的android相关文件等没必要导入你的Xcode中,如果导入反而让你的Xcode项目编译错误无法运行!
二. 当你以后在Xcode添加了一些类,那么你需要到 Classes/Android.mk 修改一下,将你新添加的类添加进去,如下图所示:
[![](https://box.kancloud.cn/2016-03-31_56fcd0219ca2f.png "4321")](http://www.himigame.com/wp-content/uploads/2012/03/4321.png)
注意:新添加的类在其他类中“include”**使用**的时候一定要将文件的路径全部写完整,例如新添加有个类 StaticClassModel.cpp StaticClassModel.h 放在dev文件夹下,那么:
其他类中使用时: #include “dev/StaticClassModel.h”
在classes文件下 Android.mk中,也一样写完整路径:dev/StaticClassModel.cpp
否则编译android时会找不到,而且提醒如下错误:
~~~
Compile++ thumb : game_logic_static <= AppDelegate.cpp
Compile++ thumb : game_logic_static <= HelloWorldScene.cpp
jni/../../Classes/HelloWorldScene.cpp:3:30: error: StaticClassModel.h: No such file or directory
jni/../../Classes/HelloWorldScene.cpp: In member function 'virtual bool HelloWorld::init()':
jni/../../Classes/HelloWorldScene.cpp:56: error: 'StaticClassModel' has not been declared
make: *** [obj/local/armeabi/objs-debug/game_logic_static/HelloWorldScene.o] Error 1
~~~
——(此步骤为加入cocos2dx-box2d步骤,如果不使用box2d请童鞋省略此步骤)——
Classes/Android.mk中找到:
LOCAL_SHARED_LIBRARIES := cocosdenshion_shared
在下面继续添加一句:
LOCAL_SHARED_LIBRARIES += box2d_shared
对了忘记说如何导入到Eclipse中了!这里将Xcode项目导入Eclipse中很容易:
一: 第一次将Xcode中的Android项目导入到Eclipse中,要先build!
打开你的“终端”,先 cd 到你Xcode的项目下刚拷贝过来的android文件夹路径,这里Himi输入的命令如下:
cd /Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android 回车!
继续输入 make clean 回车!
继续输入 ./build_native.sh 回车!
二:Eclipse直接将你Xcode下的“android”路径直接导入你Eclipse中即可!
备注:不仅仅第一次将Xcode中项目导入Eclipse中需要编译,以后只要在Xcode中有代码修改和添加都记得要build!然后eclipse Clean下运行项目就OK拉!
下面是Himi配置之后在Xcode以及Eclipse下运行的iOS和Android截图:
[![](https://box.kancloud.cn/2016-03-31_56fcd021c247e.png "11111")](http://www.himigame.com/wp-content/uploads/2012/03/111111.png)
[![](https://box.kancloud.cn/2016-03-31_56fcd0220fc02.png "222222")](http://www.himigame.com/wp-content/uploads/2012/03/222222.png)
- 前言
- 【Iphone 游戏开发】游戏引擎剖析
- [Object-C语言随笔之一]Mac os 下搭建iOS开发环境
- [Object-C语言随笔之二] 《NSLog》常用的打印调试语句与自动排版
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- [Object-C语言随笔之四]创建视图并绘制简单图形
- 【iOS-Cocos2d游戏开发之一】搭建cocos2d游戏引擎环境HelloWorld!
- 【iOS-Cocos2d游戏开发之二】Cocos2D 游戏开发资源贴(教程以及源码)
- 【iOS-Cocos2d游戏开发之三】CCScene切换的所有特效(28种)以及设置屏幕横竖屏!
- 【iOS-Cocos2d游戏开发之四】独自收集Cocos2d提供的字体!共57种(有对照的字体图)
- 【iOS-Cocos2d游戏开发之五】多触点与触屏事件详解(单一监听、事件分发)【11月28日更新】
- 【iOS-Cocos2d游戏开发之六】对触屏事件追加讲解,解决无法触发ccTouchMoved事件[重要!]
- 【iOS-Cocos2d游戏开发之七】在cocos2d中添加/删除系统组件,并解决View设置透明会影响View中的其他组件的问题!【11月28日更新解决添加组件Cocos2d动画停止播放的BUG】
- 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的&quot;.pvr.ccz&quot;,&quot;.plist&quot;共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之十】添加粒子系统特效并解决粒子特效与Layer之间的坐标问题;
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- 【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;
- 【iOS-Cocos2d游戏开发之十三】CCSprite利用Bezier(贝塞尔)做抛物线动作并让CCSprite同时播放两个Action动作!
- 【iOS-Cocos2d游戏开发之十四】音频/音效/视频播放(利用Cocos2D-iPhone-Extensions嵌入Cocos2d进行视频播放!)
- 【iOS-Cocos2d游戏开发之十五】详解CCProgressTimer 进度条并修改cocos2d源码实现“理想”游戏进度条!
- 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!【2011年11月15日更新】
- 【iOS-Cocos2d游戏开发之十七】灵活使用精灵可视区域(TextureRect)与锚点(anchorPoint),并结合可视区域与锚点制作进度条!
- 【iOS开发必备指南合集】申请企业级IDP、真机调试、游戏接入GameCenter 指南(实现仿官方的成就提示)、游戏接入OpenFeint指南;
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)/动画播放出现毛边以及禁止游戏中自动锁屏问题!【2011年12月18日补充】
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取&quot;产品付费数量等于0的问题&quot;】
- 【iOS-cocos2d-X 游戏开发之一】在Mac下结合Xcode搭建Cocos2d-X开发环境!
- 【iOS-cocos2d-X 游戏开发之二】【必看篇】总结阐述Cocos2d-X与Cocos2d-iphone区别;
- 【iOS-Cocos2d游戏开发之十九】游戏数据存储的四种常用方式NSKeyedArchiver/NSUserDefaults/Write写入/SQLite3
- 【iOS-Cocos2d游戏开发之二十】精灵的基础知识点总汇(位图操作/贴图更换/重排z轴等)以及利用CCSprite与CCLayerColor制作简单遮盖层!
- 【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置攻击帧(指定开始帧)以及扩展Cocos2d源码的CCAnimation简化动画创建!
- 【iOS-Cocos2d游戏开发之二十二 】CCSpeed实现CCAnimate动画进行时设置慢动作以及设置游戏加减速进行(塔防游戏必备)!
- 【iOS-cocos2d-X 游戏开发之三】Mac下配置Android NDK环境并搭建Cocos2d-x环境并Eclipse正常编译运行Cocos2dX自带TestsDemo项目!
- 【iOS-cocos2d-X 游戏开发之四】Cocos2dX创建Android NDK新项目并编译导入Eclipse中正常运行!
- 【iOS-cocos2d-X 游戏开发之五】游戏存储之Cocos2dX自带CCUserDefault类详解;
- 【iOS-cocos2d-X 游戏开发之六】使用Base64算法对Cocos2dX自带CCUserDefault游戏存储数据编码!
- 【iOS-cocos2d-X 游戏开发之七】整合Cocos2dX的Android项目到Xcode项目中,Xcode编写&amp;编译代码,Android导入打包运行即可!
- 【iOS-iap防护】验证用户付费收据!拒绝iap Cracker!拒绝iap Free!让iphone越狱用户无从下手!【2012年5月2日更新防护iap Free的方法】
- 【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!
- 【iOS-cocos2d-X 游戏开发之九】Cocos2dx利用CCSAXParser解析xml数据&amp;CCMutableDictionary使用与注意!
- 【iOS-cocos2d-X 游戏开发之十】自定义CCSprite/Layer/CCNode及静态类模版&amp;自定义类细节说明&amp;Cocos2dx触屏事件讲解
- 【iOS-cocos2d-X 游戏开发之十一】New CCSprite()带来的错误&amp;使用CCUserDefault及pvr.ccz在Cocos2dx中要注意!
- 【iOS-cocos2d-X 游戏开发之十二】自定义Cocos2dx摇杆(增强Joystick),增加摇杆跟随用户触点作为摇杆坐标,让摇杆不再死板!
- 【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- 【iOS-cocos2d-X 游戏开发之十四】Xcode中c++&amp;Object-C混编,详细介绍如何在cocos2dx中访问object函数以及Apple Api
- 【iOS-cocos2d-X 游戏开发之十五】Cocos2dx中响应Android的Back(返回)与Menu(小房子)事件&amp;&amp;Cocos2dx自动释放粒子内存函数!
- 【iOS-cocos2d-X 游戏开发之十六】配置你的Cocos2dx项目编译后的Android自动使用(-hd)高清图&amp;设置Android自适应屏幕、缩放比例方法!
- 【Cocoa(mac) Application 开发系列之四】动作编辑器(Cocos2dx)制作流程详解及附上响应鼠标滚轴事件、反转坐标系、导入/创建资源目录等知识点代码!
- 【Cocos2d-X(2.x) 游戏开发系列之一】cocos2dx(v2.x)与(v1.x)的一些常用函数区别讲解!在2.x版CCFileData类被去除等
- 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平台整合NDK+Xcode,Xcode编写&amp;编译代码,Android导入打包运行即可!
- 【Cocos2dX(2.x)_Lua开发之三】★重要必看篇★在Lua中使用自定义精灵(Lua脚本与自创建类之间的访问)及Lua基础讲解
- 【Cocos2d-X(2.x) 游戏开发系列之三】最新版本cocos2d&#173;2.0&#173;x&#173;2.0.2使用新资源加载策略!不再沿用-hd、-ipad、-ipadhd添加后缀方式
- 【Cocos2d-X(1.x 2.x) 修复篇】iOS6 中 libcurl.a 无法通过armv7s编译以及iOS6中无法正常游戏横屏的解决方法
- 【Cocos2d-X(1.x 2.x) 】iOS6与iphone5适相关设置随笔(解决第三方类库无法通过armv7s编译的方法、添加Default-568h@2x.png)