cocos2d-x项目过程记录(跨平台iOS和Android)

(原创做品,欢迎转载,注明出处,谢谢:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3205249javascript

1.配置环境,重点是eclipse环境的配置相对麻烦,重点是android开发的环境ADT,c/c++的编译工具NDK,SDK等概念的理解和配置。html

2.另外最重要的就是跨平台(在此仅指跨安iOS和Android)的原理java

3.对两个重要文件的认识: build_native.sh和Android.mk,须要了解shell编程的相关和Android.mk的编写相关android

4.在Android.mk中,$LOCAL_SRC_FILES的填写比较重要,记录下遍历一个目录下全部.cpp资源的方法(非jni目录)c++

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维护同一份代码:参考web

http://www.cnblogs.com/binxindoudou/articles/3205020.htmlshell

6.Android.mk的编写原理及技巧:参考:编程

http://www.cnblogs.com/binxindoudou/articles/3205213.htmlbash

http://www.cnblogs.com/binxindoudou/articles/3205035.htmlapp

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

相关文章
相关标签/搜索