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);

 

接着 看 最上边 的解释

posted @ 2019-01-08 15:26  leo21sun  阅读(1137)  评论(0编辑  收藏  举报