Как настроить номер сборки 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

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

2 ответа

Решение

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


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

Для пользовательских сборок (цель сборки, как указано в ланче) номер сборки будет просто $(BUILD_ID) $(BUILD_KEYS) ", если только DISPLAY_BUILD_NUMBER для параметра установлено значение "истина".

сборка 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


Установка параметров сборки в файле 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 

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
Другие вопросы по тегам