android“设置”里的版本号
在文件 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");
当 android 系统跑起来 之后,会读取 /system/build.prop 文件里 对应的 字符串;
ro.build.display.id在文件build/tools/buildinfo.sh中:
echo "ro.build.display.id=$BUILD_DISPLAY_ID"
build/tools/buildinfo.sh 文件 会把 内容 写到 /system/build.prop 文件里,供 java文件 读取
而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文件。
总结:想要 修改 版本号,可以通过 两个 部分 修改1. 修改 java文件,这样是 直接写死;2.修改 编译系统;
============================
跟踪方法:
1、首先 打开 MID 在English 下,查看 Setting --> About tablet --> Build number
2、到 source/packages/apps/Settings/res/ 下,grep -Rn "Build number" ./ 找到 如下 信息
./values/strings.xml:1798: <string name="build_number">Build number</string>
3、然后再 grep -Rn "build_number" ./ 找到 如下 信息
./xml/device_info_settings.xml:117: <Preference android:key="build_number" ./xml/device_info_settings.xml:119: android:title="@string/build_number"
4、vim ./xml/device_info_settings.xml ,找到 如下 信息
<!-- Detailed build version --> <Preference android:key="build_number" //这个 key 指定的是 java文件里的 build_number style="?android:preferenceInformationStyle" android:title="@string/build_number" android:summary="@string/device_info_default"/>
解释:以上 title部分 是在 MID里 显示 出来的 标题名,而key 是 标题的内容,接下来 到 java文件里 找 对应 key的 build_number;
5、当前目录packages/apps/Settings/src/ 下, 执行 grep -Rn "build_number" ./ 找到 如下 信息
./com/android/settings/DeviceInfoSettings.java:57: private static final String KEY_BUILD_NUMBER = "build_number";
6、vim ./com/android/settings/DeviceInfoSettings.java ,通过 KEY_BUILD_NUMBER 找到 当前文件里的 如下 信息:
setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);
接着 看 最上边 的解释