Skip to content

Ts支持 旧标题 > Language Server 启动失败警告以及SDK搜索方式建议 #130

@Vwings

Description

@Vwings

问题描述

在使用 ArkTS VSCode 扩展时,当未配置 SDK 路径的情况下,扩展会在所有项目(包括非 HarmonyOS类项目)中弹出 Language Server 启动失败警告。

Image

建议

基于上述问题,这里有一些改进的想法:

1. 自动项目类型识别

考虑让扩展能够自动识别项目类型,只在 HarmonyOS NEXT 或 OpenHarmony 项目中执行扩展逻辑,避免在非相关项目中弹出警告。

项目类型判断方式:

  1. 判断是否是 HarmonyOS类项目:检查项目根目录是否存在 oh-package.json5build-profile.json5 文件。如果不是HarmonyOS类项目,则默认不执行扩展逻辑。

  2. 判断是 HarmonyOS NEXT 还是 OpenHarmony:读取 build-profile.json5app.products[index].runtimeOS 字段

    • HarmonyOS:表示 HarmonyOS NEXT
    • OpenHarmony:表示 OpenHarmony

    如果 app.products 中存在多个 product,可以通过读取 DevEco Studio 缓存判断当前激活的是哪个 product:读取 .idea/.deveco/project.cache.jsonCommonInfo['current.select.product'],如果没有缓存,可以默认读取第一个

2. 自动 SDK 路径检测

考虑根据项目类型自动检测 SDK 路径,减少用户手动配置的工作量。

检测策略:

考虑到很多开发者都会安装 DevEco Studio,可以基于 DevEco Studio 的安装路径进行检测。这里假设为 ${DEVECO_HOME},表示 DevEco Studio 的安装目录。

DevEco Studio 安装路径获取方式

  • 手动配置:提供配置项让用户直接指定
  • 自动检测:例如在 Windows 上可以通过注册表获取

根据上一步获取到的项目类型,尝试自动检测 SDK 路径:

  • HarmonyOS NEXT:IDE 通常自带默认 SDK,位于 ${DEVECO_HOME}/sdk/default,其中包含 openharmonyhms
  • OpenHarmony:建议用户使用 DevEco Studio 配置好 SDK 根路径后,扩展进行读取。路径可在 DevEco Studio 的 设置 → OpenHarmony SDK 中配置。配置后 SDK 根路径会保存在本地文件中,例如 Windows 上在 C:\Users\<用户名>\AppData\Roaming\Huawei\DevEcoStudio<版本号>\options\other.xml 中的 oh.sdk.location 保存 SDK 根路径。DevEco Studio 版本号可从 ${DEVECO_HOME}/product-info.json 中获取。具体的API版本可以读取build-profile.json5中的app.products[index].compileSdkVersion获取, 这样可以最终组装出SDK路径

现在的 SDK 路径配置方式可以作为自动识别无法获取 SDK 路径时的备选方案,且优先级最高,确保用户的手动配置始终有效。

Metadata

Metadata

Assignees

Labels

questionFurther information is requested

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions