“无法在cocos2dx应用程序中找到导入路径中带有'CocosDenshion / android'标签的模块”错误

时间:2013-04-23 07:45:17

标签: android android-ndk cocos2d-x

我正在尝试编译在cocos2d-x上开发的Android本机应用程序。当我尝试调试我的应用程序时,我收到以下错误。

Android NDK: jni/Android.mk: Cannot find module with tag 'CocosDenshion/android' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?
Android NDK: The following directories were searched:

我的android.mk文件中有以下几行

$(Call import-add-path, $(LOCAL_PATH)/../../../CocosDenshion/android)

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,CocosDenshion/android)
$(call import-module,cocos2dx)

在我的build_native.sh中NDK_MODULE_PATH被定义为

"NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/prebuilt"

任何人都可以帮我解决这个问题。

7 个答案:

答案 0 :(得分:7)

前一段时间我遇到了同样的问题 当我在eclipse中定义cocos2dx变量时,它在构建时没有看到它,因此发生了错误ndk模块路径

然后我尝试将模块路径设置为硬编码而没有变量,并且它工作正常 所以我的ndk模块路径看起来像这样,也在eclipse中定义了ndk_root

if [[ "$buildexternalsfromsource" ]]; then
echo "Building external dependencies from source"
"$NDK_ROOT"/ndk-build -C "$APP_ANDROID_ROOT" $* \
    "NDK_MODULE_PATH=/home/myname/adt/cocos2dx:/home/myname/adt/cocos2dx/cocos2dx/platform/third_party/android/source"

这就是我在windows pc中试一试的方法

if [[ "$buildexternalsfromsource" ]]; then
    echo "Building external dependencies from source"
    "$NDK_ROOT"/ndk-build -C "$APP_ANDROID_ROOT" $* \
        "NDK_MODULE_PATH=/cygdrive/c/Users/metin/Desktop/cocos2dx:/cygdrive/c/Users/metin/Desktop/cocos2dx/cocos2dx/platform/third_party/android/source"
else
    echo "Using prebuilt externals"
    "$NDK_ROOT"/ndk-build -C "$APP_ANDROID_ROOT" $* \
        "NDK_MODULE_PATH=/cygdrive/c/Users/metin/Desktop/cocos2dx:/cygdrive/c/Users/metin/Desktop/cocos2dx/cocos2dx/platform/third_party/android/prebuilt"
fi

这是我的Android.mk

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static

include $(BUILD_SHARED_LIBRARY)

$(call import-add-path, /cygdrive/c/Users/metin/Desktop/cocos2dx)
$(call import-add-path, /cygdrive/c/Users/metin/Desktop/cocos2dx/cocos2dx/platform/third_party/android/prebuilt)

$(call import-module,CocosDenshion/android)
$(call import-module,cocos2dx)
$(call import-module,external/chipmunk)
$(call import-module,extensions)

答案 1 :(得分:2)

您需要将NDK_MODULE_PATH定义到包含“CocosDension / Android”文件夹的文件夹。

例如,如果您定义NDK_MODULE_PATH += /cygdrive/c/ndk_modules

你需要把你的cocos dension放在这里:/cygdrive/c/ndk_modules/CocosDension/Android/Android.mk

查看此文档:

https://docs.google.com/document/d/127ZkklXDyknjKAIVAos-DWI9nZSB3uKmTI84lk1TJ9k/edit

https://android.googlesource.com/platform/ndk/+/675fe49445e65ba44d91f4d85ed9b4d5b5ff6745/docs/IMPORT-MODULE.TXT

答案 2 :(得分:1)

即使我遇到过Cocos2d-x android的问题。 您可以尝试this并查看是否有帮助。

答案 3 :(得分:1)

我有同样的问题。问题是,NDK_MODULE_PATH是环境变量,Eclipse(4.2)不允许您为调试定义环境变量,仅用于构建。

因此,在系统范围内定义NDK_MODULE_PATH变量是一种解决方案。在Linux上,您可以通过编辑.profile并添加以下内容来执行此操作:

export NDK_MODULE_PATH="path/to/module"

此解决方案是永久性的,但不灵活。

另一个解决方案是从命令行启动eclipse:

$ export NDK_MODULE_PATH="path/to/module"
$ eclipse

这更灵活,您可以使用简单的脚本来完成。如果更改NDK_MODULE_PATH,则只需重新启动Eclipse而不是整个会话。

答案 4 :(得分:1)

检查

build_native.sh  > **COCOS2DX_ROOT="$DIR/../../.."**

离)

Project Name : FirstExam

c:\cocos2d-x\FirstExam ==> **COCOS2DX_ROOT="$DIR/../.."**

c:\cocos2d-x\example\FirstExam ==> **COCOS2DX_ROOT="$DIR/../../.."**

答案 5 :(得分:1)

http://www.cocos2d-x.org/forums/6/topics/36474

http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-debugging

以上链接详细解释了如何将cocos2d-x项目调试为本机android应用程序。

答案 6 :(得分:1)

您必须在“build_native.sh”中更改此行

COCOS2DX_ROOT="$DIR/../.." 

取决于基于cocos2d-x root的android项目的位置。 例如,如果您的Android项目路径是: C:\的cocos2d-x \项目\项目名\ proj.android 那么

COCOS2DX_ROOT="$DIR/../../.." 

(你必须回三步才能到达cocos2d-x的根目录)

但是如果您的项目路径是 C:\的cocos2d-x \项目名\ proj.android 那么

COCOS2DX_ROOT="$DIR/../../.." 

(你必须走两步才能到达cocos2d-x的根目录)

希望有所帮助