本来之前没有用过Xcode,而对Visual Studio很有好感,网上也说IDE来说,VS是完爆Xcode的。可惜公司用的是Mac电脑,虽然尝试过使用虚拟机,可惜磁盘空间太小,装完vs后虚拟机已经占了70G,而且编译性能、ios/android调试、环境转换等等都有不足,最后还是直接用Xcode来搞了。
一、下载组件
到cocos官网http://www.cocos.com/download上下载资源,包括cocos studio(用于场景设计、布局、动画等,可以将设计与编码分开,提高效率)和cocos framework(我使用时最新是3.9版本的)。
二、生成工程
Xcode直接从Appstore上下载,不再赘述。将cocos framework解压后,到cocos2d-x-3.9/tools/cocos2d-console/bin目录下执行如下命令,新建工程:
./cocosnew HelloWorldDemo -p com.coco2dx.org -l cpp -d ~/Desktop
参数说明:
- HelloWorldDemo为项目名称
- -p后面接包名
- -l后面接开发语言类型,有cpp, lua, js三种类型
- -d后面接项目存放的目录
执行完成后,在Desktop目录下,会新建HelloWorldDemo的工程目录
里面有跨平台所使用的各种工程目录,我们主要使用的是proj.ios_mac——ios平台,proj.android/proj.android-studio——android平台,proj.android是eclipse工程,proj.android-studio是android-studio工程。我习惯使用as,不过需要比较新的cocos版本才会生成这个目录。
进入proj.ios_mac,直接打开HelloWorldDemo.xcodeproj文件,就可以编译执行
三、安卓环境配置
1、普通配置
我们使用cocos,除了因为对开发过程进行了封装,可以提高开发效率外,对跨平台的支持也是一个很重要的原因。现在就将刚才的工程使用android studio进行编译打包,生成android上可执行的工程。
sdk、ndk的安装,网上资料一大堆,就不详细描述了。注意在android studio中进行配置就可以了。
使用android studio将刚才的proj.android-studio目录导入工程File->new->import project。然后直接在AS中编译是不行的,ndk部分的编译需要使用命令行,在terminal中执行:
~/cocos2d-x-3.9/tools/cocos2d-console/bin/cocoscompile -p android --android-studio
会自动调用ndk-build进行编译ndk部分(需要时间比较久,每次编译会需要编译cocos的工程部分,如果之前有其他工程编译过,可以直接目标文件copy过来),调用gradle编译apk。
编译完成后,就可以直接运行了。
2、进阶配置
自动生成的jni/Android.mk比较弱,有新增的c++文件需要手动添加:
LOCAL_SRC_FILES:= hellocpp/main.cpp \
../../../Classes/AppDelegate.cpp \
../../../Classes/HelloWorldScene.cpp
所以,网上找了一个可以自动将目录下所有文件包含的mk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
#widcard为扩展通配符 #遍历目录和子目录 define walk $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e))) endef #遍历路径Classes下得目录和子目录文件,并存入ALLFILES变量中 ALLFILES = $(call walk, $(LOCAL_PATH)/../../../Classes) #从ALLFILES目录中提取文件,并存入FILE_LIST中 #.cc是Linux/Unix下为C++源文件的默认扩展名,与.cpp一个意思 #.c 因为我要用到sqlite3.c FILE_LIST := hellocpp/main.cpp FILE_LIST += $(filter %.cpp, $(ALLFILES)) FILE_LIST += $(filter %.c, $(ALLFILES)) FILE_LIST += $(filter %.cc, $(ALLFILES))
#搜索Classes下的子目录文件 FILE_INCLUDES += $(shell find $(LOCAL_PATH)/../../../Classes -type d) #根据搜索到的文件名 编译资源文件 LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) #提供搜索文件的路径 LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes \ $(FILE_INCLUDES) \
LOCAL_STATIC_LIBRARIES := cocos2dx_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
$(call import-module,network) #$(call import-module,editor-support/cocosbuilder) |