创建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 {
/** A build ID string meant for displaying to the user */
public static final String DISPLAY = getString("ro.build.display.id");
+
+
+ public static final String SOFTWARE_VERSION = getString("ro.build.software.version.id");
/** The name of the overall product. */
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文件
----------------------------------------------------------一下是我自己添加的----------------------------------------
1.在zprojects/项目名/env_xxx.sh添加属性值 export OEM_HARDWARE_VERSION="HL"
2.在在zprojects/项目名/build/make/tools/buildinfo.sh添加属性并赋值echo "ro.boot.hardware.revision=$OEM_HARDWARE_VERSION"
3.在build/make/core/Makefile添加OEM_HARDWARE_VERSION="$(OEM_HARDWARE_VERSION)" \
具体可以参考项目下已有的属性,添加完编译查看out/target/项目名/system/build.prop属性是有添加成功
————————————————
版权声明:本文为CSDN博主「木叶风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37207639/article/details/106279927
创建Android系统属性ro.相关推荐
- Android 系统(94)---android系统属性(ro.com.google.clientidbase.ms)随卡适配
android系统属性(ro.com.google.clientidbase.ms)随卡适配 客户要求 客户提了一个小需求,就是要将系统属性(ro.com.google.clientidbase.ms ...
- android开发笔记之系统属性(ro.com.google.clientidbase.ms)随卡适配
客户要求 客户提了一个小需求,就是要将系统属性(ro.com.google.clientidbase.ms)随卡适配. 具体要求是: 如果插中国的卡,系统属性ro.com.google.clienti ...
- 使用Java代码在应用层获取Android系统属性
之前使用Native代码的property_get()/property_set()来获取Android系统属性,现在需要改写到Java上面, 但是System.getProperty() / Sys ...
- Android 系统属性读取和设置详解
Android 系统属性读取和设置详解 一.在adb中进行属性读取和设置 1.Settings Provider设置和读取 获取 设置 2.SystemProperties属性读取和设置 二.Andr ...
- 安卓系统属性 ro、persist、net
Framework中系统属性ro.persist.net 1.ro开头的系统属性 如果属性名称以"ro."开头,那么这个属性被视为只读属性.一旦设置,属性值不能改变. 2.pers ...
- Android 系统属性(SystemProperties)介绍
我们在开发过程中有时需要使用系统属性,例如获取系统软件版本,获取设备名名称等:有时也需要设置自己的属性,为了全面的介绍系统属性,本文将基于Android 10(Q)来介绍Android的属性使用,围绕 ...
- android系统属性获取及设置
系统属性获取及设置中的设置值 data/data/com.android.providers.settings/databases/settings.db 1.系统属性获取及设置 android.os ...
- Java反射获取Android系统属性值
目录 反射定义 为何需要反射 反射方法Method getDeclaredMethod方法 getMethod方法 参数解释 invoke方法 Android 反射应用 反射定义 "反射&q ...
- android中prop配置参数名,21.Android系统属性build.prop文件(笔记)
一.概念 在Android设备shell终端可以看到/system目录下的build.prop文件,Android的build.prop文件是在Android编译时刻收集的各种property,编译完 ...
最新文章
- 结构体成员的引用方法
- 溃不成军:科通芯城一度再跌近30% 股价三天腰斩
- Python基础(1)
- es获取最大时间的记录_大屏幕大智慧,腕上私教+生理周期,荣耀手表ES评测
- 无法找到脚本库错误解决过程
- java 初始化duration_java11教程--类Duration用法
- 基于语音识别的微博签到系统
- 瑞银:将京东目标价上调至110美元 维持“买入”评级
- Python安装geopandas库
- 测试的第二重境界:站在Bug之上
- vue中引入高德地图获取坐标
- ORCA(Optimal Reciprocal Collision Avoidance)笔记
- VMware ESXI虚拟机修改MAC地址的方法
- 网络故障排查的思路和方法
- 程序开发里面的profile 是什么意思? (用户配置文件)
- python简单的青蛙旅行小游戏
- 第三十五天:XSS跨站反射存储DOM盲打劫持
- JDBC 基础、CRUD、分页 第一节
- 干支纪年法简便算法_天干地支的简单算法
- 2015 android 5.0 手机排行榜,智能手机排行榜2015前十名 2015智能手机排行榜
热门文章
- Java获取屏幕真实分辨率
- MPI并行程序的调试技巧
- 两个线程调用同一个对象的同一个方法
- 基于windows桌面开发的白板书写软件
- 【渝粤题库】陕西师范大学163205 旅游市场分析与预测
- oracle数据库sga用途_Oracle SGA详解
- PCB设计中过孔的概念和分类
- 转行软件测试有学历要求吗?低于大专是真的没出路吗?
- OSChina 周日乱弹 ——收购KFC后,想刷碗就刷碗
- 报错:“[Thread-0] INFO CoreNLP - CoreNLP Server is shutting down.”