关于CM Wiki的this指南,我已经为我自己的设备编译CM一年多了,但这只不过是重新创建夜间版本。我一直想冒险超越基础,今天我已经掌握了第一步。
我现在计划做的是在构建之前自定义/system/build.prop
,而不是在闪烁之后进行修改。我做了一些研究并确定了一些负责生成它的脚本和makefile,并且有问题的一个makefile是vendor/cm/config/common.mk
。我想要修改的部分改变了" CyanogenMod版本"设置 - 关于中显示的字段,如下图所示:
common.mk
将这些行对应(略微修改以缩短):
ifeq ($(CM_BUILDTYPE), RELEASE)
ifndef TARGET_VENDOR_RELEASE_BUILD_ID
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(CM_BUILD)
else
ifeq ($(TARGET_BUILD_VARIANT),user)
ifeq ($(CM_VERSION_MAINTENANCE),0)
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(CM_BUILD)
else
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(CM_VERSION_MAINTENANCE)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(CM_BUILD)
endif
else
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(CM_BUILD)
endif
endif
else
ifeq ($(CM_VERSION_MAINTENANCE),0)
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(shell date -u +%Y%m%d)-$(CM_BUILDTYPE)$(CM_EXTRAVERSION)-$(CM_BUILD)
else
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(CM_VERSION_MAINTENANCE)-$(shell date -u +%Y%m%d)-$(CM_BUILDTYPE)$(CM_EXTRAVERSION)-$(CM_BUILD)
endif
endif
PRODUCT_PROPERTY_OVERRIDES += \
ro.cm.version=$(CM_VERSION) \
ro.cm.releasetype=$(CM_BUILDTYPE) \
ro.modversion=$(CM_VERSION) \
ro.cm.display.version=$(CM_VERSION)
现在我想定义另一个带空格的变量,它存储我要在该字段中显示的自定义字符串,例如" CM13 FOO BAR",所以我&#39 ;写下这个:
ifndef CM_VERSION_CUSTOM
CM_VERSION_CUSTOM := CM13 FOO BAR
endif
...并将CM_VERSION_CUSTOM指定给CM_VERSION适用的地方。
在实践中,这根本不起作用 - 字符串输出到/build.prop
不正确,有时好像每个空格都是换行符,有时好像第一个空格之后的内容没有存在,像这样:
ro.cm.version=CM13
FOO
BAR
ro.modversion=CM13
ro.cm.display.version=CM13
我尝试将引号('和"已测试)添加到字符串定义或引用CM_VERSION CUSTOM的位置(例如" $(CM_VERSION_CUSTOM)"),但没有帮助。我根本不熟悉makefile,所以我现在感到茫然。有人能以正确的方式指出我吗?
答案 0 :(得分:0)
我最终只为此编写了一个shell脚本。我将脚本打包在一个可刷新的zip中,让updater-script调用脚本。脚本本身就是这样的:
#!/sbin/sh
CM_VER="CyanogenMod 12.1 Nightly CGMod"
sed -i "s/ro.cm.version=.*/ro.cm.version=$CM_VER/g" /system/build.prop
这不仅允许我修改此属性,还可以修改其他类似属性,例如构建类型,日期和其他(在grep
的帮助下),在构建之前很难触及。