PLATFORM_VERSION在AOSP构建目录中定义:
build/core/version_defaults.mk:
ifeq "" "$(PLATFORM_VERSION)"
PLATFORM_VERSION := 5.1
endif
在您的产品的makefile(或任何其他地方)中定义以下make变量,并将它们作为宏传递给编译器:
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:
((rev) | (minor << 8) | (major << 16))
PLATFORM_VERSION_MAJOR, \
PLATFORM_VERSION_MINOR, \
PLATFORM_VERSION_REVISION)
现在,要根据Android版本做编译时决策,只需包含
android_version.h文件并使用预处理器的#if语句即可。