-
Notifications
You must be signed in to change notification settings - Fork 73
Description
问题描述
在使用 ArkTS VSCode 扩展时,当未配置 SDK 路径的情况下,扩展会在所有项目(包括非 HarmonyOS类项目)中弹出 Language Server 启动失败警告。
建议
基于上述问题,这里有一些改进的想法:
1. 自动项目类型识别
考虑让扩展能够自动识别项目类型,只在 HarmonyOS NEXT 或 OpenHarmony 项目中执行扩展逻辑,避免在非相关项目中弹出警告。
项目类型判断方式:
-
判断是否是 HarmonyOS类项目:检查项目根目录是否存在
oh-package.json5和build-profile.json5文件。如果不是HarmonyOS类项目,则默认不执行扩展逻辑。 -
判断是 HarmonyOS NEXT 还是 OpenHarmony:读取
build-profile.json5中app.products[index].runtimeOS字段HarmonyOS:表示 HarmonyOS NEXTOpenHarmony:表示 OpenHarmony
如果
app.products中存在多个 product,可以通过读取 DevEco Studio 缓存判断当前激活的是哪个 product:读取.idea/.deveco/project.cache.json中CommonInfo['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,其中包含openharmony和hms - 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 路径时的备选方案,且优先级最高,确保用户的手动配置始终有效。