android编译make详细过程日志查看showcommands/verbose.log

背景:

平时做aosp开发时候,如果要编译某一个模块就会直接使用命令make,或者make xxx模块。
比如:

make SettingsProvider
make SystemUI
make bootanimation

这样就直接有对应的apk,或者bin文件了,具体这些apk或者bin文件是如果生成的其实一点都不清楚,那么有没有什么方法可以看到这些bin文件或者apk的是如何生成的呢?特别时候有时候做一些错误排查等情况,非常需要一个详细日志来看一下错在哪里。
下面就来介绍一下如何查看这些make产物的详细输出日志。

aosp8.1的低版本查看方式

在aosp8.1版本时候可以使用make showcommands xx目标的方式来展示详细的编译日志,具体使用如下:
bin文件情况

 make showcommands  bootanimation

日志太多,可以取一点核心部分看看
在这里插入图片描述
上图可以看出来,最开始是编译个目标总共的任务数量,有一个详细的任务进度,实际上编译bin文件用的是prebuilts/clang/host/linux-x86/clang-4053586/bin/clang++这个工具链进行编译的,有通过参数把头文件目录,和cpp源文件进行编译。

编译apk情况
同样如果编译apk则展示如下
在这里插入图片描述
apk的编译相对流程就比较多,上面日志太多,只展示了一小部分,即aapt2打包资源:
在这里插入图片描述
aapt->aidl -> javac-> dx(dex)-> apkbuilder-> jarsigner-> zipalign
第一步:打包资源文件,生成R.java文件
第二步:处理AIDL文件,生成对应的.java文件(工程没有用到AIDL,那这个过程就可以省了)
第三步:编译Java文件,生成对应的.class文件
第四步:把.class文件转化成.dex文件
第五步:打包生成未签名的.apk文件
第六步:对未签名.apk文件进行签名
第七步:对签名后的.apk文件进行对齐处理

aosp14高版本查看方式:

如果高版本android上面也使用make showcommands xx命令会发生什么呢?

test@test:~/disk2/aosp14$ make  showcommands SettingsProvider
! The argument `showcommands` is no longer supported.
! Instead, the verbose log is always written to a compressed file in the output dir:
!
!   gzip -cd /home/test/disk2/aosp14/out/verbose.log.gz | less -R
!
! Older versions are saved in verbose.log.#.gz files15:34:32 Invalid argument#### failed to build some targets (1 seconds) ####

可以看到这里直接报错说showcommands已经不再支持了,不过这里也说了详细的日志已经被压缩打包成了verbose.log.gz文件,直接去这个文件看就行。

下面来看看这个verbose.log.gz文件情况:

test@test:~/disk2/nx563j_aosp14/out$ ls -l verbose.log.*
-rw-rw-r-- 1 test test  5753 Sep 20 13:57 verbose.log.1.gz
-rw-rw-r-- 1 test test 11123 Sep 20 14:00 verbose.log.gz

这里注意verbose.log.gz是在out的根目录查看既可以,但这里需要注意一下,它一般是编译几次就有几个这种verbose.log.gz,末尾加了数字,比如verbose.log.1.gz,verbose.log.2.gz的方式。这里一般查看的最新的日志就是 verbose.log.gz,可以从文件时间情况也看得出来。
打开后如下:
在这里插入图片描述
看看日志
在这里插入图片描述
可以看得出和原来的showcommands方式是一样的,所以高版本aosp其实这块做的更好了,保存成了文件,更加方便我们查看。

更多framework详细代码和资料参考如下链接
投屏专题部分:
https://mp.weixin.qq.com/s/IGm6VHMiAOPejC_H3N_SNg
hal+perfetto+surfaceflinger

https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
其他课程七件套专题:在这里插入图片描述
点击这里
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw

视频试看:
https://www.bilibili.com/video/BV1wc41117L4/

参考相关链接:
https://blog.csdn.net/zhimokf/article/details/137958615

更多framework假威风耗:androidframework007

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145793.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

20240921 每日AI必读资讯

AI、悟空、西湖文创集盒……2024云栖大会有超多硬核科技! - 9月19日,一年一度的阿里云栖大会拉开帷幕 - 阿里现任掌舵者吴泳铭、CTO周靖人携手大模型领域当红炸子鸡月之暗面CEO杨植麟、小鹏汽车CEO何小鹏等一众明星企业创始人给业界带来了一场久违的国…

Docker + Win 10 学习记录

下载Docker Release notes | Docker Docs 推荐使用4.33版本,最新的Docker版本在win10 22H2无法安装。需要升级到win11. 查看Win10版本是否与最新版的Docker兼容 运行 win R, 然后输入winver 如果你的Docker版本无法在当前的win10安装,请更…

搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(五)-聚合

聚合 聚合基于Query结果的统计,执行过程是搜索的一部分,Onesearch支持0代码构建聚合,聚合目前完全在引擎层 0代码聚合 上图是聚合的配置,包括2个pdm文档聚合统计 termsOfExt term桶聚合,统计ext,如&…

热点|创邻图查询范式引爆LDBC TUC2024

2024年8月30日至31日,创邻科技Galaxybase团队联合蚂蚁集团TuGraph团队、阿里巴巴GraphScope团队共同主办第18届LDBC TUC会议。在本次会议中,来自全球图数据库领域的学者和技术专家做了很多精彩的分享,共同探讨图技术的最新进展。创邻科技Gala…

MySQL高阶1853-转换日期格式

目录 题目 准备数据 分析数据 总结 题目 给定一个Days表,请你编写SQL查询语句,将Days表中的每一个日期转化为"day_name, month_name day, year"格式的字符串。 返回的结果表 不计顺序 。 准备数据 Create table If Not Exists Days (d…

【Kubernetes知识点】HPA如何控制不同的资源实现自动扩缩容?

【Kubernetes知识点】HPA如何控制不同的资源实现自动扩缩容? 目录 1 概念 1.1 什么是HPA1.2 Deployment 与 HPA 的关系 1.2.1 工作原理 1.3 StatefulSet 与 HPA 的关系 1.3.1 工作原理 2 实验案例:HPA 控制 StatefulSet 进行扩缩容 2.1 部署一个有状态…

[产品管理-28]:NPDP新产品开发 - 26 - 产品生命周期管理 - 产品上市的八大步骤

目录 一、产品发布 1.1 传统的产品上市发布步骤:线性一次性发布 1. 产品概念提出与市场调研 2. 产品开发与测试 3. 生产准备与质量控制 4. 营销策略制定 5. 产品上市发布 6. 持续优化与迭代 1.2 新型的产品上市发布步骤:逐步迭代,多…

【mysql技术内幕】

MySQL之技术内幕 1.MVCC模式2. 实现mvcc模式的基础点3.MySQL锁的类型4. 谈谈分库分表5. 分表后的id咋么保证唯一性呢?6. 分表后非sharding key的查询咋么处理的? 1.MVCC模式 MVCC, 是multi-version concurrency control的缩写,即多版本并发控…

基于RK3588,AI边缘模块,单片6TOPS,可集群堆叠,Mixtile Blade 3

Mixtile Blade 3 是一款经济实惠、节能的 SBC,围绕下一代 8 纳米瑞芯微 RK3588 处理器构建。它非常适合快速开发、AI 应用程序原型设计和边缘计算,允许您集群多个 Mixtile Blade 3 SBC 以扩展您的部署。 硬件布局正反面 开箱即用的 Mixtile Blade 3 是一…

Jordan标准型

Jordan(若尔当)标准型知识梳理 szmike Keep curious 已关注 raDar 等 634 人赞同了该文章 本文主要介绍什么是Jordan标准型以及怎么把一个矩阵化为Jordan标准型。 一,Jordan标准型的定义 矩阵 J 除了主对角线和主对角线上方元素之外,其余都是0&…

漫步者头戴式耳机怎么样?漫步者、西圣、索尼三大耳机测评对比

自头戴式耳机诞生以来,凭借其出色的音质表现和时尚造型,迅速赢得了音乐爱好者的青睐。头戴式耳机不仅能够带来更加沉浸的听觉体验,还具备较强的降噪功能,让用户在嘈杂环境中依然能专注于音乐世界。 与入耳式耳机相比,…

AIGC生图基础知识

一、引言 AIGC,即AI-Generated Content,是一种利用大型预训练模型如生成对抗网络(GAN)、扩散网络(Diffusion)和语言大模型(Transformer)等人工智能技术,通过对大量数据进…

通过springcloud gateway优雅的进行springcloud oauth2认证和权限控制

代码地址 如果对你有帮助请给个start,本项目会持续更新,目标是做一个可用的快速微服务开发平台,成为接私活,毕设的开发神器, 欢迎大神们多提意见和建议 使用的都是spring官方最新的版本,版本如下&#xff1…

样本册3D翻页电子版和印刷版同时拥有是一种什么体验

​在数字化时代,样本册3D翻页电子版的兴起,让传统印刷版样本册面临着前所未有的挑战。与此同时,许多企业也开始尝试将两者相结合,以满足更多元化的市场需求。那么,拥有一份既具备数字化优势,又保留传统印刷…

生信初学者教程(一):欢迎

文章目录 配套数据R包版本安装包版权答疑在生物信息学(生信)领域,随着高通量测序技术的不断发展,大量数据涌现,为科研工作者提供了丰富的资源。然而,对于初学者而言,如何从海量的数据中挖掘有价值的信息,并开展一个完整的生信项目,仍然是一个挑战。目前,市面上针对初…

PACKMOL 一:手把手教你用Linux安装 packmol

文章目录 1. PACKMOL介绍PACKMOL的主要用途:使用场景:优点: 2. PACKMO安装3. PACKMO验证结束语 1. PACKMOL介绍 PACKMOL 是一个开源软件,用于生成分子动力学模拟所需的初始结构。它的主要功能是根据用户定义的几何约束&#xff0…

Excel--WPS 函数与公式技巧(轻松搞定各类排名)

一、直接按成绩或数值的排序(rank函数轻松搞定) 以上函数非常简单,记住两点: 1.rank排名同分作为同一名次,后面的名次需要占位,如,以上两个70分,同为第8名,那么第9名将被…

局域网变压器市场价值

2024 年全球局域网变压器市场价值为 3.056 亿美元,预计到 2030 年将达到 4.426 亿美元,2024-2030 年的复合年增长率为 5.4%。 局域网变压器市场包括用于改变电信号电压或格式的产品,以改善和简化局域网 (LAN) 上的数据传输。这些变压器对于保…

01_WebRtc_一对一视频通话

文章目录 通话网页的设计客户端实现Web的API 服务端实现 2024-9-20 很久没有写博客啦,回顾总结这段时间的成果, 写下博客放松下(开始偷懒啦)主要内容:实现网页(html)打开摄像头并显示到页面需要…

《 LiteFlow 规则引擎(1) - 入门篇》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…