我做什么和我有什么问题:
> cd proj.android
> cocos compile -p android -m debug –ndk-mode NDK_DEBUG = 1(使用debug信息构建)
> cocos运行-p android -m调试在设备上部署
>在设备上运行应用程序
> 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.
解决方法
> cd proj.android
> cocos compile -p android -m debug –ndk-mode NDK_DEBUG = 1(使用debug信息构建)
> cocos运行-p android -m调试在设备上部署(有时它重建,我不知道为什么).此命令卸载以前的安装,安装新的安装程序,并在设备上运行该应用程序.
>确保在proj.android/libs/armeabi目录中有以下文件gdb.setup,gdbserver,libcocos2dcpp.so
>还要确保在/proj.android/jni/obj/local/armeabi目录中有app_process,gdb.setup,libc.so,linker
> ndk-gdb(重要的是这个应该在project目录下调用,不在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:
别担心:)让我们看看有什么问题:
>这里是在项目的jni目录中调用的ndk-build DUMP_APP_ABI命令的结果:
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的第一个linse中编译-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:/用户/ Narek / NoorGames /游戏/ test2 / proj.android /../ cocos2d / external(请注意复制您的路径不是我的)
而已.现在在设备上运行游戏,cd proj.android,调用ndk-gdb,你应该能够使用gdb进行调试.
我亲自找了这种教程已经20多天了.我希望你喜欢你的调试. :)感谢您@VikasPatidar的帮助与ndk-build DUMP_APP_ABI步骤!
EDIT1:作为评论的Vikas,您可以在Android.mk文件中添加NDK_MODULE_PATH,如下所示:
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
它打印崩溃转储.