cocos2d-x项目过程记录(跨平台iOS和Android)
(原创作品,欢迎转载,注明出处,谢谢:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3205249)
1.配置环境,重点是eclipse环境的配置相对麻烦,重点是android开发的环境ADT,c/c++的编译工具NDK,SDK等概念的理解和配置。
2.另外最重要的就是跨平台(在此仅指跨安iOS和Android)的原理
3.对两个重要文件的认识: build_native.sh和Android.mk,需要了解shell编程的相关和Android.mk的编写相关
4.在Android.mk中,$LOCAL_SRC_FILES的填写比较重要,记录下遍历一个目录下所有.cpp资源的方法(非jni目录)
LOCAL_PATH := /Users/admin/Desktop/ASCircuitCobwebX/ASCircuitCobwebX/Classes …… MY_CPP_PATH := $(LOCAL_PATH)/ My_All_Files := $(shell find $(MY_CPP_PATH)/.) My_All_Files := $(My_All_Files:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%) MY_CPP_LIST := $(foreach c_file,$(My_All_Files), $(wildcard $(c_file)/*.cpp) ) MY_CPP_LIST := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%) LOCAL_SRC_FILES := $(MY_CPP_LIST) $(warning $(LOCAL_SRC_FILES)) ……
5.让Xcode和Eclipse维护同一份代码:参考
http://www.cnblogs.com/binxindoudou/articles/3205020.html
6.Android.mk的编写原理及技巧:参考:
http://www.cnblogs.com/binxindoudou/articles/3205213.html
http://www.cnblogs.com/binxindoudou/articles/3205035.html
7.维护同一份代码和资源文件,那么就会涉及到路径问题,在iOS中没有问题,iOS中使用了虚拟路径,所以只要在工程中的文件都可以被找到,因为当你引入文件的时候系统已经帮你建立起了物理路径和虚拟路径的关联(当然前提是你在引入文件的时候使用默认的配置,如下图)

如果是这样的话,那么就是已经系统自动关联,在#include的时候或者createWithFile("");就都可以直接写入文件名称了
但是这个在Eclipse下是行不通的,它没有这个机制,所以我综合了网上的资料,觉着文件夹还是需要分的,所以就委屈一下iOS不使用虚拟路径了。
8.Xcode和Eclipse维护同一份代码的步骤记录(以下部分参照:http://www.cocoachina.com/gamedev/gameengine/2012/0428/4206.html结合自己的实践做的整理,要是有什么不对的地方,还望大牛们指出)
1⃣环境:
Xcode-4.6.2 Cocos2d-x-2.1.4 ADTv22.0.1-685705
注:
为了可以让eclipse编译java/c++的代码,需要安装c++插件
Help--》Install New Software--》选择你的对应eclipse版本升级站点--》在插件树里面找到Programming Languages--》C/C++ Development Tools
然后等待下载安装完成就行了
2⃣在Xcode下新建cocos2d-x的工程:testIos(目标是:两个IDE共同维护testIos下的Classes和Resources文件夹)
3⃣创建安卓的cocos2d-x的文件:testAndroid
4⃣然后新建安卓工程,导入生成的proj.android(在此不要选择添加到workspace,这个涉及到相对路径的问题)
5⃣然后去掉src的错误:
右键项目--》Build Path-->Link Source
Browse-->cocos2d-x-2.1.4/cocos2dx/platform/android/java/src(寻找解压开的引擎目录)
更名为:cocos2dxsrc即可
6⃣将java项目转为java/c++项目:
选中项目-->file-->new-->other-->c/c++-->Convert to a C/C++ Project-->makefile project-->other toolchain-->finish
7⃣右键项目->properties-->c/c++build-->去掉Use default build command--
填入 bash ${workspace_loc:/testAndroid}/build_native.sh NDK_DEBUG=1 V=1
红字换成你自己的,在此窗口下有一个文本框中有这个变量,这步是为了寻找build_native.sh
8⃣修改build_native.sh 和 Android.mk
这两个文件都是脚本生成的,所以会有一些路径上的问题
build_native.sh
确认APPNAME="testAndroid" COCOS2DX_ROOT="$DIR/../.."(默认向上跳两层)
Android.mk
LOCAL_PATH := /Users/admin/Desktop/testIos/testIos/Classes
以下是为了遍历一个目录下的所有.cpp包括子目录
MY_CPP_PATH := $(LOCAL_PATH)/
My_All_Files := $(shell find $(MY_CPP_PATH)/.)
My_All_Files := $(My_All_Files:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%)
MY_CPP_LIST := $(foreach c_file,$(My_All_Files), $(wildcard $(c_file)/*.cpp) )
MY_CPP_LIST := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%)
LOCAL_SRC_FILES := $(MY_CPP_LIST)
9⃣引入testIos的Classes文件和Resources文件
右键项目-->c/c++ General-->path and symbols-->Source Location->Link Folder-->勾选Link to the folder in the file system->brwose--》选择testIos下的Classes文件夹(Resources同样)
1⃣0⃣去除文件中的部分警告和错误
打开main.cpp,会有警告和错误,是因为没有包含相应文件(以下目录只做参考)
右键项目-->c/c++ General path and symbols-->Includes-->add
/Users/admin/Desktop/cocos2d-x-2.1.4/cocos2dx ===>解决的是#include"platform/android/jni/JniHelper.h"的警告
/Volumes/MacOSFiles/Cocos2d-XAndroid/android-ndk-r8e/platforms/android-8/arch-arm/usr/include ===>解决了#include<jni.h> #include<android/log.h>
/Users/admin/Desktop/cocos2d-x-2.1.4/cocos2dx ===>解决了#include"cocos2d.h"
然后还有好多错误(画着小虫子的那些,是因为eclipse对c++解析能力不强导致的)
解决方案:右键项目-->c/c++ General-->Code Analysis-->把所有对勾去掉就好了
恩,到这,世界就安静多了,嘿嘿。。。:)
1⃣0⃣然后project-->build all,(如果提示NDK_ROOT not defined,那就c/c++build-->Evironment-->Add-->添加你的NDK路径)
1⃣1⃣至此,要是没有什么问题,你就可以在模拟器或者真机运行了。
9.更换项目包的名称和图标
如果不做任何处理,那么你会发现项目名称会是:testAndroid,图标是默认的蓝色小火苗(注意以下res不是bin下的)
更名:res/values/string.xml
<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<string name="app_name">Your App Name</string>
</resources>
更改图标:res/drawable-****,依照小火苗比例制作自己的Icon就行了。
(原创作品,欢迎转载,注明出处,谢谢:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3205249)
cocos2d-x项目过程记录(跨平台iOS和Android)的更多相关文章
- cocos2d-x项目过程记录(纹理和内存优化方面)
1.参考资料:Cocos2d-x纹理优化的一些方案 cocos2d-x如何优化内存的应用 iOS和android游戏纹理优化和内存优化(cocos2d-x) 2.加载贴图集纹理 CCSpriteF ...
- xamarin跨平台iOS、Android 与Windows
http://xamarin.csdn.net/ Xamarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS.Android 与Wind ...
- cocos2d-x项目过程记录(ios和android设备的适配)
(原创作品,欢迎转载,注明出处,谢谢:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3213645) 1.原理分析的博 ...
- cocos2d-x项目过程记录(Objective-C转C++)
(原创作品,欢迎转载,注明出处,谢谢:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3179335) 1.单例模式中, ...
- cocos2d-x项目过程记录(cocos2d-x的新知)
1.给CCMenuItem带上点击参数(这是CCNode的一个属性) CCMenuItem *item = CCMenuItemSprite::create(unselectedPic, select ...
- 将React Native 集成进现有OC项目中(过程记录) 、jsCodeLocation 生成方式总结
将RN集成到现有OC项目应该是最常见的,特别是已经有OC项目的,不太可能会去专门搞个纯RN的项目.又因为RN不同版本,引用的依赖可能不尽相同,所以特别说明下,本文参考的文档是React Native ...
- 【转】iOS消息推送实现过程记录
客户端代码:链接地址 服务器代码:链接地址 链接地址 这里记录下iOS消息推送实现的全过程 首先,申请秘钥. 之后进入链接地址开发者,当然你得有啊!!!!! 点击这里 如图: 下面实现创建推送证书( ...
- Unity 使用C/C++ 跨平台终极解决方案(PC,iOS,Android,以及支持C/C++的平台)
https://blog.csdn.net/fg5823820/article/details/47865741 PC的其实根本不用说,毕竟C#和C++交互的文章已经够多了,当然我自认为经过几次折腾后 ...
- Unity 使用C/C++ 跨平台终极解决方式(PC,iOS,Android,以及支持C/C++的平台)
PC的事实上根本不用说,毕竟C#和C++交互的文章已经够多了,当然我自觉得经过几次折腾后.差点儿全部游戏须要到的操作我都掌握了(各种传參方法,各种坑,不懂的能够留言问.尽管基本上没人看.哈哈) 废话不 ...
随机推荐
- 20款jquery下拉导航菜单特效代码分享
20款jquery下拉导航菜单特效代码分享 jquery仿京东商城左侧分类导航下拉菜单代码 jQuery企业网站下拉导航菜单代码 jQuery css3黑色的多级导航菜单下拉列表代码 jquery响应 ...
- ffmepg命令行参数
ffmpeg使用 有些选项在每个流中都必须指定,例如比特率bitrate或编解码codec.指定流的字符串一般都会有各参数名称和参数,如编解码"-codec:a:1 ac3"表明第 ...
- DOMContentLoaded vs onload
http://ie.microsoft.com/testdrive/HTML5/DOMContentLoaded/Default.html The DOMContentLoaded event fir ...
- cf D Bear and Floodlight
题意:有n个灯,每个灯有一个照亮的角度,现在从点(l,0)走到点(r,0),问这个人若一直被灯照着能最多走多远? 思路:状压dp,然后通过向量旋转求出点(dp[i[,0)与灯的坐标(p[j].x,p[ ...
- bzoj3505
ans=C((n+1)*(m+1),3)-三点一线的情况横线竖线我们可以先去掉然后考虑斜线,由于对称性我们只要考虑斜率大于0的即可有一个很显然的结论,但两点坐标差为x,y时,这条线段上的点数为gcd( ...
- COJ 0047 20702最大乘积
20702最大乘积 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 输入n个元素组成的序列s,你需要找出一个乘积最大的连续子序列 ...
- phpMyAdmin 多个跨站脚本漏洞
漏洞名称: phpMyAdmin 多个跨站脚本漏洞 CNNVD编号: CNNVD-201307-649 发布时间: 2013-08-09 更新时间: 2013-08-09 危害等级: 中危 漏洞类 ...
- ♫【JS基础】壹零零壹
如何面试一个前端开发者? function spacify(str) { return str.split('').join(' ') } console.log(spacify('hello wor ...
- 图论(KM算法):COGS 290. [CTSC2008] 丘比特的烦恼
290. [CTSC2008] 丘比特的烦恼 ★★★ 输入文件:cupid.in 输出文件:cupid.out 简单对比 时间限制:1 s 内存限制:128 MB 随着社会的不断发展, ...
- 图论(对偶图):COGS 470. [NOI2010]海拔
470. [NOI2010]海拔 ★★★☆ 输入文件:altitude.in 输出文件:altitude.out 简单对比 时间限制:2 s 内存限制:512 MB 海拔 [问题描述] ...