#c #cocos2d-x #cocos2d-x-3.0
#c #cocos2d-x #cocos2d-x-3.0
Вопрос:
Я не смог найти ни одной кулинарной книги / руководства по сборке в debug для создания проекта cocos2d-x 3.1 для Android и как отлаживать его непосредственно на устройстве. Пожалуйста, помогите, указав шаги.
Что я делаю и какие у меня проблемы:
cd proj.android
cocos compile -p android -m debug --ndk-mode NDK_DEBUG=1
(для сборки с информацией об отладке)cocos run -p android -m debug
для развертывания на устройстве- запустите приложение на устройстве
cd jni
ndk-gdb
И я получаю эту ошибку:
Nareks-MacBook-Pro:jni Narek$ ndk-gdb
jni/Android.mk:67: *** Android NDK: Aborting. . Stop.
ERROR: The device does not support the application's targetted CPU ABIs!
Device supports: armeabi-v7a armeabi
Package supports: Android NDK:
В Application.mk
я добавил:
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-10
но это не помогло. Что я делаю не так?
РЕДАКТИРОВАТЬ: добавление результата ndk-build DUMP_APP_ABI
команды, вызываемой в jni
каталоге проектов:
Nareks-MacBook-Pro:jni Narek$ ndk-build DUMP_APP_ABI
Android NDK: /Users/Narek/NoorGames/Games/test2/proj.android/jni/Android.mk: Cannot find module with tag '.' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?
Android NDK: The following directories were searched:
Android NDK:
/Users/Narek/NoorGames/Games/test2/proj.android/jni/Android.mk:67: *** Android NDK: Aborting. . Stop.
Комментарии:
1. Можете ли вы проверить, есть ли obj-файлы, созданные для соответствующих ABI в
proj.androidobjlocalarmeabi
иproj.androidobjlocalarmeabi-v7a
каталогах?2. @VikasPatidar в этих каталогах у меня есть несколько
.a
.so
файлов and (libcocos2d.a, libcocos2dcpp.so, libbox2d.a
), а также два каталога:objs
andobjs_debug
. В каждом из этих каталогов у меня есть следующие каталогиbox2d_static, cocos2dcpp_shared, cocos_extension_static...
. В свою очередь, в этих каталогах есть объектные файлы других каталогов с объектными файлами. Правильно ли это?3. используйте
ndk-build DUMP_APP_ABI
, чтобы найти правильный ABI, а затем измените его,Application.mk
также убедитесьAPP_PLATFORM
, что он работает так же, как и на устройстве. например, android-10 для Android 2.3.3 — это версия запущенного устройства, затем также обновитеAndroidManiefest.xml
до правильной целевой и минимальной версий. Установите их какandroid:minSdkVersion="10" android:targetSdkVersion="10"
одинаковые. Я пробовал использовать версию cocos2dx 3.0 с NDK-r9d в Eclipse.4. @VikasPatidar спасибо за вашу помощь. Пожалуйста, посмотрите результат
ndk-build DUMP_APP_ABI
в моем редактируемом тексте вопроса.5. @VikasPatidar Я думаю, ты спас мне жизнь 🙂 После использования
ndk-build DUMP_APP_ABI
я увидел, чтоNDK_MODULE_PATH
этого не хватает. Я позвонилcocos compile -p android -m debug --ndk-mode NDK_DEBUG=1
. Эта команда показываетNDK_MODULE_PATH
, что должно быть установлено. Я расширилNDK_MODULE_PATH
/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d:/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d/cocos:/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d/external
, и это решило проблему.
Ответ №1:
Вот пошаговое руководство по отладке cocos2d-x 3.x на устройстве Android. Пожалуйста, исправьте или оптимизируйте мои шаги, если вы сделаете это лучше.
cd proj.android
cocos compile -p android -m debug --ndk-mode NDK_DEBUG=1
(для сборки с информацией об отладке)cocos run -p android -m debug
для развертывания на устройстве (иногда он перестраивается, и я не знаю почему). Эта команда удаляет предыдущую установку, устанавливает новую и запускает приложение на устройстве.- убедитесь, что в
proj.android/libs/armeabi
каталоге у вас есть следующие файлыgdb.setup, gdbserver, libcocos2dcpp.so
- также убедитесь, что в
/proj.android/jni/obj/local/armeabi
каталоге у вас естьapp_process, gdb.setup, libc.so, linker
ndk-gdb
(важно! это должно вызываться в каталоге проектов, а не вjni
каталоге)
Если это сработало, поздравляю! Но на этом шаге вы можете увидеть такое сообщение об ошибке:
Nareks-MacBook-Pro:proj.android Narek$ ndk-gdb
jni/Android.mk:67: *** Android NDK: Aborting. . Stop.
ERROR: The device does not support the application's targetted CPU ABIs!
Device supports: armeabi-v7a armeabi
Package supports: Android NDK:
Не волнуйтесь :). Давайте посмотрим, что не так:
- вот результат
ndk-build DUMP_APP_ABI
команды, вызванной вjni
каталоге проекта:Nareks-MacBook-Pro: jni Narek $ ndk-build DUMP_APP_ABI Android NDK: /Users/Narek/NoorGames/Games/test2/proj.android/jni/Android.mk: не удается найти модуль с тегом ‘.’ в пути импорта
Android NDK: Вы уверены, что ваша переменная NDK_MODULE_PATH определена правильно?
Android NDK: Был произведен поиск в следующих каталогах:
Android NDK:
/Users/Narek/NoorGames/Games/test2/proj.android/jni/Android.mk:67: *** Android NDK: прерывание. . Стоп.
Как вы можете видеть NDK_MODULE_PATH
, отсутствует. Для получения значения выполните следующие действия. Перейдите к шагу, на котором вы скомпилировали код. В первой строке выполнения команды cocos compile -p android -m debug --ndk-mode NDK_DEBUG=1
вы можете увидеть что-то вроде этого:
Runing command: compile
Building mode: debug
building native
NDK build mode: NDK_DEBUG=1
The Selected NDK toolchain version was 4.8 !
running: '/Users/Narek/NoorGames/android-ndk-r9d/ndk-build -C /Users/Narek/NoorGames/Games/test2/proj.android -j1 NDK_MODULE_PATH=/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d:/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d/cocos:/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d/external'
- скопируйте из журнала выше, где вы видите необходимое значение
NDK_MODULE_PATH
. Выполните следующую командуexport NDK_MODULE_PATH=/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d:/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d/cocos:/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d/external
(будьте внимательны, чтобы скопировать свой путь, а не мой)
Вот и все. Теперь запустите игру на устройстве, cd proj.android
, вызовите ndk-gdb
, и вы сможете отлаживать с помощью gdb.
Я лично искал этот учебник уже более 20 дней. Надеюсь, вам уже понравилась отладка. 🙂 И спасибо @VikasPatidar за вашу помощь с ndk-build DUMP_APP_ABI
шагом!
РЕДАКТИРОВАНИЕ 1: как прокомментировал Викас, вы можете добавить NDK_MODULE_PATH
в Android.mk
файл следующим образом:
NDK_MODULE_PATH := $(LOCAL_PATH)/../../../../cocos
NDK_MODULE_PATH = $(LOCAL_PATH)/../../../../external
EDIT2: если ваше приложение разбилось, вот очень мощный и простой способ исследовать проблему, предотвращая прямую отладку:
adb logcat | $NDK_ROOT/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi
Он выводит аварийный дамп.
Комментарии:
1. Спасибо за это — особенно за последнее ПРАВКА2. Никогда раньше этого не видел.
2. Мой проект успешно собран. Но в каталоге proj.android/ libs/armeabi у меня нет файлов gdb.setup, gdbserver. У меня есть только libcocos2dcpp.so . Как мне их получить?
3. @John
-m debug --ndk-mode NDK_DEBUG=1
не создает эти файлы?4. Нет, это не так. У меня есть cocos2d-x версии 3.7, NDK r10c и Android SDK 22. Версия NDK Toolchain — 4.9. Я не знаю, имеет ли это какое-либо значение, поскольку я раньше не создавал никаких приложений для Android.