您的位置:首页 > 产品设计 > UI/UE

Android——编译体系中的【PRODUCT_COPY_FILES】【ALL_PREBUILT】【BUILD_PREBUILT】

2017-04-27 16:32 1216 查看

转载地址:http://blog.csdn.net/jscese/article/details/40615801

一.PRODUCT_COPY_FILES :

这个变量就是用来标记Copy操作的,比较常见的形式如下:

#jscese cp 3g script and
PRODUCT_COPY_FILES += \
$(DEVICE_SOURCES)/3g-script/ip-up-datakey:system/etc/ppp/ip-up-datakey \
$(DEVICE_SOURCES)/3g-script/ip-down-datakey:system/etc/ppp/ip-down-datakey \
$(DEVICE_SOURCES)/3g-script/init.gprs-pppd:system/etc/ppp/init.gprs-pppd \
device/sample/etc/apns-full-conf.xml:system/etc/apns-conf.xml \
#external/usb-modeswitch/usb_modeswitch.d:system/etc/usb_modeswitch.d
#PRODUCT_COPY_FILES += \
#$(DEVICE_SOURCES)/3g-script/ip-down-datakey:system/etc/ppp/ip-down-datakey

#end

可以看到 格式<source file>:<dest file> 中间用 “ :  ” 隔开!

这里需要注意一点, PRODUCT_COPY_FILES 不能在 Android.mk 中使用 添加新的Copy 项!使用 PRODUCT_COPY_FILES 应该算是最常用的Copy File 的方法了,一般可直接加在 device.mk 中!

还有PRODUCT_COPY_FILES不能copy apk文件。

二 .copy_to copy_from ALL_PREBUILT

这个方法用在Android.mk中,可参考 /system/core/rootdir/Android.mk:

copy_from += etc/init.goldfish.sh

copy_to := $(addprefix $(TARGET_OUT)/,$(copy_from))
copy_from := $(addprefix $(LOCAL_PATH)/,$(copy_from))

$(copy_to) : PRIVATE_MODULE := system_etcdir
$(copy_to) : $(TARGET_OUT)/% : $(LOCAL_PATH)/% | $(ACP)
$(transform-prebuilt-to-target)

ALL_PREBUILT += $(copy_to)

ALL_PREBUILT  是一种过时的机制,已经不让用于copy新的文件了,推荐使用PRODUCT_COPY_FILES  !

三 .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 一个文件目录下所有就需要另做操作了!

这里我们需要把这个当成一个module来处理 写进 PRODUCT_PACKAGES, 这就代表这些Module 无论如何都会被编译安装进系统。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: