Cocos2d-x: Как портировать проект Cocos2d-x, разработанный с XCode на Android (через Eclipse)?

Я разработал приложение Cocos2d-X с XCode, которое отлично работает, когда я запускаю его с XCode на устройстве iOS.

Теперь я хочу отправить его на Android. Я понимаю, что мне нужно найти способ импортировать проект «XCode» в Eclipse, чтобы иметь возможность его компилировать и запускать на устройстве Android.

В настоящее время я пытаюсь преобразовать этот проект в гибридный проект iOS / Android, следуя этому руководству: http://gameit.ro/2012/01/creating-an-iphone-and-android-cocos2d-x-hybrid-project-updated / # комментарий-640

Тем не менее, я не вижу ни одного из моих классов cpp (классы cocos2d-x C ++), появляющихся в Eclipse, когда я открываю этот гибридный проект, и при попытке скомпилировать его с помощью 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: Как портировать проект Cocos2d-x, разработанный с XCode на Android (через Eclipse)?"

По внешнему виду вам нужно добавить свои пользовательские созданные файлы в Classes / Android.mk в раздел LOCAL_SRC_FILES следующим образом:

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

Вам нужно сделать это, чтобы файл сборки android знал о новых файлах, которые необходимо включить в процесс сборки.

Вам нужно будет сделать это, afaik, для каждого нового исходного файла, который вы добавите в проект.

@clawoo прав, но вам не нужно включать каждый файл, который вы добавляете в проект. Вместо этого вы можете сделать следующее и забыть об этом;)

Чтобы не обновлять файл каждый раз, когда в проект добавляется новый исходный файл, вы можете использовать следующий скрипт (см. Здесь: 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) 

В моем случае это сработало.

ПОДСКАЗКА:

Если у вас возникли проблемы с компилятором, жалующимся на: «Нет правила для создания цели /…/», я предлагаю удалить в Eclipse содержимое папки obj / local / armeabi / objs-debug / game_shared. Затем повторно загрузите build_native.sh и обновите (F5) содержимое папки obj.