一、LOCAL_CFLAGS
LOCAL_CFLAGS-D,增加全局宏定义。
LOCAL_CFLAGS := -DUSE_JSC相当于在所有源文件中增加一个#define USE_JSC
LOCAL_CFLAGS := -DUSE_COPY_BIT=1相当于在所有源文件中增加一个#define USE_COPY_BIT 1
还有其它的像-W等,都是传递给编译使用的。
比如:LOCAL_CFLAGS := Werror 就是传给编译使用
二、BUILD_PREBUILT
这种方式把文件当成编译项目,在Android.mk中copy一个file
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS) \
LOCAL_MODULE := usb_modeswitch.conf \
LOCAL_MODULE_CLASS := ETC \
LOCAL_MODULE_PATH := $(TARGET_OUT)/etc \
LOCAL_SRC_FILES :=$(LOCAL_MODULE) \
include $(BUILD_PREBUILT)
上面的就是copy usb_modeswitch.conf 文件到 OUT 下面的 etc目录,这个目录常用来存放配置相关文件。
上面所有的都说的是Copy File 但是如果需要 Copy 一个文件目录下所有就需要另做操作了!
三、ACP
ACP描述的是一个Android专用的cp命令,在生成system.img镜像文件的过程中是需要用到的。普通的cp命令在不同的平台(Mac OS X、MinGW/Cygwin和Linux)的实现略有差异,并且可能会导致一些问题,于是Android编译系统就重写了自己的cp命令,使得它在不同平台下执行具有统一的行为,并且解决普通cp命令可能会出现的问题。例如,在Linux平台上,当我们把一个文件从NFS文件系统拷贝到本地文件系统时,普通的cp命令总是会认为在NFS文件系统上的文件比在本地文件系统上的文件要新,因为前者的时间戳精度是微秒,而后者的时间戳精度不是微秒。Android专用的cp命令源码可以参考build/tools/acp目录。
看下面的例子:
$(ACP) $(TARGET_ROOT_OUT)/file_contexts $(BUILT_RAMDISKUPDATE_DIR)