的PLATFORM_VERSION在AOSP構建目錄定義:
構建/核心/ version_defaults.mk:
ifeq "" "$(PLATFORM_VERSION)"
# This is the canonical definition of the platform version,
# which is the version that we reveal to the end user.
# Update this value when the platform version changes (rather
# than overriding it somewhere else). Can be an arbitrary string.
PLATFORM_VERSION := 5.1
endif
在你的產品的生成文件(或其他地方)定義下面讓變量,並將它們傳遞作爲宏編譯:
# Passing Android version to C compiler
PLATFORM_VERSION_MAJOR := $(word 1, $(subst ., ,$(PLATFORM_VERSION)))
PLATFORM_VERSION_MINOR := $(word 2, $(subst ., ,$(PLATFORM_VERSION)))
PLATFORM_VERSION_REVISION := $(word 3, $(subst ., ,$(PLATFORM_VERSION)))
COMMON_GLOBAL_CFLAGS += -DPLATFORM_VERSION_MAJOR=$(PLATFORM_VERSION_MAJOR) \
-DPLATFORM_VERSION_MINOR=$(PLATFORM_VERSION_MINOR)
ifneq ($(PLATFORM_VERSION_REVISION),)
COMMON_GLOBAL_CFLAGS += -DPLATFORM_VERSION_REVISION=$(PLATFORM_VERSION_REVISION)
endif
定義與版本代碼的頭文件:
android_version。 H:
#define ANDROID_VERSION(major, minor, rev) \
((rev) | (minor << 8) | (major << 16))
#ifndef PLATFORM_VERSION_REVISION
#define PLATFORM_VERSION_REVISION 0
#endif
#define ANDROID_VERSION_CODE ANDROID_VERSION(\
PLATFORM_VERSION_MAJOR, \
PLATFORM_VERSION_MINOR, \
PLATFORM_VERSION_REVISION)
現在,爲了使編譯時間的決定基於Android版本只包括自android_version.h文件並使用預處理程序#if。
我就是這麼做的。在構建時解析了PLATFORM_VERSION字符串, 將它們作爲PLATFORM_VERSION_MAJOR,PLATFORM_VERSION_MINOR,PLATFORM_VERSION_REVISION傳遞,並定義了一個ANDROID_VERSION用於通過在編譯時移動和處理這些PLATFORM_VERSION_ *值來創建平臺版本代碼。 – smichak
smichak - 你可以在這裏發佈你的代碼嗎? PLATFORM_VERSION對我來說一直是空的。不知道我做錯了什麼。 – Bill
PLATFORM_VERSION是在build/core/version_defaults.mk中定義的make變量。您可以在自己的makefile中解析它,從中提取主要版本號,次要版本號和修訂版編號並構建版本代碼。我爲此添加了一個答案。 – smichak