Как можно настроить номер сборки AOSP?

Я собираю AOSP, v4.4.2. Я хочу указать часть строки «Номер сборки» (согласно Настройки -> О планшете).

О странице планшета

Я знаю, что это можно сделать для ядра с помощью значения CONFIG_LOCALVERSION defconfig. Но я хочу изменить «Номер сборки», а не «Версию ядра» (что мне удалось сделать успешно).

В настоящее время соответствующие части моей сборки 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

Что нужно изменить, чтобы указать номер сборки?


person CJBS    schedule 27.01.2015    source источник


Ответы (2)


Значение BUILD_ID в build/core/build_id.mk находится здесь. определенный:

# 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 (пример). Это необязательно и, вероятно, не нужно в вашей ситуации, но вот описание того, как это работает, на случай, если это может быть полезно:

# 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
person eldarerathis    schedule 27.01.2015
comment
Спасибо; это выглядит многообещающе. Когда я повторно делаю lunch mydevice-eng после изменения build/core/build_id.mk, у меня все еще есть следующая распечатка: BUILD_ID=4.4.2_1.0.0-ga. Имеет ли это значение? (я не запускал полную сборку) - person CJBS; 28.01.2015
comment
Честно говоря, я не видел, чтобы lunch выдавал что-то подобное. Я вижу, что это повторяет именно то, что я определил в build_id.mk. Это номер сборки, который вы обычно видите в настройках после прошивки сборки? - person eldarerathis; 28.01.2015
comment
Я разобрался, скоро выложу полную информацию. Вы определенно поставили меня на правильный путь, так что спасибо (+1). По сути, есть файл make для конкретного производителя, который устанавливает его после того, как он установлен в build_id.mk. - person CJBS; 28.01.2015
comment
Ах, значит, это было что-то в дереве устройств, которое переопределяло его? Это устройство не Nexus? Может объяснить, почему я этого не видел. - person eldarerathis; 28.01.2015

Makefile определяет, как создается (объединяется) номер сборки для сборки.


пользовательские сборки

Для пользовательских сборок (цель сборки, указанная в обеде) номер сборки будет просто быть «$(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_ID в build/core/build_id.mk определяет часть строки сборки, однако это может быть переопределено в другом файле 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"

Затем обновите файл .mk, содержащий файл BUILD_ID. Соответственно установите другие параметры сборки.

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 
person CJBS    schedule 28.01.2015