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

手工编译模块使用showcommands Android编译环境提供了”showcommands”选项来显示编译命令行,我们可以通过打开这个选项来查看一些编译时的细节。 7627平台,编译单独的模块:(debuggerd) $make debuggerd showcommands 可以看到下面的编译时的细节: target thumb C: debuggerd prebuilt/linux-x86/ccache/ccach 阅读详情
AI摘要

本文围绕AOSP开发中make产物详细输出日志的查看方法展开。介绍了在做AOSP开发编译模块时,为排查错误需查看详细日志。分别阐述了AOSP 8.1低版本用make showcommands xx目标展示编译日志,以及AOSP 14高版本查看verbose.log.gz文件获取日志的方法。

背景:

平时做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 files

15: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技术干货,请关注下面“千里马学框架”

cmake之输出日志 【代码】cmake之输出日志。 阅读详情

相关推荐

android开机动画包制作工具

android开机动画包制作工具,说明请看我的博客

保存make时的日志

原文链接:http://www.arm9home.net/read.php?tid-4100.html 如何获得Linux下make的log? 如何保存控制台对话? 如何将编译过程的信息保存成日志? 编译的过程可能会出错,导致编译过程无法继续进行。详细分析出错信息,有助于解决源码中的语法错误。 那么如何保存配置编译过程的信息?这些信息量很大,都可能超出Shell向上翻滚查看的范围。最

码农 1万+

01_MySQL下载、安装与配置(以MySQL8.0.31版本为例)

1.点击下载好的mysql安装包 进入到mysql installer界面。2.选择MySQL Servers选项 一直下拉。

4823

通过参数showcommands 将编译的命令显示

<br />通过参数showcommands 将编译的命令显示出来,<br />比如原来编译命令是make -j4 但是编译的细节没看到,如果要讲编译的命令显示出来可以用参数showcommands<br />make showcommands  -j4

zhenwenxian的专栏 1万+

卫星动力学仿真模型开发之AI初试

以下是通过AI生成的一个简单的C语言仿真模型,用于模拟卫星的姿态、轨道动力学和运动学。该模型基于基本的物理公式,假设卫星在近地轨道上运行,并忽略了一些复杂的扰动因素(如大气阻力、太阳辐射压等)。姿态动力学描述了卫星绕其质心的旋转运动。轨道动力学描述了卫星在引力作用下的运动。姿态运动学描述了卫星姿态随时间的变化。

xspace的博客 572

LabVIEW通过S7协议直连西门子S7-1200读写DB块全攻略

在工业自动化上位机开发中,PLC数据交互始终是现场调试的关键环节。西门子S7-1200作为常见控制器,其DB共享数据块承载着设备状态与工艺参数。理解S7协议基于TCP 102端口的请求/响应机制,以及标准DB与优化块访问、字节顺序(大端模式)等原理,是打通通信链路的基础。相比OPC或Modbus TCP,原生S7协议直连具有配置简单、读写粒度精确到字节/位、响应及时的优势,非常适合单台上位机监控与参数下发场景。借助Snap7等开源库,LabVIEW可通过CLF节点调用ConnectTo、ReadArea、W

weixin_29166013的博客 255

【Linux】【编译】make编译中打印日志的操作技巧

本文探讨了日常在执行make编译时,涉及日志相关的技巧做一总结,主要涉及详细日志、日志重定向等,相信对日常处理编译问题,会有一定的帮助。

一介草民,只为生活。 4304

汇川机器人与PLC通信-ModbusTCP超详细案例

通过汇川机器人与PLC的ModbusTCP通信项目案例,我们可以了解通讯配置的过程,地址映射的方式,对接信号的转换,运行时序的逻辑等注意事项,帮助我们快速应用到项目中。

weixin_44166380的博客 1万+

Makefile常见错误日志及解决方法

错误日志:/usr/bin/ld: cannot open output file build/config: No such file or directory。错误日志:fatal error: tcpd.h: No such file or directory.解决方案:安装libwrap0-dev(Debian 上的名称)解决方案:新建build目录。

摔不死的笨鸟的博客 1312

避坑指南:QT Creator报Unknown module(s) in QT: serialport的5种解决方法

本文详细解析了Qt Creator报'Unknown module(s) in QT: serialport'错误的5种解决方法,包括检查Qt版本兼容性、安装缺失组件、配置Kit环境等。针对Windows和Linux平台提供具体操作步骤,帮助开发者快速解决串口通信模块问题,提升开发效率。

weixin_29197051的博客 157

comfyui利用 SkyReels-V2直接生成长视频本地部署问题总结 2 :寻找丢失的model 和工作流中 get set 方法的应用

寻找丢失的model 和工作流中 get set 方法的应用,为什么有写工作流 中有很多断掉的节点,没有相互链接?

AI懒虫 1793

Ubuntu 16.04编译Android 6.0源码的优化实践

在Linux环境下进行Android源码编译时,系统版本选择与依赖管理直接影响编译效率。Ubuntu LTS版本因其长期支持特性和稳定的工具链,成为开发者的首选环境。通过物理机安装、软件源优化和精准的依赖配置,可显著提升编译速度。关键技术如ccache缓存加速和并行编译参数调优,能减少60%以上的二次编译时间。针对Android 6.0的特殊需求,需注意OpenJDK 7的版本兼容性问题及ART编译的clang配置。这些优化方法同样适用于其他AOSP版本编译,是移动开发环境搭建的重要参考。

weixin_30682415的博客 413

数字 IC 笔试面试必考点(2)FPGA 开发流程

FPGA 的详细开发流程就是利用 EDA 开发工具对 FPGA 芯片进行开发的过程,所以 FPGA 芯片开发流程讲的并不是芯片的制造流程,区分于 IC 设计制造流程哟(芯片制造流程多麻烦,要好几十亿的费用呢,而且国内也貌似没有哪家像样的 Foundry 厂,除了台湾的 TSMC 在世界有立足之地,Fabless 的 IC 设计公司倒是挺强的如 Hisilicon,这也是它为什么会被 USA 针对的原因)。

新芯设计的博客 2013

将make的输出重定向到文件

数字 含义 标准叫法0 标准输入 stdin = standard input1 标准输出 stdout = standard output2 标准错误输出 stderr = standard error 【用法】 1.想要把make输出的全部信息,输出到某个文件中,最常见的办法就是:...

weixin_30938149的博客 700

OpenClaw 超级 AI 实战专栏【模型推理与实战】(二)官方预训练模型下载与使用

OpenClaw 预训练模型需按「固定目录结构」存放(模型文件夹包含权重 + 配置文件),否则会加载失败;核心流程:下载模型→验证文件完整性→加载模型→传入图片执行推理→可视化结果;常见问题集中在「路径错误」「显存不足」「文件缺失」,按文中方案可快速解决。

qq_36130719的博客 307

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

gzip -cd out/verbose.log.gz | less -R

gzip -cd out/verbose.log.gz | less -R

本博客仅供免费阅读,不提供咨询服务。请勿私信。 351

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

快速编译kernel

1.配置编译环境 source build/envsetup.sh lunch xx 2.开始编译 make showcommands bootimage &gt;build.log 通过参数showcommands 将编译的命令显示出来, 比如原来编译命令是make -j4 但是编译的细节没看到,如果要显示编译的命令可以用参数showcommands 3.创建编译脚本 a.to...

yetaibing1990的博客 3685

假人有限元模型

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

Statistics and Machine Learning Toolbox

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

Android常用的一些make命令

1.make -jX   X表示数字,这个命令将编译Android系统并生成镜像,XX表示可以使用到的CPU核数,这在配置好的电脑上特别有用,公司的16核ubuntu服务器执行make -j16只要不到20分钟,而双核PC上需要4个小时! 2.make snod   这条命令将重新生成镜像,消耗的时间很少,类似WinCE的makeimg过程,如果你修改了一些数据文件(如音乐、视频)等

liuxd3000的专栏 1万+

make编译打印详细日志

常用的是make V=1 具体如下: 命令 描述 make V=0 quiet build (default) make V=1 verbose build make V=2 give reason for rebuild of target 举个例子 gaoliwendeMacBook-Pro:webrtc-audio-processing-0.3.1 gaoliwe...

glw@glw的博客 1万+

linux make 错误日志,Linux内核编译错误(关于 __gnu_mcount_nc): make: *** [.tmp_vmlinux1] Error 1...

编译内核时出现了以下错误信息:To see full details build your kernel with:'make CONFIG_DEBUG_SECTION_MISMATCH=y'GEN .versionCHK include/linux/compile.hUPD include/linux/compile.hCC init/version.oLD...

weixin_33520510的博客 784

aosp build verbose log

Build aosp10 [lake@localhost git-aosp-Android78910]$ gzip -cd out/verbose.log.gz |less -R

hushui的专栏 610

linux 学习笔记-01

1、编译保存log:make SHOWCOMMAND=TRUE 2>&1 | tee build.log 用途 编译时将编译log写到build.log文件中,同时也输出到标准输出。 解释 2 表示标准输出。 文件描述符: 0 stdin,1 stdout,2 stderr 2>&1,表示标准错误重定向到标准输出, 如果没有2>&1,只会有标准输出,没有错误; tee的作用同时输出到控制台和文

King_Guo的博客 577

Android 编译命令:make -j8 SHOWCOMMAND=TRUE 2>&1 | tee build.log解释

在编译Android的时候,经常用到命令:make -j8 SHOWCOMMAND=TRUE 2>&1 | tee build.log其中 make 是编译命令, -j8 这里的 8 指的是线程数量,就是要用几个线程去编译这个工程,一般会是 CPU核心数的2 倍。 通过参数showcommands 将编译的命令显示出来, 比如原来编译命令是make -j8 但是编译的细节没看到,如果要将编译的命令

King_Guo的博客 3935

Android开机动画的动态替换

支持Android机器上开机动画的动态替换,即系统动画bootanimation.zip支持在上层应用中自定义修改,重启开机后生效。

有何不可的博客 2115

showcommands原理

        很多时候,我们在系统源码中编译的时候希望看到整个与编译,编译,连接,或者java的编译,字节码转换的过程,但在系统中默认是关闭的。        其实,打开这个开关也很简单,只需要在编译的时候加上showcommands。        为什么会有这种操作呢?        首先,需要明确,mmm或者mm本身是我们在执行source buid/envsetup.sh 的时候定义的方...

u011494885的博客 2086
上一篇: 安卓Settings值原理源码剖析存储最大的字符数量是多少?
下一篇: 如何基于scrcpy改造实现大厂一键连招/触摸宏功能(带java源码)-千里马安卓framework实战
千里马学框架
博客等级 码龄6年 1万+粉丝 651原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值