Cocos2d-x-3.0alpha1 游戏移植android全过程

锵锵锵锵~
终于要在这里记录一下cocos2dx移植android的过程了,当时我研究好几天都没弄明白,现在记录下来整个过程,防止日后忘了,也给后来人作个参考,毕竟现在网上cocos2dx移植的教程还是以2.x版本为主。
在整个移植的过程中必须要感谢泰然网木头的指导,以及煎饼老大的不懈督促。
现在我们开始,首先第一件要做的事就是吐槽cocos2dx官方给的教程,这教程简直太水了,按照它给的方法,简直不可能移植成功,作为一个我目前遇到过的难度仅次于安装gentoo系统的任务,任务提示几乎没有任何作用。
嗯,不说废话了,进入正题。
1. 先安装jdk 1.7,或者jre7,并且配置好java环境变量。虽然这个大家基本安装过了,不过秉着事无巨细的精神,我还是说一下。

2. 然后准备一套android的开发环境,分别下载android的sdk和ndk。sdk大家都知道是什么,我解释下NDK,NDK是google提供的一个从C++到android编程的解释器或者说是翻译器?反正它的作用就是把咱用C++写的代码转换成android工程。
android SDK下载地址:
http://developer.android.com/sdk/index.html  非常推荐下载adt bundle for windows(就是右边最大的那个下载图标),连SDK,eclipse一起全都有了,还不用手动配置,简直安逸。
NDK下载地址 http://developer.android.com/tools/sdk/ndk/index.html 下载最新版本即可,目前应该是r9d。NDK必须再配置下环境变量,在系统变量中添加一条NDK_ROOT=(你NDK解压到的目录)

3. 下面去下载python 2.7.x系列,千万别下3.3,我就是下了3.3以后各种问题,还找不到解决办法。
4.现在环境基本全了,咱们开始编译,先进入你要编译的工程下,找到proj.android文件夹,再找到jni文件夹,可以看到这里面有两个.mk文件,打开android.mk,这里面记录了哪些文件需要编译,以及一些其他信息。正常情况下咱们得自己把写好的cpp文件的路径一个个加进去,不过太麻烦了,想偷懒的可以直接复制我下面这些代码对原本里面的内容直接覆盖,貌似除了加了lua脚本需要改改外,其他的都能编译成功。

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

#traverse all the directory and subdirectory 
define walk 
  $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e))) 
endef 
  
#traverse Classes Directory 
ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes) 
  
FILE_LIST := hellocpp/main.cpp 
FILE_LIST += $(filter %.cpp, $(ALLFILES)) 
  
FILE_INCLUDES := $(shell find $(LOCAL_PATH)/../../Classes -type d) 
  
#source file will be compiled 
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static 
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static 
LOCAL_WHOLE_STATIC_LIBRARIES += spine_static 
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static 
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static


include $(BUILD_SHARED_LIBRARY)

$(call import-module,extensions) 
$(call import-module,editor-support/cocosbuilder) 
$(call import-module,editor-support/spine) 
$(call import-module,editor-support/cocostudio) 
$(call import-module,network) 
$(call import-module,2d)

 编译方法是使用命令行进入要编译的工程下的proj.android文件夹,然后运行build_native.py这个文件。

这里说几个容易报错的地方,首先是代码复制的问题,如果你的整个工程不是用python建立的,而是从别人那里复制来的,有可能出现错误,具体报错信息我忘了,解决办法是自己重新建立一个工程,然后老老实实的用vs里的添加存在项目的方法加入其它代码。
然后再就是一些小错误啦,可能在vs里是个警告,不过在这就编译不过去了,它都会给提示,很好处理。
编译完之后呢,proj.android文件夹里会多出两个文件夹(或许不只两个),一个是obj,一个是assets,其中assets里面装的就是resource里面的文件,obj可以理解成是编译好的代码了。
另外说一句,用python编译的这个过程是需要NDK的,如果之前没配置好NDK的环境变量的话,会给提示,不会编译成功。

我们距离完成已经很近啦,下一步就是打开adt里面附带的eclipse。
选择android project from existing code.

然后先别着急添加你自己写的游戏,先进入cocos2dx的根目录,然后选择cocos文件夹,然后2d文件夹,点击确定后,会看到下面出现了个libcocos2dx的工程,点击完成。

这时候再添加自己写的工程,添加方法一样,无非是进入自己工程的文件夹,然后下方会出现自己工程的名字,选择完成。

激动人心的时刻终于到了,找一台开了开发者模式的手机连上电脑吧,然后点击运行,运行方式当然是android application,在设备列表里找到你的手机,点击确定,就等着游戏在你手机上欢快的跑起来吧,话说我虚拟android手机测试没成功过,不知道是不是我自己不会配的原因。

另外这里有个xml文件可以设置游戏横屏竖屏以及一些属性,网上教程很多,我就不说了。

昨天我特意重新装了个系统按照这个流程走下来,移植成功,省掉了一些现在看起来不是很重要的步骤。

还有最关键的一点,小哥到现在移植ios都不成功啊,报clang failed with exit code 1错误,哪位大侠知道该怎么解决啊?

Cocos2d-x-3.0alpha1 游戏移植android全过程,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。