天天看点

创建Android系统属性ro.

out\target\product\sdm845\system\build.prop

的生成是由make系统解析build/core/Makefile完成,Makefile中首先定义各种变量,其中就有

BUILD_DISPLAY_ID="$(BUILD_DISPLAY_ID)" \

Makefile中调用build/tools/buildinfo.sh执行脚本,并输出到build.prop。

流程

packages\apps\Settings\src\com\android\settings\deviceinfo\BuildNumberPreferenceController.java

通过 preference.setSummary(BidiFormatter.getInstance().unicodeWrap(Build.DISPLAY));

找到  frameworks\base\core\java\android\os\Build.java 中的    public static final String DISPLAY = getString("ro.build.display.id"); 读取system/build.prop中的 ro.build.display.id最终显示出来。

添加新的ro 属性 ro.build.software.version.id:

diff --git a/build/make/core/Makefile b/build/make/core/Makefile

index f670c32..6e04970 100644

--- a/build/make/core/Makefile

+++ b/build/make/core/Makefile

@@ -290,6 +290,21 @@ else

   BUILD_DISPLAY_ID := $(build_desc)

 endif

+ifeq ($(TARGET_BUILD_VARIANT),user)

+  # User builds should show:

+  # release build number or branch.buld_number non-release builds

+

+  # Dev. branches should have DISPLAY_BUILD_NUMBER set

+  ifeq (true,$(DISPLAY_BUILD_NUMBER))

+    BUILD_SOFTWARE_VERSION_ID := $(BUILD_ID).$(BUILD_NUMBER_FROM_FILE) $(BUILD_KEYS)

+  else

+    BUILD_SOFTWARE_VERSION_ID := $(BUILD_ID) $(BUILD_KEYS)

+  endif

+else

+  # Non-user builds should show detailed build information

+  BUILD_SOFTWARE_VERSION_ID := $(build_desc)

+endif

+

 # Accepts a whitespace separated list of product locales such as

 # (en_US en_AU en_GB...) and returns the first locale in the list with

 # underscores replaced with hyphens. In the example above, this will

@@ -340,6 +355,7 @@ endif

                        PRIVATE_BUILD_DESC="$(PRIVATE_BUILD_DESC)" \

                        BUILD_ID="$(BUILD_ID)" \

                        BUILD_DISPLAY_ID="$(BUILD_DISPLAY_ID)" \

+                       BUILD_SOFTWARE_VERSION_ID="$(BUILD_SOFTWARE_VERSION_ID)" \

                        DATE="$(DATE_FROM_FILE)" \

                        BUILD_NUMBER="$(BUILD_NUMBER_FROM_FILE)" \

                        BOARD_BUILD_SYSTEM_ROOT_IMAGE="$(BOARD_BUILD_SYSTEM_ROOT_IMAGE)" \

diff --git a/build/make/tools/buildinfo.sh b/build/make/tools/buildinfo.sh

index 5a54462..3dc08dd 100755

--- a/build/make/tools/buildinfo.sh

+++ b/build/make/tools/buildinfo.sh

@@ -5,6 +5,7 @@ echo "# autogenerated by buildinfo.sh"

 echo "ro.build.id=$BUILD_ID"

 echo "ro.build.display.id=$BUILD_DISPLAY_ID"

+echo "ro.build.software.version.id=222"

 echo "ro.build.version.incremental=$BUILD_NUMBER"

 echo "ro.build.version.sdk=$PLATFORM_SDK_VERSION"

 echo "ro.build.version.preview_sdk=$PLATFORM_PREVIEW_SDK_VERSION"

diff --git a/frameworks/base/core/java/android/os/Build.java b/frameworks/base/core/java/android/os/Build.java

index de25fd2..84d75b3 100644

--- a/frameworks/base/core/java/android/os/Build.java

+++ b/frameworks/base/core/java/android/os/Build.java

@@ -46,6 +46,9 @@ public class Build {

     public static final String DISPLAY = getString("ro.build.display.id");

+       

+       

+    public static final String SOFTWARE_VERSION = getString("ro.build.software.version.id");

     public static final String PRODUCT = getString("ro.product.name");

修改完后,全编make -j3,make update-api,烧录system.img即可。查看out\target\product\sdm845\system\build.prop  查看生成。

https://www.jianshu.com/p/a24c0f3f28a4

https://blog.csdn.net/wdyshowtime/article/details/79635439

https://www.cnblogs.com/bastard/archive/2013/02/28/2937014.html

关于系统属性的分析,参考文件

https://blog.csdn.net/w6028819321/article/details/28294061

http://blog.sina.com.cn/s/blog_63f31f3401017anh.html

在文件 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文件。