如何自定义 AOSP 内部版本号?
How can the AOSP build number be customized?
我正在构建 AOSP,v4.4.2。我想指定 "Build number" 字符串的一部分(根据设置 -> 关于平板电脑)。
我通过使用 CONFIG_LOCALVERSION
defconfig 值知道这个 can be done 用于内核。但我想更改 "Build number",而不是 "Kernel version"(我能够成功完成)。
目前,我的 AOSP 构建的相关部分是这样的:
# Source build variables
. build/envsetup.sh
# Specify the build target:
# * user -> limited access; suited for production (no ADB)
# * userdebug -> like "user" but with root access and debuggability; preferred for debugging
# * eng -> development configuration with additional debugging tools (with ADB)
lunch mydevice-eng
# Build it!
time m 2>&1 | tee build.out
我应该更改什么以指定内部版本号?
build/core/build_id.mk
中的 BUILD_ID
值是定义的地方:
# BUILD_ID is usually used to specify the branch name
# (like "MAIN") or a branch name and a release candidate
# (like "CRB01"). It must be a single word, and is
# capitalized by convention.
export BUILD_ID=KOT49H
该值会写入您构建的属性,设置会从那里读取它,因此您只需将 export
更改为您想要的任何值。该评论仅供参考,您无需遵循此处概述的约定。在主分支中,他们目前将其定义为 AOSP
。
另一个可用的标志是 DISPLAY_BUILD_NUMBER
(example)。它是可选的,在您的情况下可能不需要,但这里描述了它的工作原理,以备不时之需:
# DISPLAY_BUILD_NUMBER should only be set for development branches,
# If set, the BUILD_NUMBER (cl) is appended to the BUILD_ID for
# a more descriptive BUILD_ID_DISPLAY, otherwise BUILD_ID_DISPLAY
# is the same as BUILD_ID
DISPLAY_BUILD_NUMBER := true
Makefile 定义了如何为构建创建(串联)构建号。
用户构建
对于 user builds(构建目标,午餐时指定),构建号将简单地为“$(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 文件中设置构建参数
与 一样,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
我正在构建 AOSP,v4.4.2。我想指定 "Build number" 字符串的一部分(根据设置 -> 关于平板电脑)。
我通过使用 CONFIG_LOCALVERSION
defconfig 值知道这个 can be done 用于内核。但我想更改 "Build number",而不是 "Kernel version"(我能够成功完成)。
目前,我的 AOSP 构建的相关部分是这样的:
# Source build variables
. build/envsetup.sh
# Specify the build target:
# * user -> limited access; suited for production (no ADB)
# * userdebug -> like "user" but with root access and debuggability; preferred for debugging
# * eng -> development configuration with additional debugging tools (with ADB)
lunch mydevice-eng
# Build it!
time m 2>&1 | tee build.out
我应该更改什么以指定内部版本号?
build/core/build_id.mk
中的 BUILD_ID
值是定义的地方:
# BUILD_ID is usually used to specify the branch name
# (like "MAIN") or a branch name and a release candidate
# (like "CRB01"). It must be a single word, and is
# capitalized by convention.
export BUILD_ID=KOT49H
该值会写入您构建的属性,设置会从那里读取它,因此您只需将 export
更改为您想要的任何值。该评论仅供参考,您无需遵循此处概述的约定。在主分支中,他们目前将其定义为 AOSP
。
另一个可用的标志是 DISPLAY_BUILD_NUMBER
(example)。它是可选的,在您的情况下可能不需要,但这里描述了它的工作原理,以备不时之需:
# DISPLAY_BUILD_NUMBER should only be set for development branches,
# If set, the BUILD_NUMBER (cl) is appended to the BUILD_ID for
# a more descriptive BUILD_ID_DISPLAY, otherwise BUILD_ID_DISPLAY
# is the same as BUILD_ID
DISPLAY_BUILD_NUMBER := true
Makefile 定义了如何为构建创建(串联)构建号。
用户构建
对于 user builds(构建目标,午餐时指定),构建号将简单地为“$(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 文件中设置构建参数
与 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