OpenHarmony系统属性定制与修改实战指南

📅 2026/8/4 6:09:13 👁️ 阅读次数 📝 编程学习
OpenHarmony系统属性定制与修改实战指南

1. OpenHarmony系统属性修改实战指南

在OpenHarmony设备开发过程中,我们经常需要定制设备的基础信息。最近我在移植OpenHarmony到某款开发板时,就遇到了需要修改设备厂家名称、版本号和设备名称的需求。这些系统属性不仅关系到设备标识,还会影响OTA升级、设备互联等核心功能。

2. 系统属性基础解析

2.1 关键系统属性说明

OpenHarmony的系统属性主要存储在以下几个关键位置:

  1. vendor目录:包含厂商定制信息
  2. system目录:基础系统配置
  3. product目录:产品级配置

这三个目录下的配置文件共同决定了设备最终呈现的系统属性。其中最重要的几个属性包括:

  • ro.product.manufacturer(设备厂家名称)
  • ro.product.model(设备型号)
  • ro.build.display.id(版本显示名称)
  • ro.build.version.incremental(版本号)

2.2 属性修改的影响范围

修改这些属性会产生多方面影响:

  1. 系统识别:影响设备在分布式组网中的标识
  2. 应用兼容性:某些应用会检查这些属性
  3. 升级机制:版本号直接影响OTA升级判断
  4. 日志分析:问题排查时依赖这些信息

3. 具体修改方法详解

3.1 修改设备厂家名称

厂家名称通常定义在vendor/{company}/{product}/config.json文件中:

{ "product_name": "my_product", "device_company": "MyCompany", ... }

同时需要检查以下文件:

  1. vendor/{company}/{product}/BUILD.gn
  2. vendor/{company}/{product}/hals/build.gn

修改后需要重新编译vendor镜像:

./build.sh --product-name my_product --build-target vendor_image

3.2 调整版本号信息

版本号主要在build目录下定义:

  1. build/rootfs/usr/etc/version(基础版本信息)
  2. build/tools/build_profile(构建配置)

关键参数示例:

ro.build.version.release=3.1 ro.build.version.incremental=20230815 ro.build.display.id=OpenHarmony 3.1.0

修改后需要重新生成system镜像:

./build.sh --product-name my_product --build-target system_image

3.3 自定义设备名称

设备名称主要通过以下方式定义:

  1. 在config.json中设置:
{ "product_name": "my_custom_device", ... }
  1. 在device/{company}/{board}/build.prop中添加:
ro.product.model=My Custom Device ro.product.name=my_custom_device

4. 完整修改流程示例

4.1 准备工作

  1. 获取OpenHarmony源码:
repo init -u https://gitee.com/openharmony/manifest.git -b master repo sync -c
  1. 安装编译工具链:
./build/prebuilts_download.sh

4.2 分步修改流程

  1. 修改厂家名称:
vim vendor/mycompany/myproduct/config.json # 修改device_company字段
  1. 调整版本号:
vim build/rootfs/usr/etc/version # 更新版本信息
  1. 自定义设备名称:
vim device/mycompany/myboard/build.prop # 修改ro.product.model等字段
  1. 全量编译:
./build.sh --product-name myproduct --ccache

5. 常见问题与解决方案

5.1 修改后属性未生效

可能原因:

  1. 修改了错误的配置文件
  2. 没有清理旧编译产物
  3. 镜像打包时配置未更新

解决方案:

  1. 确认修改的文件路径正确
  2. 执行clean操作:
rm -rf out
  1. 检查编译日志确认修改被应用

5.2 版本号格式问题

OpenHarmony对版本号有严格校验:

  1. 必须符合x.y.z格式
  2. 增量版本号应为日期格式
  3. 显示名称不能包含特殊字符

建议格式:

ro.build.version.release=3.1.0 ro.build.version.incremental=20230815 ro.build.display.id=OpenHarmony-3.1.0

5.3 多设备兼容问题

当需要支持多个设备时:

  1. 在product目录下创建不同配置
  2. 使用PRODUCT_MODEL变量区分设备
  3. 在编译时指定不同product-name

示例目录结构:

product/ ├── device1/ │ └── config.json └── device2/ └── config.json

6. 高级定制技巧

6.1 动态属性设置

可以通过init服务动态设置属性:

  1. 创建.rc文件:
on init setprop ro.product.manufacturer "MyCompany"
  1. 在vendor/etc/init/下放置该文件

6.2 属性继承机制

OpenHarmony的属性继承顺序:

  1. 系统默认值
  2. device目录配置
  3. product目录配置
  4. vendor目录配置

后加载的配置会覆盖前面的配置。

6.3 属性调试方法

查看当前所有属性:

hdc shell param list

监控属性变化:

hdc shell param watch ro.

7. 版本兼容性注意事项

不同OpenHarmony版本有差异:

版本配置文件位置关键变化
3.0vendor/目录初始版本
3.1新增product/目录支持多产品配置
3.2配置合并到system简化配置结构

建议在修改前确认目标版本的具体要求。

8. 最佳实践建议

  1. 版本管理:将配置变更纳入版本控制
  2. 变更记录:维护属性修改日志
  3. 测试验证:修改后全面测试以下功能:
    • 设备识别
    • 分布式能力
    • OTA升级
  4. 文档同步:更新相关技术文档

在实际项目中,我建议建立一个属性配置矩阵表,记录每个属性的:

  • 定义位置
  • 修改方法
  • 影响范围
  • 测试用例

这样可以确保修改时不会遗漏关键环节。