我找不到任何食谱/教程如何构建调试为Android构建cocos2d-x 3.1项目以及如何在设备上直接调试它。请指出步骤帮助。
我做了什么以及我遇到了什么问题:
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.
答案 0 :(得分:24)
以下是在Android设备上调试cocos2d-x 3.x的逐步教程。如果您采取更好的方式,请更正或优化我的步骤。
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
步骤的帮助!
EDIT1 :评论为Vikas,您可以在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
它打印崩溃转储。