以下是为你整理后的 Markdown 格式 文档,按逻辑分层、优化排版,并保留所有核心信息:
OpenHarmony 系统属性(设备名称)修改指南
1. OpenHarmony 系统属性介绍
1.1 系统参数组件(syspara)
init 启动恢复子系统 中的 syspara 系统参数组件 负责提供获取与设置操作系统相关的系统属性。
相关文档:启动恢复子系统
1.2 系统属性配置文件位置
系统属性核心定义在 ohos.para 配置文件中,具体路径如下:
- 开发板部署路径 :
/system/etc/param/ohos.para - 源码路径 :
/base/startup/init/services/etc/param/ohos.para - 仓库公开地址:https://gitee.com/openharmony/startup_init/blob/master/services/etc/param/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 设备名称读取逻辑
-
Settings 源码入口 :
DeviceName.ets中通过AboutDeviceModel.getSystemName()获取设备名称:typescript@State deviceName: string = AboutDeviceModel.getSystemName(); TextInput({ text: this.deviceName }) -
默认值兜底逻辑 :
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_NAMEDEVICE_NAME = 'OpenHarmony 2.0 Canary'
-
settingsData 初始化逻辑 :
SettingsDBHelper.ets中读取deviceInfo.marketName作为初始值:typescriptlet 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); -
核心属性关联 :
deviceInfo.marketName最终读取的是系统属性const.product.name:-
源码关联位置:
./startup/init/interfaces/innerkits/syspara/parameter.c:137creturn GetProperty("const.product.name", &marketName); -
配置文件位置:
./startup/init/services/etc/param/ohos.para:22const.product.name="OpenHarmony 3.2"
说明:修改
const.product.name的值即可修改设备默认名称,开发板中修改./etc/param/ohos.para后重启生效。 -
-
蓝牙设备名称联动 :蓝牙模块会同步读取
getSystemName()的值,确保设备名称统一:typescriptregisterBluetoothStateObserver(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未正确安装或未被系统识别;- 开发板系统挂载未设置为可读写模式;
- 修改后未重启系统,配置未加载。
总结
- OpenHarmony 系统属性核心配置文件为
ohos.para,可通过源码修改(永久)或开发板直接修改(临时)两种方式调整; - 设备名称的核心关联属性是
const.product.name,修改该值可同步生效到"关于设备"和"蓝牙名称"; - 名称不生效时优先排查属性覆盖、settingsData 安装、系统挂载权限三类问题。