http://yueguc.iteye.com/blog/1124093
在文件 packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java 中
setStringSummary("build_number", Build.DISPLAY);
指定了设置--关于设备--版本号。
Build.DISPLAY即Build类中的 DISPLAY 变量,在文件frameworks/base/core/java/android/os/Build.java 中:
public static final String DISPLAY = getString("ro.build.display.id");
ro.build.display.id在文件build/tools/buildinfo.sh中:
echo "ro.build.display.id=$BUILD_DISPLAY_ID"
而BUILD_DISPLAY_ID在文件build/core/Makefile中:
BUILD_DISPLAY_ID := $(BUILD_ID).$(BUILD_NUMBER)
其中 BUILD_ID在build/core/build_id.mk中赋值
BUILD_ID := OPENMASTER
BUILD_NUMBER 在 build/core/version_defaults.mk中赋值:
BUILD_NUMBER := eng.$(USER).$(shell date +%Y%m%d.%H%M%S)
所以在版本号中会出现编译时间的字段。
ro.build.display.id编译后保持在system下的build.prop文件。
修改\build\tools\buildinfo.sh
-修改echo "ro.build.display.id=$BUILD_DISPLAY_ID", 把 $BUILD_DISPLAY_ID 修改成其他的名称可改变 Build Nubmer. 注意此时要去除$.
-修改echo "ro.product.model=$PRODUCT_MODEL", 把 $PRODUCT_MODEL 修改成其他的名称可改变 Model Nubmer. 注意此时要去除$
-修改echo "ro.build.version.release=2.1" , 中的2.1, 可改变显示的Firmware version, 这个不建议修改, 影响CTS。
Baseband Version 直接写在 modem.img 中,开机后modem 自动推送到AP 端,需要专门的tool 进行修改。(基带版本修改的话可能会对系统造成影响,建议不作修改。
基带版本信息是从Modem端读出来,然后记录到Android系统属性gsm.version.baseband中的,
如果必须要改,可以仅修改设置应用模块相关显示部分(修改为自定义的字符串信息),
但是这样会被其他第三方工具识别出真正信息来。)
Kernel Version 为linux 编译过程中产生, 按照标准的linux格式生成(compile.h), 最后版本信息写在文件/proc/version 下,所有的版本信息即在该文件的第一行,然后使用了一个正则表达式过滤了版本信息中一些字符,参考DeviceInfoSettings 下的getFormattedKernelVersion 方法