系统的内部版本号是固定的,想在版本号加入时间
1 Setting 应用层调用
2 framework层定义
获得ro.build.version.incremental属性为系统内部版本号,接下来找在哪里set这个属性
frameworks\base\core\java\android\os\Build.java
3
所有的系统属性都是在buildinfo.sh中
build/make/tools/buildinfo.sh
4 BUILD_NUMBER 属性定义
\build\make\core\version_defaults.mk
到这里就可以将系统内部版本号修改成任何形式了,可还是没找到在哪里将内部版本号定义死的地方
5 问题
这里绕了以下弯路,没有去找 BUILD_NUMBER 在哪里去赋值的,而是从系统编译文件找 BUILD_NUMBER 在哪里赋值的
5.1
\build\core\Makefile
可以看到BUILD_NUMBER 是通过 BUILD_NUMBER_FROM_FILE 属性获得的,之后找 BUILD_NUMBER_FROM_FILE 在哪里定义
5.2
BUILD_NUMBER_FROM_FILE 属性通过读取out文件下的build_number.txt 文件内容得到
\build\make\core\config.mk
5.3
找 build_number.txt 在哪里生成的
\build\make\core\main.mk
到这里心想不就矛盾了吗,BUILD_NUMBER 通过 build_number.txt 中的内容获得,但 build_number.txt 中的内容又是根据BUILD_NUMBER 属性生成的
其实是顺序没搞对,应该是从根目录的Makefile看起,而不是从 build/make 目录下看起
根目录下的Makefile文件
可以看到是先执行的main.mk 生成build_number.txt 文件,在通过这个文件获取内部系统的版本号
5.4 解决
没头绪了,我就在根目录搜索哪里对BUILD_NUMBER 属性赋值,其实没必要,在device 目录下搜索即可,不同的厂家可能位置不同,最后发现
\device\mediatek\版型名称\BoardConfigCommon.mk
其实在编译的时候也可以看到
注释掉\device\mediatek\版型名称\BoardConfigCommon.mk
文件中的 BUILD_NUMBER ,在\build\make\core\version_defaults.mk
文件中更改BUILD_NUMBER 定义,就可以更改成任何自己想要显示的内部系统版本号了
By the way
在ota包上也增加系统版本号名称
执行make otapackage 会运行到 \build\core\Makefile
中的ota模块
更改name即可