Сборка cocos2d-x под Android

Решил собрать свой проект под Android. И столкнулся с рядом проблем. Первым делом надо было прописать путь к NDK в build_native.sh:

NDK_ROOT=”/home/alexander/android/android-ndk-r8d”

Его тут же можно по пробовать собрать:

./build_native.sh

но у меня он не собрался. И я решил подключить проект к ADT.

Потом оказалось, что недостаточно импортнуть тот proj.android, который был автоматически создан. Нужно включить еще и библиотеку libcocos2dx. Причем она не является Android проектом, так что надо выбирать

import->General->”Existing Projects into Workspace”

, а не

import->Android->”Existing Android Code into Workspace”

В последнем вы его просто не найдете.
Натравили import на каталог с распакованным cocos2dx и выбираем cocos2dx/platform/android/java. После того как проект импортируется, ему необходимо сделать build. По идее, конечно, он должен собраться вместе с вашим проектом, но у меня почему-то этого не произошло.

Вы так же можете импортировать и ваш проект за одно с библиотекой, или отдельно. Он находиться в cocos2dx/projects/{имя проекта}/proj.android

И вот тут началось для меня самое интересное. Оказалось что пути нужным каталогам прописаны, но все они используют переменную COCOS2DX, которая не определена. Не проблема – идем в свойства проекта заходим в Resource->”Linked Resources”. Жмем New, и создаем переменную с именем COCOS2DX, и путем куда вы распаковали ваш cocos.

После этого warnings должны пропасть на этих каталогах, но я на всякий случай сделал project->clean.

Попробовал собрать и оказалось проект опять не собирается. В начале просто: имя пакета основного Java класса было неверно. Потом у меня пошли ошибки в jni/Android.mk. Очень странно я думал они будут генерироваться автоматически. Но ничего, ошибка оказалась не такая сложная: не верные имена в LOCAL_SRC_FILES. Прописал их пока в ручную, хотя можно было бы и дописать скрипт, чтоб он автоматом подцеплял все нужные cpp, если верить интернету.

У меня он стал выглядеть так:

LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/GameScene.cpp \
../../Classes/MainMenu.cpp \
../../Classes/GameLayer.cpp

После этого я пошел в консоль, и ура! Заработало – ./build_native.sh. Прошел успешно. Вернулся в ADT, и тут все успешно заработало. Загрузилось но вывалилось с ошибкой. После разбирательств понял, что ошибка вызвана тем что был не верно прописан activity android:name. При генерации проекта как-то странно создались имена проектов. Исправил, и теперь все заработало.
Поставилось и запустилось на устройстве.

Выводы:

Не все оказалось так просто как я думал. Все требует ручной доводки и включения головы. Да и первый блин комом. Но я рад, что у меня сейчас все корректно собирается. В остальном нужна привычка, собрать еще пяток проектов под Android и это уже не будет вызывать никакой сложности.

This entry was posted in cocos2d-x and tagged , , , , . Bookmark the permalink.