我正在尝试使用Android NDK创建一个模块,但我似乎无法让构建程序获取路径变量。我已经尝试在cygwin中将其设置为环境变量:
$ echo $NDK_MODULE_PATH
/cygdrive/c/dev/code/git/android_source
我也在Android.mk文件中指定它:
#===================================
LOCAL_PATH:= $(call my-dir)
NDK_MODULE_PATH := $(LOCAL_PATH)/../../code/git/android_source/
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := user
LOCAL_MODULE := libFilters
LOCAL_SRC_FILES := SkewFilter.cpp SkewFilter.h
LOCAL_LDLIBS := -llog
LOCAL_EXPORT_LDLIBS := -lz
LOCAL_SHARED_LIBS := libskia
include $(BUILD_SHARED_LIBRARY)
#===================================
$(call import-module,libskia)
最终结果仍是这样:
$ ndk-build
Android NDK: jni/Android.mk: Cannot find module with tag 'libskia' 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:
jni/Android.mk:17: *** Android NDK: Aborting. . Stop.
任何人都知道我做错了什么?
我发现了这个问题How to specify directory for NDK_MODULE_PATH,但没有任何帮助。
答案 0 :(得分:0)
我弄清楚我做错了什么。 Android.mk文件中的这一行需要更改:
$(call import-module,libskia)
到
$(call import-module,external/skia)
它不会对模块进行递归搜索,因此在调用import-module时,它需要相对于NDK_MODULE_PATH(NDK_MODULE_PATH + path_to_module)的完整路径。
ndk-build打印的错误消息似乎是错误的,因为它没有列出NDK_MODULE_PATH变量中的任何路径,但它们在那里并且它使用它们。
希望这有助于其他人。