android 源码编译 makefile-Android源码编译makefile调试方法

1. 序言

在学习Android源码编译过程时,需要检查一些定义的变量值。 在读取makefile的代码时,需要通过判断条件去到那个分支。 关键是mk文件没有具体的IDE工具可以一步步调试,最简单原始最好的办法就是添加复制日志,然后在原来的工程下make,整理一下代码流程和根据复制信息进行逻辑。

2.调试方法2.1使用info

格式:$(这里的info写的是需要复制的日志信息)android 源码编译 makefile,下面是Android源码中的代码示例:

android 源码编译 makefile-Android源码编译makefile调试方法

1.

   $(info   [1/1] initializing build system ...)

2.

ifneq ($(filter user userdebug eng,$(MAKECMDGOALS)),)
$(info ***************************************************************)
$(info ***************************************************************)
$(info Do not pass '$(filter user userdebug eng,$(MAKECMDGOALS))' on 
       the make command line.)
$(info Set TARGET_BUILD_VARIANT in buildspec.mk, or use lunch or)
$(info choosecombo.)
$(info ***************************************************************)
$(info ***************************************************************)
$(error stopping)
endif

其实你也可以在括号里添加你想要复制的变量,例如:

$(info Invalid variant: $(TARGET_BUILD_VARIANT))
$(info Valid values are: $(INTERNAL_VALID_VARIANTS))

2.2 使用警告

格式:$(警告这里写入需要复制的日志信息),下面是源码中的示例:

android 源码编译 makefile-Android源码编译makefile调试方法

  ifneq ($(dangling_modules),)
    $(warning: Modules '$(dangling_modules)' in PRODUCT_PACKAGES have nothing to install!)
  endif

warning:这里会在终端上输出你要复制的变量,但只会输出警告信息,编译仍然可以继续

如下,这是我在源码中自己添加的复制的一句:

android 源码编译 makefile-Android源码编译makefile调试方法

2.3 使用错误

格式:$(error这里写需要复制的日志信息),下面是源码中的例子

ifeq ($(TARGET_CPU_ABI),)
  $(error No TARGET_CPU_ABI defined by board config: $(board_config_mk))
endif

这段代码表达的意思:如果TARGET_CPU_ABI为空,那么转到下面的代码,会提示:

android 源码编译 makefile-Android源码编译makefile调试方法

NoTARGET_CPU_ABI由boardconfig定义:build/make/core/board_config.mk

也就是说TARGET_CPU_ABI必须在board_config.mk文件中定义

如果你使用错误调试,你的日志信息会被复制到终端上,然后编译会在这里停止

2.4 使用echo减少调试信息

如果要使用echo来复制android 源码编译 makefile,必须遵守makefile的语句规则,即必须在target之后,如下:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 android 源码编译 makefile-Android源码编译makefile调试方法 https://www.wkzy.net/game/181025.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务