如何在Android 确定 lunch对应的内核配置

如何在Android 确定 lunch对应的内核配置

背景

因为在调试中发现,user版本出现了一个userdebug版本上没有的bug。为了对比安卓 user版本与userdebug版本的差异,涉及到了内核配置,索性写篇文章,方便后续查阅。

建议了解安卓编译系统有关知识,本文只是其中的一小部分。

分析

安卓编译流程为:

$ source build/envsetup.sh
$ lunch xx-user # $ lunch xx-userdebug
$ make

那么我们知道使用了哪些配置,就需要在lunch中做文章。

熟悉安卓编译系统的人应该知道,所有的lunch项目都位于device目录(具体根据产商的不同而再进行细分)

$ cd device
$ ls 
common  generic  google  qcom  sample

$ ls google
accessory  atv  contexthub

那么就在这里进行查找lunch 对应的xx即可。例如 msm8909

$ cd device
$ find . 2>/dev/null | grep "msm8909" | grep AndroidBoard.mk

# schips @ android in ~/Android7.1_R06_r5402/device [9:33:16]
$ find . 2>/dev/null | grep "msm8909" | grep AndroidBoard.mk
./qcom/msm8909_512/AndroidBoard.mk
./qcom/msm8909w/AndroidBoard.mk
./qcom/msm8909/AndroidBoard.mk
./qcom/msm8909_LMT/AndroidBoard.mk

找到对应的./qcom/msm8909/AndroidBoard.mk,其中的:

#----------------------------------------------------------------------
# Compile Linux Kernel
#----------------------------------------------------------------------
ifeq ($(KERNEL_DEFCONFIG),)
    ifeq ($(TARGET_BUILD_VARIANT),user)
      KERNEL_DEFCONFIG := msm8909-1gb-perf_defconfig # user版本
    else
      KERNEL_DEFCONFIG := msm8909-1gb_defconfig      # user-debug版本
    endif
endif

那么对应的就是:

  • kernel/arch/arm/configs/msm8909-1gb_defconfig
  • kernel/arch/arm/configs/msm8909-1gb-perf_defconfig

OK,剩下来的就是细致的对比工作了。

如果说我的文章对你有用,只不过是我站在巨人的肩膀上再继续努力罢了。
若在页首无特别声明,本篇文章由 Schips 经过整理后发布。
博客地址:https://www.cnblogs.com/schips/
原文地址:https://www.cnblogs.com/schips/p/how_to_make_sure_the_kernel_config_in_android_code_tree.html