移植cocos2dx 3.2总结

结果是:大家不要采用3.x系列的cocos2dx,还是用2.2.x吧
原因如下:
1、坑非常多,多的让你放弃
2、兼容性非常不好,如果你是2.x的工程,还是用2.x的吧
3、资料非常少,开发方提供了3.x版本,但是3.x的版本各项资料都非常欠缺!论坛上各种3.x的问题贴子,很多都没人回答。
4、3.x做了很多无所谓的精减,结果是,你用到这些他们精减的库时,你只有去哭了。(你的开发环境不可能和他们的一样,他们没问题,你的一定会有问题)
5、千万不要拿来3.x做商业化的程序,会大大增加你的开发周期和成本。

还好吧,我反正无知者无畏,一开始就学了3.2.

那祝你好运!

好吧。我在这里还是给个回答吧。

1、坑非常多,多的让你放弃

所谓的坑,一个可能是引擎本身存在的bug,如果是bug的话,希望您在遇到的时候将bug反馈给我们,反馈的途径很多,如果可以的话,更希望您能直接给仓库提交PR。可以参考:http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Contribution

另一个可能是,使用引擎某些功能需要特别注意的地方,如果有觉得哪里没重点提示的话,您也可以反馈到论坛,我们将在教程编写上着重注意提醒开发者。

2、兼容性非常不好,如果你是2.x的工程,还是用2.x的吧

引擎从2.x到3.x改变的东西确实很多,也在尽量地保证兼容性问题。但是由于某些功能完全重新实现了(比如触摸机制),这将导致2.x到3.x的移植,部分代码不可避免地要进行重写。

2.x到3.x的区别可以参考各个大版本的release note:http://cocos2d-x.org/wiki/Release_Notes_for_Cocos2d-x

3、资料非常少,开发方提供了3.x版本,但是3.x的版本各项资料都非常欠缺!论坛上各种3.x的问题贴子,很多都没人回答。

3.x的资料其实并不少,只是比较乱,现在已经有专门的人在进行处理了。

比较推荐的参考资料是官方wiki:http://cocos2d-x.org/wiki

如果需要中文资料,Cocos2d-x中文网也有不少资料:http://cn.cocos2d-x.org/

论坛上的帖子,我们正在努力地解决,希望更多的人能投入到这个社区,互相帮助。如果有意当版主的,可以站内联系我。

4、3.x做了很多无所谓的精减,结果是,你用到这些他们精减的库时,你只有去哭了。(你的开发环境不可能和他们的一样,他们没问题,你的一定会有问题)

无所谓的精简?这个不太明白。

5、千万不要拿来3.x做商业化的程序,会大大增加你的开发周期和成本。

这个。。。我想如果一开始就使用3.x的开发者,可能也会建议不要用2.x做商业化程序吧。。

差点放弃3.2了,最后还是填平了已知的坑了

直接重写就行了呀, 兼容多费劲

看不出楼主发这帖子有什么意义,本来想来学习下结果是个吐槽贴,还叫什么移植总结

折腾了3天,终于搭建好了Eclipse下能调试的C++和LUA的开发平台

写下教程和配置吧 cocos从一开始eclipse的下的配置就蛋疼的不能调试和使用啊 只能编译apk

完全使用ndk-build进行编译:ndk-build -j2 -k NDK_DEBUG=1 V=1

Application.mk

APP_PLATFORM := android-9
APP_ABI := x86
APP_STL := c++_static
NDK_TOOLCHAIN_VERSION = clang

APP_CPPFLAGS := -frtti -std=c++11 -fsigned-char -DCOCOS2D_DEBUG=1
#APP_CPPFLAGS := -frtti -std=c++11 -fsigned-char -DNDEBUG
APP_LDFLAGS := -latomic
APP_OPTIM := debug
#APP_OPTIM := release

Android.mk

LOCAL_PATH := $(call my-dir)

生成SQLite静态库(我用的最新的版本)

include $(CLEAR_VARS)

LOCAL_MODULE := sqlite3
LOCAL_SRC_FILES = sqlite3/sqlite3.c
LOCAL_C_INCLUDES := (LOCAL_PATH)/sqlite3 LOCAL_EXPORT_C_INCLUDES := (LOCAL_PATH)/sqlite3

include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)

添加 module搜索路径

(call import-add-path, d:/project/src/cocos2d) (call import-add-path, d:/project/src/cocos2d/cocos)
$(call import-add-path, d:/project/src/cocos2d/external)

LOCAL_MODULE := core

这行代码在cocos2dx_static有,但编译器报警说在静态库中,这个设置无效

LOCAL_LDLIBS := -llog -lGLESv2 -lz -landroid

匹配所有CPP文件

MY_SRC_DIR := (LOCAL_PATH)/../src/cpp MY_SRCS := (wildcard (MY_SRC_DIR)/*.cpp) (wildcard (MY_SRC_DIR)/**/*.cpp) MY_SRCS := (MY_SRCS:(LOCAL_PATH)/%=%) LOCAL_SRC_FILES := (MY_SRCS)

根据自己的情况写

LOCAL_C_INCLUDES := $(LOCAL_PATH)/…/src/cpp/include

LOCAL_STATIC_LIBRARIES := curl_static_prebuilt

引用静态包

LOCAL_WHOLE_STATIC_LIBRARIES := sqlite3 cocos_lua_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module, scripting/lua-bindings)

期待cocos2dx 4.x…

3.2版本集成第三方库时候如果编译ios 64位的SDK,总是会报很多错误,因为很多第三方库都不支持64位,而3.2版本默认支持64位,要修改好几个地方的设置才能编译成功,建议恢复成默认32位吧,不然每次都有修改