您的位置:首页 > 移动开发 > Android开发

Android编译时TARGET_OUT_ROOT/TARGET_OUT变量的由来

2015-08-05 20:07 525 查看
TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)TARGET_COPY_OUT_ROOT := root
则首先确定PROUDCT_OUT = $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE);TARGET_DEVIC是我们check出来的目标设备full_xxxTARGET_PRODUCT_OUT_ROOT= $(TARGET_OUT_ROOT)/product;TARGET_OUT_ROOT = $(TARGET_OUT_ROOT_$(TARGET_BUILD_TYPE))TARGET_BUILD_TYPE = release则TARGET_OUT_ROOT = $(TARGET_OUT_ROOT_release)而TARGET_OUT_ROOT_release := $(OUT_DIR)/target则TARGET_OUT_ROOT = $(OUT_DIR)/target一般OUT_DIR默认是out目录则可以说吗TARGET_PRODUCT_OUT_ROOT = out/target/product最后可以得到PROUDCT_OUT = out/target/product/xxx/$(TARGET_COPY_OUT_ROOT)
最终可得到最终的TARGET_OUT_ROOT =  out/target/product/xxx/root/也就是ramdisk文件系统root的所有内容,都放在这里。一般在Android.mk中制定模块编译时的输出路径为LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
此外可以发现TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM)且一般没有指定LOCAL_MODULE_PATH 时,模块编译输出默认到TARGET_OUT。本质就是out/target/product/xxx/system/所在,也就是打包后的system.img所在,把system镜像所在的块分区在init进程中会被挂载到root/system下面( mount ext4 /dev/block/mmcblk1p16 /system)。root根目录下部分文件链接到system内部,如etc等。
以上核心变量均在build/core/envsetup.mk中建立
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: