HarmonyOS鸿蒙Next中runtimeOS为OpenHarmony的项目module.json5中deviceTypes的枚举值没有phone
HarmonyOS鸿蒙Next中runtimeOS为OpenHarmony的项目module.json5中deviceTypes的枚举值没有phone 【问题描述】:runtimeOS为OpenHarmony的项目module.json5中deviceTypes的枚举值没有phone,但是我新建了一个项目,是正常的,有phone。
【问题现象】:这个问题该怎么办?


【版本信息】:



【复现代码】:
【尝试解决方案】:
更多关于HarmonyOS鸿蒙Next中runtimeOS为OpenHarmony的项目module.json5中deviceTypes的枚举值没有phone的实战教程也可以访问 https://www.itying.com/category-93-b0.html
开发者您好,创建OpenHarmony工程需要先创建HarmonyOS工程,所以创建HarmonyOS工程module.json5中deviceTypes的枚举值是包含phone,后续需要您把phone切换为OpenHarmony支持的default类型。
您可以参考如下创建OpenHarmony工程的步骤:
创建OpenHarmony工程进行应用开发,请按照以下步骤操作。
-
在完成创建HarmonyOS工程后,根据如下操作修改工程级build-profile.json5文件中相关字段: a. 在工程级build-profile.json5文件添加compileSdkVersion字段。 b.将compatibleSdkVersion、compileSdkVersion、targetSdkVersion(若有)字段赋值为数值类型。 c.将runtimeOS从"HarmonyOS"修改为**“OpenHarmony”**。
"products": [ { "name": "default", "signingConfig": "default", "compileSdkVersion": 20, //指定OpenHarmony应用编译时的版本,当前以API 20为例 "targetSdkVersion": 20, //指定OpenHarmony应用运行所需的目标SDK版本,当前以API 20为例 "compatibleSdkVersion": 20, //指定OpenHarmony应用兼容的最低版本,当前以API 20为例 "runtimeOS": "OpenHarmony", } ],- 单击Sync Now进行同步。在Sync Check弹窗中点击Yes,同意将module.json5/config.json文件中的phone切换为OpenHarmony支持的default类型,并删除在OpenHarmony不适用的其他设备类型,同步成功无其他报错则工程创建完成。 详细参考连接:创建OpenHarmony工程。
更多关于HarmonyOS鸿蒙Next中runtimeOS为OpenHarmony的项目module.json5中deviceTypes的枚举值没有phone的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我这个是上架审核出来的问题,一开始我写的是default,审核给了我建议,文档中说不能写default,要写phone,我是写phone的时候才发现的这个问题。我现在是根据你这个文档,重新创建工程,将原有的代码移植过去解决吗?https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/module-configuration-file#devicetypes%E6%A0%87%E7%AD%BE
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html
开发者您好,将module.json5中deviceTypes设置为"tablet", “tv”, “wearable”, “car”, “2in1” 其中之一即可。我看您步骤一已经更改好了,由于default不支持发布上架,所以将module.json5中deviceTypes设置为"tablet", “tv”, “wearable”, “car”, “2in1” 其中之一就行了。
我的项目是根据这个文档开发的:https://gitcode.com/openharmony/applications_app_samples/tree/master/code/DocsSample/NetWork_Kit/NetWorkKit_NetManager/VPNControl_Case
这个上面的项目是Openharmony的,我的诉求是:我开发的 VPN 应用可以在 手机和平板上运行,可以上架成功,我需要改成HarmonyOS 吗?改成 HarmonyOS 改动的东西都吗? 是否需要重新开发底层?
在HarmonyOS鸿蒙Next中,runtimeOS为OpenHarmony的项目,module.json5中的deviceTypes枚举值不包含phone。这是因为鸿蒙Next的OpenHarmony运行时主要面向物联网设备,如智能家居、穿戴设备等,而非传统手机。deviceTypes的枚举值包括default、tablet、tv、wearable、car等,但未包含phone。
在HarmonyOS Next中,当项目的runtimeOS配置为OpenHarmony时,module.json5中deviceTypes的枚举值列表确实可能不包含phone。这是因为OpenHarmony运行时环境与HarmonyOS(通常指搭载在华为手机等设备上的发行版)在设备类型支持上存在差异。
根据你的截图和描述,问题核心在于项目模板或SDK的匹配。新建项目正常,说明你的开发环境支持phone设备类型。当前项目缺失phone选项,最可能的原因是项目创建时选择的模板或配置与当前SDK/工具链版本不完全兼容,或者项目本身的compileSdkVersion和runtimeOS配置组合不支持phone。
解决方案:
-
检查并修改
module.json5中的compileSdkVersion:- 打开项目的
module.json5文件。 - 找到
"compileSdkVersion"字段。对于runtimeOS为OpenHarmony且需要支持phone的场景,建议将其值设置为与你的DevEco Studio版本匹配的最新API版本(例如12或更高,具体取决于你的SDK安装)。例如:"compileSdkVersion": 12, "runtimeOS": "OpenHarmony" - 保存文件,DevEco Studio会重新索引项目,
deviceTypes的枚举值列表通常会更新,phone选项应该会出现。
- 打开项目的
-
验证SDK安装:
- 在DevEco Studio中,进入
File > Settings > SDK > OpenHarmony SDK。 - 确保已安装最新版本的SDK(如
OpenHarmony 5.0.0 Release或更高),并且Compile API Version与项目中配置的compileSdkVersion一致。
- 在DevEco Studio中,进入
-
同步项目配置:
- 在项目根目录的
build-profile.json5中,确认sdkPath指向正确的OpenHarmony SDK路径。 - 尝试执行
File > Sync and Refresh Project或Build > Clean Project,然后重新打开module.json5查看。
- 在项目根目录的
如果以上步骤后phone仍未出现,请直接手动在deviceTypes数组中添加"phone":
"deviceTypes": [
"phone"
]
只要你的SDK支持该设备类型,手动添加是有效的,不会影响编译和运行。
总结:该问题通常由项目配置的compileSdkVersion与SDK版本不匹配导致。调整compileSdkVersion为更高版本(匹配已安装的SDK)是首选解决方案。

