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

Cocos2d-x:如何将使用XCode开发的Cocos2d-x项目移植到Android(通过Eclipse)?,android,eclipse,xcode,cocos2d-iphone,cocos2d-x,Android,Eclipse,Xcode,Cocos2d Iphone,Cocos2d X,我已经开发了一个带有XCode的Cocos2d-X应用程序,当我在iOS设备上从XCode启动它时,它可以完美地工作 现在,我想把它移植到Android上。我的理解是,我必须找到一种方法将我的“XCode项目”导入Eclipse,以便能够编译并在Android设备上启动它 根据本教程,我目前正在尝试将此项目转换为iOS/Android混合项目: 但是,当我打开这个混合项目时,我没有看到任何我的CPP类(COCOS2D-xC++类)出现在Eclipse中,当我用BuidLuStudio编译它时,我

我已经开发了一个带有XCode的Cocos2d-X应用程序,当我在iOS设备上从XCode启动它时,它可以完美地工作

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

根据本教程,我目前正在尝试将此项目转换为iOS/Android混合项目:

但是,当我打开这个混合项目时,我没有看到任何我的CPP类(COCOS2D-xC++类)出现在Eclipse中,当我用BuidLuStudio编译它时,我得到了以下错误:S::/P>
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

Compile++thumb:game\u logic从外观上看,您需要将自定义创建的文件添加到LOCAL\u SRC\u files部分的class/Android.mk中,如下所示:

LOCAL_SRC_FILES := AppDelegate.cpp \
                   HelloWorldScene.cpp \
                   IntroMenu.cpp \
                   GameLayer.cpp \
                   ScoreManager.cpp
您需要这样做,以便让android构建文件了解构建过程中需要包含的新文件


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

@clawoo是正确的,但您不必包括添加到项目中的每个文件。相反,您可以执行以下操作并忘记它;)

为了避免每次向项目中添加新的源文件时都需要更新该文件,您可以使用以下脚本(在此处找到:)

请记住,如果您在其他地方有文件,例如:

LOCAL_SRC_FILES := main.cpp \
../../../Classes/AppDelegate.cpp \
../../../Classes/HelloWorldScene.cpp \
您可以执行以下操作:

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

就我而言,它起了作用

提示:

如果编译器抱怨“没有规则使target/../”时出现问题,我建议删除Eclipse中obj/local/armeabi/objs debug/game_共享文件夹的内容。然后,重新运行build_native.sh并刷新obj文件夹的(F5)内容

cppfilestemp1 := $(shell find $(LOCAL_PATH)/../../../Classes/ -type d)
LOCAL_SRC_FILES := main.cpp
LOCAL_SRC_FILES += $(cppfiles)