OpenHarmony 修改设备厂家名称 、版本号 、设备名称等系统属性

以下是为你整理后的 Markdown 格式 文档,按逻辑分层、优化排版,并保留所有核心信息:


OpenHarmony 系统属性(设备名称)修改指南

1. OpenHarmony 系统属性介绍

1.1 系统参数组件(syspara)

init 启动恢复子系统 中的 syspara 系统参数组件 负责提供获取与设置操作系统相关的系统属性

相关文档:启动恢复子系统

1.2 系统属性配置文件位置

系统属性核心定义在 ohos.para 配置文件中,具体路径如下:

说明:标准系统通过 ohos_prebuilt_para 模版将 ohos.para 安装到开发板的 /system/etc/param/ 目录下。

2. 如何修改 OpenHarmony 系统属性

2.1 源码修改(永久生效)

直接修改源码中的 ohos.para 文件:

复制代码
/base/startup/init/services/etc/param/ohos.para

修改后重新编译并烧录固件即可生效。

2.2 开发板直接修改(临时生效)

通过 hdc 工具直接修改开发板上的配置文件,步骤如下:

bash 复制代码
# 1. 将开发板的 ohos.para 提取到电脑指定路径
hdc file recv ./system/etc/param/ohos.para C:\Users\jjh\Desktop

# 2. 将开发板系统挂载为可读写模式
hdc shell mount -o remount,rw /

# 3. 将修改后的 ohos.para 传输回开发板
hdc file send C:\Users\jjh\Desktop\ohos.para /system/etc/param/

# 4. 重启开发板生效
hdc shell reboot

修改效果示例:


3. 设备名称修改专项说明

3.1 需求场景

修改设备名称,用于设备名称展示XTS 送测等场景(设置-关于设备-设备名称/设置-蓝牙设备名称)。

3.2 设备名称读取逻辑

  1. Settings 源码入口DeviceName.ets 中通过 AboutDeviceModel.getSystemName() 获取设备名称:

    typescript 复制代码
    @State deviceName: string = AboutDeviceModel.getSystemName();
    TextInput({ text: this.deviceName })
  2. 默认值兜底逻辑getSystemName() 优先从 settingsData 获取,获取失败则显示默认值 DEVICE_NAME = 'OpenHarmony 2.0 Canary'

    typescript 复制代码
    /**
     * Get system name from SettingsData
     */
    @Log
    @CatchError(ConfigData.DEVICE_NAME)
    getSystemName() {
      let context = GlobalContext.getContext().getObject(GlobalContext.globalKeySettingsAbilityContext) as common.Context;
      let deviceName = settings.getValueSync(context, ConfigData.SETTINGSDATA_DEVICE_NAME, ConfigData.DEVICE_NAME);
      return deviceName;
    }

    其中:

    • SETTINGSDATA_DEVICE_NAME = settings.general.DEVICE_NAME
    • DEVICE_NAME = 'OpenHarmony 2.0 Canary'
  3. settingsData 初始化逻辑SettingsDBHelper.ets 中读取 deviceInfo.marketName 作为初始值:

    typescript 复制代码
    let tableName: string = this.getTableName(TableType.SETTINGS, this.DEFAULT_USER_ID);
    // 初始化设备名称
    let deviceName: string = deviceInfo.marketName;
    if (deviceName.startsWith('"') && deviceName.endsWith('"')) {
      deviceName = JSON.parse(deviceName);
    }
    await this.loadTableSettings(settings.general.DEVICE_NAME, deviceName, tableName);
  4. 核心属性关联deviceInfo.marketName 最终读取的是系统属性 const.product.name

    • 源码关联位置:./startup/init/interfaces/innerkits/syspara/parameter.c:137

      c 复制代码
      return GetProperty("const.product.name", &marketName);
    • 配置文件位置:./startup/init/services/etc/param/ohos.para:22

      复制代码
      const.product.name="OpenHarmony 3.2"

    说明:修改 const.product.name 的值即可修改设备默认名称,开发板中修改 ./etc/param/ohos.para 后重启生效。

  5. 蓝牙设备名称联动 :蓝牙模块会同步读取 getSystemName() 的值,确保设备名称统一:

    typescript 复制代码
    registerBluetoothStateObserver(callback: (data: boolean) => void) {
      LogUtil.debug(`${this.TAG} subscribeStateChange call`)
      bluetooth.on('stateChange', (data) => {
        LogUtil.debug(`${this.TAG} subscribeStateChange->stateChange data:${data}`);
        switch (data) {
          case bluetooth.BluetoothState.STATE_ON:
            let deviceName: string = this.getSystemName()
            let curDeviceName: string = bluetooth.getLocalName()
            LogUtil.debug(this.TAG + "subscribeStateChange get deviceName: " + deviceName + " ; curDeviceName: " + curDeviceName)
            if (deviceName !== curDeviceName) {
              LogUtil.debug(this.TAG + "subscribeStateChange deviceName != curDeviceName")
              bluetooth.setLocalName(deviceName)
            }
            bluetooth.setBluetoothScanMode(4, 0)
            LogUtil.debug(`${this.TAG} subscribeStateChange->stateChange return: true`)
            callback && callback(true)
            break;
          case bluetooth.BluetoothState.STATE_OFF:
            LogUtil.debug(`${this.TAG} subscribeStateChange->stateChange return: false`)
            callback && callback(false)
            break;
          default:
            break;
        }
      })
    }

3.3 常见问题排查

若设备名称修改后不生效,可排查以下问题:

  • const.product.name 属性配置被其他逻辑覆盖;
  • settingsData 未正确安装或未被系统识别;
  • 开发板系统挂载未设置为可读写模式;
  • 修改后未重启系统,配置未加载。

总结

  1. OpenHarmony 系统属性核心配置文件为 ohos.para,可通过源码修改(永久)或开发板直接修改(临时)两种方式调整;
  2. 设备名称的核心关联属性是 const.product.name,修改该值可同步生效到"关于设备"和"蓝牙名称";
  3. 名称不生效时优先排查属性覆盖、settingsData 安装、系统挂载权限三类问题。
相关推荐
Easonmax2 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-linear-gradient — 绚丽的渐变效果实现
react native·react.js·harmonyos
国医中兴2 小时前
Flutter 三方库 schedules 的鸿蒙化适配指南 - 玩转复杂时间调度算法、构建高效的鸿蒙办公协作系统实战
flutter·harmonyos·鸿蒙·openharmony
大雷神3 小时前
HarmonyOS APP<玩转React>开源教程九:首页 Tab 导航实现
harmonyos
Justin在掘金16 小时前
鸿蒙端 SDK 创建、单元测试、发布与依赖完整指南
harmonyos
小雨青年18 小时前
鸿蒙 HarmonyOS 6 | 混合开发 (01) Web 组件内核——ArkWeb 加载机制与 Cookie 管理
前端·华为·harmonyos
lqj_本人18 小时前
openYuanrong Agent 方向真实案例验证
华为
Swift社区21 小时前
ArkUI 的状态管理,其实很多人都用错了
架构·harmonyos
中杯可乐多加冰1 天前
Serverless 时代的内核革命——华为 openYuanrong 深度解析 异构多级缓存与 D2D 高速传输实测
缓存·华为·开源·serverless·openyuanrong
互联网散修1 天前
零基础鸿蒙应用开发第四节:运算符与运算规则
华为·harmonyos