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

Android mk文件中‘TARGET_OUT‘的路径分析 TARGET_OUT:指向产品输出的根目录。:表示系统目录的名称,通常为system。因此,TARGET_OUT的最终路径是。这里,:指向产品输出的根目录。:表示当前编译的目标设备的名称。因此,的路径是TARGETPRODUCTOUTROOTTARGETP​RODUCTO​UTR​OOT。这里,指向了,即目标输出的根目录下的product目录。:指向目标输出的根目录。因此,的路径是。这里,的值取决于当前的构建类型。 阅读详情
本文转自:http://blog.youkuaiyun.com/yimiyangguang1314/article/details/6312215

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_xxx
TARGET_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中建立
Android 7系统日志(八)定制安卓的日志系统 任务方案关键点扩大缓冲区→→扩大缓冲区改为512 * 1024编译时固化,所有设备默认生效扩大缓冲区(临时调试)直接写mMaxSize[],不写属性,重启 logd 失效user 版本不打印 V/D时丢弃 V/D 日志user 版本抑制 V/D,userdebug/eng 保留完整日志系统日志导出logcat -v threadtime -b all *:I -f <文件>+ 定时轮转文件名以logcat启动时刻命名;*:I过滤 V/D 级别,减少无效日志内核日志导出。 阅读详情

相关推荐

RK3568平台开发系列讲解(安卓篇)Android.mk 解析

本文档介绍 Android.mk 文件 简介:Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库 1.模块类型 apk程序 Android程序,编译打包生成apk文件 生成路径 out/target/product/{product-name}/obj/APPS/XXX_in...

内核笔记 4250

android源码mk文件里的TARGET_OUT指向哪里?

android源码mk文件里的TARGET_OUT

LRAA30的博客 1325

android 10.0 预制不可卸载app(RK 展讯 MTK平台都适用)

在10.0的系统产品进行定制化开发新手来说,对怎么预制apk感觉很陌生,但是也很简单的,可以把预制的apk放在vendor 目录下 也可以放在package/app下 配置好mk 让系统能编译到就行预制可卸载app。

安卓兼职framework和app工程师的博客 1795

Android 获取TARGET_OUT的值

情况一: 被定义的路径为: out/target/product/xxx(平台)/system 第一步 . build/envsetup.sh lunch 我这里得到的值是 TARGET_OUT 第二步 验证 get_build_var TARGET_OUT 与路径对应,成功! 情况二: 被定义的路径为: out/target/product/xxx(平台)/system_ext 先在SDK/device 下,grep “system_ext” ./ -nr 若被定义,则编译一下它验证就行 验证例子

qq_27494201的博客 581

【网络】PFC背景和原理 、文档(DCB=PFC + ETS,DCBX=DCB扩展)

目录 零、背景 一、PFC 1.概述 2.报文格式 3.工作机制 二、ETS 产生原因 基本原理 优先级组的调度 优先级的调度 三、DCBX 产生原因 基本原理 DCBX TLV介绍 五、PFC 拥塞研究(文档收集) 六、DC-QCN算法 (网络工程师必会) 7.1 α更新 7.2 降速 7.3 提速 8.总结 ...

小鱼菜鸟的博客 2165

Django Cookie/Session

Cookie是一种小型的文本文件,通常由Web服务器发送到用户浏览器,并存储在用户的本地计算机上。当用户再次访问该网站时,浏览器会将Cookie发送回服务器,从而实现用户身份验证、个性化设置等功能。Session是一种在服务器端存储用户会话信息的方式。与Cookie不同,Session数据存储在服务器上,而不是客户端。Django框架通过在客户端存储一个Session ID来实现Session的跟踪。Django框架的Cookie/Session机制为开发者提供了方便的数据存储和会话管理功能。

froginwe11的博客 467

Android的 Makefile中常用宏定义

在Android编译框架中,把许多固定的、反复用到的目录路径定义为 宏变量,常用 宏 如下:out/target/product/xxx的宏即为:PRODUCT_OUTout/target/product/xxx/system的宏即为:TARGET_OUTout/target/product/xxx/root的宏即为:TARGET_ROOT_OUT,device/test05/BoardConfi...

小李子No1的专栏 1633

51单片机STC8G1K08驱动ws2812记录

使用51单片机控制17个2812灯,这里选择STC8芯片,最大频率可以达到35M,参考网上的各种文章案例,使用定时器做的时候实测做不到规格书要求的245-345ns,STC8G1K08不带PWM,所以只能使用nop来做,好在单片机在这里只有做编程灯的功能,省略测试过程,下面是程序,使用的是24MHz内部晶振 //设置一个灯珠 void SendOnePix(unsigned char *ptr) { unsigned char i,j; unsigned char temp; fo...

的博客 7320

Android Makefile常用模块变量

Android Makefile常用模块变量

特立独行的博客 1385

用Python和NumPy可视化理解波函数:从概率密度到薛定谔方程的可视化教程

本文通过Python和NumPy实现量子力学波函数的可视化,从概率密度到薛定谔方程的动态演化,帮助读者直观理解量子态的特性。教程涵盖无限深势阱、量子谐振子等模型,结合代码示例展示时间演化和期望值计算,为量子力学学习提供实用工具。

weixin_27303545的博客 226

微信4.1.5.16升级后,你的自动化脚本失灵了?手把手教你用C#让UI树“复活”

微信4.1.5.16版本更新导致自动化脚本失效?本文深入解析微信UI树隐藏的原因,并提供C#实战解决方案,通过UIAutomation技术恢复UI树结构,帮助开发者重新实现自动化操作。涵盖技术原理、代码实现及优化策略,适合RPA开发者和自动化脚本编写者参考。

weixin_30879169的博客 519

Android.mk常用模块变量

常用模块描述变量: LOCAL_PATH:给出当前文件路径,必须在Android.mk开头定义,可以这样使用:LOCAL_PATH := $(call my-dir)  这个变量不会被$(CLEAR_VARS)清除,因此每个 Android.mk 只需要定义一次(即使在一个文件中定义了几个模块的情况下)。 LOCAL_SRC_FILES:要编译的源码文件列表,编译系统自动计算依赖,注意文件名称

a22796853的博客 1341

手机相机Tuning专项调优(一):基础流程与图像主观评价标准建立实战解析

本篇为手机相机系统“Tuning专项调优”系列的开篇,深入剖析了当前手机相机Tuning的基本流程与图像主观评价标准的构建方法。结合实际工程经验与最新业界案例,详细介绍ISP调优和3A控制中涉及的主观评价标准,如锐度、色彩饱和度、噪声感知等,并提出一套可工程化落地的标准制定与评测实践体系,帮助工程师有效提升图像品质。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1933

【Android7.1.2源码解析系列】android init目录下的Android.mk编译文件分析

上一篇文章对于源码中的安卓编译系统文档进行了翻译,本文就以android当中的init模块作为例子,对其中的Android.mk文件进行分析,读者可以在阅读本文的同时查看我的译文:http://blog.youkuaiyun.com/class_brick/article/details/70859809。   总的来说,init模块中的Android.mk文件主要进行了 个流程的操作: 1、设置本模块

Don't worry,be happy 2321

从零开始学习CANoe(十六)—— Graphics

Graphics是一种以时间轴为横坐标,符号值为纵坐标的显示分析方法,相对于Trace来说,更直观的观察出信号的跳变

蚂蚁小兵 9193

Qt C++ 电子海图与作战叠加(Overlay)系统

lab_pos->setText(QString("坐标: X%1 Y%2").arg(p.x(),0,'f',0).arg(p.y(),0,'f',0));lab_distance->setText(QString("距离: %1 海里").arg(dist,0,'f',1));lab_bearing->setText(QString("方位: %1°").arg(bear,0,'f',1));// 绘制S-57海图基底。scene->addText("封锁线").setPos(450,180);

寒寒豆豆软件公司的博客 496

Android中Android.mk循环编译多个模块

没想到Android.mk也如此强大,也支持使用foreach循环编译多目标 方法如下: 假设有两个模块需要编译,原来是这样写: # ===================================================== include $(CLEAR_VARS) LOCAL_MODULE := echo_usbhost_test LOCAL_SRC_FILES := ...

u013463707的专栏 1767

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android 系统源码——下载到编译

一直想下载、编译、调试一下Android源码 ,加强对一些framework的理解,搞了好多次,终于可以正常调试了。这里进行一些总结和分享。 Android源码到模拟器运行,主要有的四个步骤: 下载源码 搭建编译环境 准备编译 我使用的环境是Ubuntu16.04 、openJDK8、Android 8.0.0 硬件软件要求 官方文档:要求 硬件要求: 如果是 Android 2.3.x (...

薛瑄的博客 4万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android的 makefile里 的常用 宏定义

在Android编译框架中,把许多固定的、反复用到的目录路径定义为 宏变量,常用 宏 如下: out/target/product/xxx的宏即为:PRODUCT_OUT out/target/product/xxx/system的宏即为:TARGET_OUT out/target/product/xxx/root的宏即为:TARGET_ROOT_OUT, devi

从0到1,突破自己 4408

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android.mk 语法

1. Android.mk示例 LOCAL_PATH := $(call my-dir)             #指定当前目录  include $(CLEAR_VARS)                    #清除一些变量的值,但是LOCAL_PATH除外 LOCAL_MODULE_TAGS := optional            #编译选项便是在何种情况下编译  LOCA

easyer2012的专栏 1527

Android 编译的配置文件:android.mk 和android.bp

(android 10 取消这个参数)此参数会影响到库生成后的存放位置.user: 指该模块只在user版本下才编译eng: 指该模块只在eng版本下才编译tests: 指该模块只在tests版本下才编译optional:指该模块在所有版本下都编译Prelink利用事先链接代替运行时链接的方法来加速共享库的加载,它不仅可以加快起动速度,还可以减少部分内存开销,是各种Linux架构上用于减少程序加载时间、缩短系统启动时间和加快应用程序启动的很受欢迎的一个工具。

z755924843的专栏 3130

Android.mk文件模块详解

LOCAL_PATH: 这个变量用于给出当前文件的路径。必须在 Android.mk 的开头定义,可以这样使用:LOCAL_PATH := $(call my-dir) 如当前目录下有个文件夹名称 src,则可以这样写 $(call src),那么就会得到 src 目录的完整路径这个变量不会被$(CLEAR_VARS)清除,因此每个 Android.mk只需要定义一次(即使在一个文件中定义了几个模...

super-H 1036

android.mk 添加库,Android.mk添加本地程序和库的经常使用模版

Android.mk添加本地程序和库的经常使用模版Android中添加本地程序或者库。这些程序和库与其所在路径没有关系。仅仅与它们的配置文件Android.mk有关。Android.mk文件里可以主要包括一些系统公共的宏。在一个Android.mk中可以生成多个可运行程序、动态库或者静态库。A,编译C/C++应用程序的模板#Demo ExeLOCAL_PATH := $(call my-dir)#...

weixin_29846499的博客 769

android怎么重新编译运行程序,Android下编译,运行hello world程序

1、写一个hello.c#includeint main(){printf("Hello,world!!!\n");return 0;}2、写一个Android.mk文件:#编译时的目录LOCAL_PATH:= $(call my-dir)#清除之前设置的一些变量include $(CLEAR_VARS)#编译的源文件LOCAL_SRC_FILES:= \hello.c#编译的目标对象LOCAL_...

weixin_36246576的博客 856
上一篇: 【Android7.1.2源码解析系列】Android编译系统翻译------Android_Build_System(/build/core/build-system.html)
下一篇: 【Android7.1.2源码解析系列】android init目录下的Android.mk编译文件分析
class_brick
博客等级 码龄12年 223粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值