Сборка 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 и это уже не будет вызывать никакой сложности.

Posted in cocos2d-x | Tagged , , , , | Leave a comment

Создание универсального проекта на Cocos2d-x

Решил для начала сделать что-нибудь простенькое. В голову пришло мысль сделать Pacman, или что-то подобное. Думаю это будет хорошим началом. Тем более с рисованием у меня пока плохо.

В общем сначала попробовал скрипт create-android-project.(sh|bat) в корне папки куда распаковал cocos. Но что-то навскидку его не осилил, да и желание только под Android делать у меня нет. Пришлось искать как создавать мультиплатформенный проект. Это оказалось довольно просто. Есть такой скрипт tools/project-creator. Он идет в самом cocos2d-x. Вызвал его примерно так:

./create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language cpp

В результате получается проект под все платформы в папке cocos2d-x/projects. Т.е. это не один проект, а множество проектов с названиями proj.{имя_платформы}. Большинство из них, а скорее даже все, требует доводки, например как проект под Android. Так же там есть общие каталоги Classes и Resources, в них собственно и будет располагаться все платформа независимое.

Я пока собрал свой проект под Linux, но в ближайшее время думаю собрать под Android.

Posted in cocos2d-x | Tagged , , , | Leave a comment

Начал разбираться с cocos2d-x

Начал разбираться с Cocos2d-x. Столкнулся с тем что все напрочь забыл, хотя и знал до этого не так много. Решил начать все сначала. Поискал книги про самые основы: про scene, layers, ccnode-ы. В начале на английском в книге, но потом решил поискать что-нибудь на русском и обнаружил довольно вольный перевод(пересказ) ее тут. Там правда все ориентированно на iOs, но какая разница! Идеология у движка одна и та же, так что все что написано там, думаю подойдет и для C++-го cocos2d-x.

Posted in cocos2d-x | Tagged , , , , , | Leave a comment

Снова на старт

Начинаю вести блог… Еще раз, но с учетом прошлых попыток. Вести буду его для себя, поэтому он не будет иметь какой-то общей тематики. И это скорее это будет мой публичный дневник, но может будет и по другому – посмотрим. Я, конечно, хочу чтобы появились читатели, и этот труд оказался полезным. Для этого буду стараться, чтобы размешенные тут материалы были полезны не только мне.
Моя основная цель: отработка методичности и приобретение навыка писать.
Чтобы этого достичь, думаю мне надо будет вести блог, не менее двух лет. С частотой 3-5 постов в неделю. Что я и собираюсь сделать.
Я справлюсь!

Posted in Приветствие | Leave a comment