Makefile 就是定义构建版本号(连接)的文件。
用户构建
对于用户构建(使用lunch指定的构建目标),构建号将简单地为“$(BUILD_ID) $(BUILD_KEYS)
”,除非设置了DISPLAY_BUILD_NUMBER
参数为“true”。
eng/userdebug 构建
对于其他构建(即eng/userdebug),会包括更多的信息:
build_desc := $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT) $(PLATFORM_VERSION) $(BUILD_ID) $(BUILD_NUMBER) $(BUILD_VERSION_TAGS)
Makefile源代码在此处可用:https://android.googlesource.com/platform/build/+/android-4.4.2_r1/core/Makefile#106
在make文件中设置构建参数
如@eldarerathis所提到的那样,build/core/build_id.mk
中的BUILD_ID
值定义了构建字符串的一部分,但是这可能会被另一个make(*.mk
)文件覆盖。
运行lunch
时,将打印BUILD_ID
的值以进行验证。如果此值与build_id.mk
文件中的值不同,则搜索设置该值的位置并重新配置它。例如,如果作为lunch
的一部分,输出包括“4.4.2_1.0.0-ga”:
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4.2
...
HOST_BUILD_TYPE=release
BUILD_ID=4.4.2_1.0.0-ga
OUT_DIR=out
============================================
...然后搜索“4.4.2_1.0.0-ga”以找到它:
me@mybox:~/AOSP$find . -name "*.mk" | xargs grep "4.4.2_1.0.0-ga"
然后,更新包含BUILD_ID
的.mk
文件。相应地设置其他构建参数。
BUILD_NUMBER
、PLATFORM_VERSION
和BUILD_ID
位于:build/core/version_defaults.mk
。如果在没有设置它们的情况下启动构建,则会设置这些值。
将构建参数设置为构建时的参数
或者(并且我认为更好的方法是),可以像这样将这些参数作为构建命令行的一部分进行设置:
me@mybox:~/AOSP$ time m BUILD_ID="MyBuildv1.2" BUILD_NUMBER=12345 2>&1 | tee build.out
build/core/build_id.mk
后重新运行lunch mydevice-eng
之后,我仍然会看到以下输出:BUILD_ID=4.4.2_1.0.0-ga
。这有关系吗?(我没有让完整的构建运行) - CJBSlunch
输出任何类似那样的东西。我看到它恰好回显了我在build_id.mk
中定义的内容。这是您在刷写构建后通常在设置中看到的构建号码吗? - eldarerathisbuild_id.mk
中设置后再进行设置。 - CJBS