如何在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,剩下来的就是细致的对比工作了。