Cocos2dx Android.mk

用之前写过的Android.mk为例(见下面)来讲:

Vuforia-prebuilt模块

第一个模块Vuforia-prebuilt,是将已经编译好的.so以预编译库的形式添加进该工程,模块名为Vuforia-prebuilt,需要注意的是一个模块只能添加一个.so.
LOCAL_EXPORT_C_INCLUDES 是头文件的路径,包含头文件的路径同时,并导出这个路径,意思就是说,如果有个名为A模块需要以LOCAL_STATIC_LIBRARIES的形式添加这个B模块,A模块就不需要添加这个B模块的include的路径,因为B模块的include路径已经以LOCAL_EXPORT_C_INCLUDES的形式一并导出了

OpenCV-prebuilt模块

第二个模块OpenCV-prebuilt,同上

cocos2dcpp_shared模块

第三个模块cocos2dcpp_shared,这是汇总了其他模块的模块,讲到笔记的重点了,就是import-add-path,这是添加NDK_MODULE_PATH的意思,NDK编译的时候,需要指定的模块路径,当Android.mk中使用**$(call import-module, XXX),函数引入外部模块时会用到,用来指示该去哪里找这个文件,比如这个cocos2dcpp_shared中,有个$(call import-add-path, $(LOCAL_PATH)/../../../Classes)**,如果我们在Classes/FaceTracker文件下有个Android.mk文件,并且该文件里有个mytrack_static名字的模块,那么我们只需要在当前Android.mk(并非Classes目录下的)文件里的末端加上一句$(call import-module, FaceTracker),那么它就会在FaceTracker目录(这个目录就是相对Classes目录的)下去找含有mytrack_static模块的Android.mk,并编译。
NOTES:当然为了简洁,我在笔记里就直接用相对cocos2d目录来写FaceTracker目录里的模块,也就是最后一句是$(call import-module, ../Classes/FaceTracker)而不是$(call import-module, FaceTracker)

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := Vuforia-prebuilt
LOCAL_SRC_FILES := thirdpartylibs/libVuforia.so
#LOCAL_C_INCLUDES := E:/Libraries/vuforia-sdk-android-5-5-9/build/include
LOCAL_EXPORT_C_INCLUDES := E:/Libraries/vuforia-sdk-android-5-5-9/build/include
include $(PREBUILT_SHARED_LIBRARY)

#include $(CLEAR_VARS)
#LOCAL_MODULE := OpenCV-prebuilt
#LOCAL_SRC_FILES := thirdpartylibs/libopencv_java.so
##LOCAL_EXPORT_C_INCLUDES := E:/Libraries/opencv2410/build/include
#include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
#$(call import-add-path,$(LOCAL_PATH)/../../../Classes)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../../Classes/AppDelegate.cpp \
                   ../../../Classes/HelloWorldScene.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes \
                                                $(LOCAL_PATH)../../../Classes/FaceTracker

# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END


LOCAL_STATIC_LIBRARIES := cocos2dx_static
LOCAL_STATIC_LIBRARIES += mytrack_static
LOCAL_SHARED_LIBRARIES += Vuforia-prebuilt
#LOCAL_SHARED_LIBRARIES += OpenCV-prebuilt


# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END
include $(BUILD_SHARED_LIBRARY)

$(call import-module,.)
$(call import-module,../Classes/FaceTracker)

# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END