ワンクリックで
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"
},