HarmonyOS鸿蒙Next中runtimeOS为OpenHarmony的项目module.json5中deviceTypes的枚举值没有phone

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

【问题现象】:这个问题该怎么办?

cke_6103.png

cke_1877.png

【版本信息】:

cke_5106.png

cke_2523.png

cke_3090.png

【复现代码】:

【尝试解决方案】:


更多关于HarmonyOS鸿蒙Next中runtimeOS为OpenHarmony的项目module.json5中deviceTypes的枚举值没有phone的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

开发者您好,创建OpenHarmony工程需要先创建HarmonyOS工程,所以创建HarmonyOS工程module.json5中deviceTypes的枚举值是包含phone,后续需要您把phone切换为OpenHarmony支持的default类型。

您可以参考如下创建OpenHarmony工程的步骤:

创建OpenHarmony工程进行应用开发,请按照以下步骤操作。

  1. 在完成创建HarmonyOS工程后,根据如下操作修改工程级build-profile.json5文件中相关字段: a. 在工程级build-profile.json5文件添加compileSdkVersion字段。 b.将compatibleSdkVersioncompileSdkVersiontargetSdkVersion(若有)字段赋值为数值类型。 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",
      }
    ],
    
    1. 单击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.json5deviceTypes的枚举值列表确实可能不包含phone。这是因为OpenHarmony运行时环境与HarmonyOS(通常指搭载在华为手机等设备上的发行版)在设备类型支持上存在差异。

根据你的截图和描述,问题核心在于项目模板或SDK的匹配。新建项目正常,说明你的开发环境支持phone设备类型。当前项目缺失phone选项,最可能的原因是项目创建时选择的模板或配置与当前SDK/工具链版本不完全兼容,或者项目本身的compileSdkVersionruntimeOS配置组合不支持phone

解决方案:

  1. 检查并修改module.json5中的compileSdkVersion

    • 打开项目的module.json5文件。
    • 找到"compileSdkVersion"字段。对于runtimeOSOpenHarmony且需要支持phone的场景,建议将其值设置为与你的DevEco Studio版本匹配的最新API版本(例如12或更高,具体取决于你的SDK安装)。例如:
      "compileSdkVersion": 12,
      "runtimeOS": "OpenHarmony"
      
    • 保存文件,DevEco Studio会重新索引项目,deviceTypes的枚举值列表通常会更新,phone选项应该会出现。
  2. 验证SDK安装

    • 在DevEco Studio中,进入File > Settings > SDK > OpenHarmony SDK
    • 确保已安装最新版本的SDK(如OpenHarmony 5.0.0 Release或更高),并且Compile API Version与项目中配置的compileSdkVersion一致。
  3. 同步项目配置

    • 在项目根目录的build-profile.json5中,确认sdkPath指向正确的OpenHarmony SDK路径。
    • 尝试执行File > Sync and Refresh ProjectBuild > Clean Project,然后重新打开module.json5查看。

如果以上步骤后phone仍未出现,请直接手动在deviceTypes数组中添加"phone"

"deviceTypes": [
  "phone"
]

只要你的SDK支持该设备类型,手动添加是有效的,不会影响编译和运行。

总结:该问题通常由项目配置的compileSdkVersion与SDK版本不匹配导致。调整compileSdkVersion为更高版本(匹配已安装的SDK)是首选解决方案。

回到顶部