بنقرة واحدة
harmonyos-build
当需要构建鸿蒙应用项目时,使用此 Skill 执行构建流程。此 Skill 包含完整的构建命令、构建流程说明、构建失败处理流程。构建脚本会自动执行依赖安装、仓颉预编译、资源生成、编译、打包等步骤。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
当需要构建鸿蒙应用项目时,使用此 Skill 执行构建流程。此 Skill 包含完整的构建命令、构建流程说明、构建失败处理流程。构建脚本会自动执行依赖安装、仓颉预编译、资源生成、编译、打包等步骤。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
在鸿蒙应用(Cangjie)开发中,当需要使用 stdx 拓展库(如 crypto、encoding、net、log、actors 等),或在构建/链接阶段出现 stdx 相关错误时,使用此 Skill 获取/解压 stdx 包,并指导在 entry/cjpm.toml 中正确配置 bin-dependencies.path-option。
在进行仓颉工程或鸿蒙应用开发时的第一步,应该优先读取该SKILL,用来确定后续的开发步骤。
仓颉语言内置注解。当需要了解仓颉 SDK 提供的内置注解(@sourcePackage/@sourceFile/@sourceLine/@When/@FastNative/@Frozen/@Attribute/@Deprecated)的用途、语法和最优实践时,应使用此 Skill。
仓颉语言附录参考。当需要查阅仓颉语言的关键字列表、运算符优先级与结合性、运算符重载函数签名、运行时环境变量配置、包兼容性规则、TokenKind枚举类型时,应使用此 Skill。
仓颉标准库 Array 类型详细指南。当需要了解 Array 的构造、元素访问、切片、拼接、查找、排序、拷贝、反转、映射、扁平化等操作的完整 API 和用法时,应使用此 Skill。
仓颉标准库 ArrayList 类型详细指南。当需要了解 ArrayList 的构造、增删改查、容量管理、切片、排序、迭代、与 Array 互转等操作的完整 API 和用法时,应使用此 Skill。
| name | harmonyos-build |
| description | 当需要构建鸿蒙应用项目时,使用此 Skill 执行构建流程。此 Skill 包含完整的构建命令、构建流程说明、构建失败处理流程。构建脚本会自动执行依赖安装、仓颉预编译、资源生成、编译、打包等步骤。 |
执行鸿蒙应用项目的完整构建流程,包括依赖安装、编译、打包等步骤。
构建脚本位于 .opencode/skills/utils/scripts/build.ps1
⚠️ 重要:在 Windows 环境中,PowerShell 的 Tee-Object 创建的日志文件默认使用 UTF-16 LE 编码,而 Read 工具无法读取 UTF-16 编码的文件。
# ✅ 正确:使用 Bash + PowerShell 的 Get-Content 读取 UTF-16 文件
Bash(
command: 'powershell -NoProfile -Command "Get-Content -Path build-full.log -Encoding UTF8"',
timeout: 30000
)
# ❌ 错误:Read 工具无法读取 UTF-16 编码的文件
Read(file_path: "C:\\path\\to\\build-full.log") # 会报错 "Cannot read binary file"
如果执行构建后尝试用 Read 工具读取 build-full.log 时出现以下错误:
Error: Cannot read binary file: C:\path\to\build-full.log
则说明文件是 UTF-16 编码,必须使用 powershell Get-Content 方式读取。
# 1. 先复制脚本
cd "C:\czc\MyApplication10"
# Windows 环境优先用 PowerShell 复制(避免 cp 不存在 / 行为不一致)
powershell -NoProfile -Command "Copy-Item -Force '.\.opencode\skills\utils\scripts\build.ps1' '.\build.ps1'"
# 2. 在根目录执行构建,并把【完整 stdout+stderr】落到日志文件(避免 UI 截断)
# 注意:timeout=300000 只有 5 分钟,构建常常不够;建议至少 900000(15分钟) 或更大
# 分两步执行避免 PowerShell && 操作符问题
Bash(command: 'cd "C:\czc\MyApplication10"', timeout: 5000)
Bash(
command: 'powershell -NoProfile -ExecutionPolicy Bypass -Command "& { .\build.ps1 } *>&1 | Tee-Object -FilePath .\build-full.log"',
timeout: 900000
)
# 3. 无论是否出现截断提示,都用 Bash+PowerShell 读取日志文件来做分析(这才是"完整输出")
Bash(
command: 'powershell -NoProfile -Command "Get-Content -Path build-full.log -Encoding UTF8"',
timeout: 30000
)
build.ps1 脚本会自动执行以下步骤:
关键原则: 获得足够详细的错误信息是解决问题的前提。
⚠️ 重要提醒:AI 在处理构建报错时,必须严格按照以下优先级流程处理,不允许跳步或颠倒顺序:
- Step 1: 优先检查 Evolution.md 中的已知问题(使用
harmonyos-evolutionskill)- Step 2: 如果 Evolution.md 中没有命中,再使用
.opencode/skills/cangjie-kernel下的基础仓颉技能(如array、string、function等)结合报错信息调试和修复代码- Step 3: 如果基础技能仍无法解决,再使用
harmonyos-vec-retriever-guide进行 L1 RAG 代码片段/概念检索,辅助定位问题- Step 4: 如果 L1 仍无法解决,最后使用
harmonyos-doc-search-guide进行本地文档搜索(L3 文档检索)- 更新规则: 只有构建成功后才能将新问题添加到 Evolution.md
必须注意:每一次鸿蒙项目构建报错,都要严格按照本 Skill 中的步骤依次处理,不能跳过任意阶段。
⚠️ 强制要求:在分析报错信息之前,必须先确保已获得完整的构建输出。
执行流程:
Tee-Object 写入 build-full.log,并设置足够大的 timeout(建议 900000ms 起步)Bash + PowerShell Get-Content 读取 build-full.log(因为 Tee-Object 创建的是 UTF-16 编码,Read 工具无法读取)build-full.log 的内容分析报错(避免 UI 截断导致误判)示例执行模式:
# 始终将完整输出落盘(stdout+stderr),避免 UI 截断
# 分两步执行避免 PowerShell && 操作符问题
Bash(command: 'cd "C:\czc\MyApplication10"', timeout: 5000)
Bash(
command: 'powershell -NoProfile -ExecutionPolicy Bypass -Command "& { .\build.ps1 } *>&1 | Tee-Object -FilePath .\build-full.log"',
timeout: 900000
)
# 始终读取日志文件作为"完整输出"(使用 Bash+PowerShell 读取 UTF-16 文件)
Bash(
command: 'powershell -NoProfile -Command "Get-Content -Path build-full.log -Encoding UTF8"',
timeout: 30000
)
原则: 只有在获得完整 build.ps1 输出后,才能进入下一步分析。
在获得完整输出后,评估报错信息是否足够详细:
❌ 报错信息不足的情况(需要主动询问):
✅ 报错信息充足的情况:
undefined identifier、invalid binary operator)⚠️ 重要前提: 只有在已完整读取 build.ps1 输出log(包括截断文件)后,仍然发现信息不详细时,才建议使用 DevEco Studio。
主动要求用户提供完整报错:
已获取 build.ps1 的完整构建输出,但错误信息仍然不够详细,无法准确定位问题。
请在 DevEco Studio 中重新构建项目,然后将完整的错误信息复制给我。
DevEco Studio 会提供更详细的报错,包括:
- 具体的错误类型和描述
- 出错的代码位置(文件:行号)
- 宏展开后的代码(对于 ArkUI 组件问题)
- 相关的类型信息
请在 DevEco Studio 中构建后将完整报错贴出来。
🚨 AI 必须严格遵守:以下优先级流程是处理构建报错的标准流程,不可跳过或颠倒顺序!
严格按照以下优先级处理:
获得详细报错信息
↓
Step 1: 检查 Evolution.md (优先级最高) - 使用 harmonyos-evolution skill
↓
├─ 找到相同问题 → 应用已验证的解决方案 → 重新构建
│
└─ 未找到/无法解决 → 继续 Step 2
↓
Step 2: 使用 .opencode/skills/cangjie-kernel 中的基础仓颉技能调试代码
↓
├─ 通过代码修改解决问题 → 重新构建 → 构建成功则更新 Evolution.md
│
└─ 仍无法解决/缺乏思路 → 继续 Step 3
↓
Step 3: L1 混合搜索 - 使用 harmonyos-vec-retriever-guide这个skill
↓
├─ 找到解决方案 → 修复代码 → 重新构建 → 构建成功则更新 Evolution.md
│
└─ 仍无法解决/缺乏思路 → 继续 Step 4
↓
Step 4: L3 本地文档搜索 - 使用 harmonyos-doc-search-guide这个skill
↓
├─ 找到解决方案 → 修复代码 → 重新构建 → 构建成功则更新 Evolution.md
│
│ ↓
│ 构建失败则重新判断报错信息是否充足,重新修正方案
│
└─ 未找到 → 明确告知"该功能可能不支持"
Step 1 - 检查 Evolution.md 的执行要点:
harmonyos-evolution skill 读取 Evolution.md 文件Step 2 - 使用 .opencode/skills/ 调试的执行要点:
build-full.log 中的报错信息,优先调用 .opencode/skills/cangjie-kernel 下的基础仓颉技能(如 array、string、function、std 等),分析类型错误、语法错误和标准库用法Step 3 - L1 搜索的执行要点:
harmonyos-vec-retriever-guide 指导使用的ask_cangjie.py脚本查询进行 L1 RAG 代码片段/概念检索,辅助定位问题harmonyos-evolution skill)Step 4 - L3 搜索的执行要点:
.opencode/skills/ 调试都无法解决问题后才进行harmonyos-doc-search-guide skill 根据错误类型选择合适的搜索路径harmonyos-evolution skill)示例:
用户报错: error: undeclared identifier 'toUInt32'
↓
Step 1: 检查 Evolution.md(使用 harmonyos-evolution skill)
✓ 搜索关键词: "toUInt32", "类型转换", "未定义标识符"
✓ 找到记录 #14: 类型转换方法不存在
✓ 解决方案: 使用 UInt32(e) 替代 ch.toUInt32()
✓ 直接应用修复,跳过 L3 搜索
↓
重新构建 → ✅ BUILD SUCCESSFUL
✓ 构建成功,方案验证有效
新问题处理示例(含失败情况):
用户报错: error: invalid binary operator '==' on type 'UInt8' and 'Rune'
↓
Step 1: 检查 Evolution.md(使用 harmonyos-evolution skill)
✗ 搜索关键词 "UInt8", "Rune", "类型不匹配" - 未找到匹配记录
↓
Step 2: L3 本地文档搜索(使用 harmonyos-doc-search-guide skill)
✓ 搜索结果: String下标返回UInt8,不能与Rune直接比较
✓ 解决方案: 使用ASCII码值比较 (ch == 45u8)
↓
修复代码 → 重新构建
├─ 构建 ✅ 成功 → 将问题添加到 Evolution.md(使用 harmonyos-evolution skill)
└─ 构建 ❌ 失败 → 方案错误,不能记录,重新寻找解决方案
BUILD SUCCESSFUL 表示构建成功⚠️ 重要原则: 只有在构建成功后才能更新 Evolution.md
每次构建成功后,必须执行以下操作:
harmonyos-evolution skill 将本次开发过程中遇到的重难点整理成几点Evolution.md 文件(即 .opencode/skills/utils/Evolution.md)重要: Evolution.md 位于 skills 目录中,这样当技能迁移到其他项目时,历史问题记录也会一起迁移。
harmonyos-requirement-analysis skill.opencode/skills/cangjie-kernel 中的仓颉语言 skillsharmonyos-vec-retriever-guide skillharmonyos-doc-search-guide skillharmonyos-evolution skill 记录和解决问题正确执行 build.ps1 的完整流程:
复制脚本到项目根目录(必须执行):
copy .\.opencode\skills\utils\scripts\build.ps1 .\build.ps1
在项目根目录执行构建:
cd "C:\czc\MyApplication10" # 确保在项目根目录
.\build.ps1
获取完整的构建输出(关键步骤):
timeout(300000 只有 5 分钟,常常不够;建议 900000 起步)... +N lines / 输出被截断),必须把 stdout/stderr 通过 Tee-Object 写入日志文件Bash + PowerShell Get-Content 读到的日志内容(这才是完整输出,因为 Tee-Object 创建的是 UTF-16 编码,Read 工具无法读取)错误示例:
scripts/ 目录下执行构建(❌ 错误)正确示例:
# 1. 先复制脚本
cd "C:\czc\MyApplication10"
# Windows 环境优先用 PowerShell 复制(避免 cp 不存在 / 行为不一致)
powershell -NoProfile -Command "Copy-Item -Force '.\.opencode\skills\utils\scripts\build.ps1' '.\build.ps1'"
# 2. 在根目录执行构建,并把【完整 stdout+stderr】落到日志文件(避免 UI 截断)
# 注意:timeout=300000 只有 5 分钟,构建常常不够;建议至少 900000(15分钟) 或更大
# 分两步执行避免 PowerShell && 操作符问题
Bash(command: 'cd "C:\czc\MyApplication10"', timeout: 5000)
Bash(
command: 'powershell -NoProfile -ExecutionPolicy Bypass -Command "& { .\build.ps1 } *>&1 | Tee-Object -FilePath .\build-full.log"',
timeout: 900000
)
# 3. 无论是否出现截断提示,都用 Bash+PowerShell 读取日志文件来做分析(这才是"完整输出")
Bash(
command: 'powershell -NoProfile -Command "Get-Content -Path build-full.log -Encoding UTF8"',
timeout: 30000
)
重要!兼容性配置:务必将./entry/build-profile.json5 文件中的""buildOption"字段配置正确,确保包含对鸿蒙构建环境的兼容性设置,严格按照如下所示配置:
"buildOption": {
"cangjieOptions": {
"abiFilters": ["arm64-v8a", "arm64-v8a", "x86_64"],
"path": "./cjpm.toml"
},