在Android.mk文件中使用以下示例代码可以解决子目录构建问题:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := module1
LOCAL_SRC_FILES := $(LOCAL_PATH)/subdir1/file1.cpp $(LOCAL_PATH)/subdir1/file2.cpp
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := module2
LOCAL_SRC_FILES := $(LOCAL_PATH)/subdir2/file3.cpp $(LOCAL_PATH)/subdir2/file4.cpp
include $(BUILD_SHARED_LIBRARY)
[...]
其中,LOCAL_PATH 指定 Android.mk 文件所在的目录。CLEAR_VARS 用于清空当前模块的所有变量,避免出现冲突。MODULE 定义当前模块名称,SRC_FILES则指定需要编译的文件列表。最后使用 BUILD_SHARED_LIBRARY 命令进行编译构建。需要注意的是,每个子目录都需要单独编写一个模块规则。