Cocos2d-x:如何将使用XCode开发的Cocos2d-x项目移植到Android(通过Eclipse)?

我用XCode开发了一个Cocos2d-X应用程序,当我在iOS设备上从XCode启动它时,它完美地工作。

现在,我想将其移植到Android。 我的理解是,我必须find一种方法将我的“XCode项目”导入到Eclipse中,以便能够编译它并在Android设备上启动它。

我目前正试图将这个项目转换为一个混合iOS / Android项目以下教程: http : //gameit.ro/2012/01/creating-an-iphone-and-android-cocos2d-x-hybrid-project-updated /#评论-640

不过,当我打开这个混合项目时,我没有看到任何出现在Eclipse中的cpp类(cocos2d-x C ++类),并且在尝试使用build_native.sh进行编译时出现以下错误:

Compile++ thumb : game_logic <= AppDelegate.cpp jni/../../Classes/AppDelegate.cpp:14:23: error: IntroMenu.h: No such file or directory jni/../../Classes/AppDelegate.cpp:15:23: error: GameLayer.h: No such file or directory jni/../../Classes/AppDelegate.cpp:16:26: error: ScoreManager.h: No such file or directory jni/../../Classes/AppDelegate.cpp: In member function 'virtual bool AppDelegate::applicationDidFinishLaunching()': jni/../../Classes/AppDelegate.cpp:99: error: invalid use of incomplete type 'struct ScoreManager' jni/../../Classes/AppDelegate.h:17: error: forward declaration of 'struct ScoreManager' jni/../../Classes/AppDelegate.cpp:101: error: invalid use of incomplete type 'struct ScoreManager' jni/../../Classes/AppDelegate.h:17: error: forward declaration of 'struct ScoreManager' jni/../../Classes/AppDelegate.cpp:118: error: 'GameLayer' has not been declared jni/../../Classes/AppDelegate.cpp:120: error: 'IntroMenu' has not been declared make: *** [obj/local/armeabi/objs-debug/game_logic/AppDelegate.o] Error 1 macbook-de-regis-andre-2:android regisandre$ ./build_native.sh 

我是否需要将一些文件导入Eclispe? 我必须修改一些android.mk文件吗? 别的东西?

任何人都可以帮我或写一个关于这个话题的教程? 谢谢 !!

Solutions Collecting From Web of "Cocos2d-x:如何将使用XCode开发的Cocos2d-x项目移植到Android(通过Eclipse)?"

从它的外观你需要添加你的自定义创build的文件类LOCAL_SRC_FILES部分中的Classes / Android.mk像这样:

 LOCAL_SRC_FILES := AppDelegate.cpp \ HelloWorldScene.cpp \ IntroMenu.cpp \ GameLayer.cpp \ ScoreManager.cpp 

您需要这样做才能让android构build文件知道需要包含在构build过​​程中的新文件。

您需要为添加到项目中的每个新源文件执行此操作。

@clawoo是正确的,但你不必包括你添加到项目中的每个文件。 相反,你可以做以下事情,并忘记它;)

为了不需要每次将新的源文件添加到项目时更新文件,可以使用以下脚本(可在此处find: http : //www.cocos2d-x.org/boards/6/topics/5321 )

 dirs := $(shell find $(LOCAL_PATH) -type d) cppfilestemp1 := $(shell find $(LOCAL_PATH) -type d) cppfilestemp2 := $(shell find $(cppfilestemp1) -name *.cpp) cppfilestemp3 := $(sort $(cppfilestemp2)) cppfiles := $(subst $(LOCAL_PATH)/,,$(cppfilestemp3)) LOCAL_SRC_FILES := \ $(cppfiles) 

请记住,如果你有其他地方的文件,例如:

 LOCAL_SRC_FILES := main.cpp \ ../../../Classes/AppDelegate.cpp \ ../../../Classes/HelloWorldScene.cpp \ 

你可以做到以下几点:

 cppfilestemp1 := $(shell find $(LOCAL_PATH)/../../../Classes/ -type d) 

 LOCAL_SRC_FILES := main.cpp LOCAL_SRC_FILES += $(cppfiles) 

在我的情况下,它的工作。

暗示:

如果你有编译器抱怨的问题:'没有规则做目标/…/',我build议在Eclipse中删除obj / local / armeabi / objs-debug / game_shared文件夹的内容。 然后,重新运行build_native.sh并刷新(F5)obj文件夹的内容。