鸿蒙 PC Markdown 编辑器构建交付:Debug、Release HAP 与哈希校验
鸿蒙 PC Markdown 编辑器构建交付Debug、Release HAP 与哈希校验应用在 DevEco中能运行不等于已经形成可重复交付。OhMarkdown同时包含 ArkTS原生代码和 Vite Web内核构建顺序必须先生成离线 HTML再由 Hvigor打入 HAPDebug、Release、测试构建、签名状态、产物大小和哈希都要分别记录。本文说明鸿蒙 PC项目的双构建链、API 24配置、单文件资源、Release unsigned HAP和 SHA-256校验。代码位于 https://gitcode.com/VON-/codex_md_oh对应提交3a9146e。两套工具链组成一个产物Web层TypeScript、CodeMirror、markdown-it、DOMPurify和 CSS经 Vite生成entry/src/main/resources/rawfile/editor/index.html原生层ArkTS、资源、module.json5和 rawfile经 Hvigor生成 HAP。若只运行 assembleHap而没有先构建 Web包里可能是旧 HTML若只运行 Vite得到的也不是鸿蒙应用。构建脚本把顺序固化避免依赖开发者记忆。Web 构建输出到原生资源exportdefaultdefineConfig({base:./,plugins:[viteSingleFile()],build:{outDir:../entry/src/main/resources/rawfile/editor,emptyOutDir:true,sourcemap:false,target:es2020,chunkSizeWarningLimit:800}});base: ./让资源相对本地页面singlefile把 JS/CSS内联ArkWeb不需要外部文件或网络emptyOutDir删除旧产物避免废弃 chunk残留Release不带 sourcemap减少包体和源码暴露。构建目标 ES2020与当前 ArkWeb能力匹配升级目标前需在 API 24设备验证。build-editor 作为前置步骤Debug与 Release脚本都先执行$(dirname--$0)/build-editor.shbuild-editor进入 web-editor并运行 npm buildTypeScript--noEmit先检查类型再 Vite写 rawfile。任何失败因set -eu中止不会继续打包含旧资源的 HAP。生产测试还读取最终 index.html断言没有外部 script和 stylesheet。构建成功与离线约束同时进入门禁。DevEco 环境显式配置DEVECO_HOME${DEVECO_HOME:-/Applications/DevEco-Studio.app/Contents}exportJAVA_HOME${JAVA_HOME:-$DEVECO_HOME/jbr/Contents/Home}exportDEVECO_SDK_HOME${DEVECO_SDK_HOME:-$DEVECO_HOME/sdk}默认使用 DevEco附带 JBR和 SDK减少系统 Java差异CI或其他机器可以覆盖。脚本不把个人 SDK路径写进仓库 local.properties。构建日志要记录 DevEco、Hvigor和 SDK版本。仅记录“macOS”不足以复现工具链。产品与 SDK 配置{ name: default, signingConfig: default, targetSdkVersion: 6.1.1(24), compatibleSdkVersion: 6.1.1(24), runtimeOS: HarmonyOS, buildOption: { strictMode: { caseSensitiveCheck: true, useNormalizedOHMUrl: true } } }目标和兼容均 API 24。严格大小写检查避免 macOS文件系统上可用、目标环境因路径大小写失败规范 OHM URL减少模块引用差异。buildModeSet明确 debug和 release。entry目标还包含 ohosTest主模块和测试模块使用同一产品基线。Debug 构建exec$DEVECO_HOME/tools/hvigor/bin/hvigorw\assembleHap\--modemodule\-pproductdefault\-pmoduleentrydefault\-pbuildModedebug\--no-daemonDebug用于快速安装模拟器、HDC调试和功能验证。exec让 Hvigor退出码成为脚本退出码--no-daemon降低不同运行残留状态代价是每次启动成本。Debug通过证明 ArkTS、资源和 Web产物可以组装不代表 Release优化路径通过。Release 构建Release只切换-pbuildModereleaseentry release配置当前关闭 Ark混淆arkOptions: { obfuscation: { ruleOptions: { enable: false, files: [ ./obfuscation-rules.txt ] } } }Alpha阶段优先调试与可诊断。正式发布前应启用并验证混淆特别是 JavaScript Proxy方法名、反射资源和序列化字段不能被错误改名。unsigned 不是发布包根配置signingConfigs为空最终文件名为entry-default-unsigned.hap。它可用于构建、体积和部分安装验证但不能宣称完成商店签名与发布。签名需要证书、profile、密钥保护和流水线密钥策略。不能把私钥提交仓库也不能在文章中暴露本机证书路径。后续发布门禁应验证签名主体、有效期和权限。产物大小与哈希最终 Release unsigned HAP记录size: 1006605 bytes sha256: 6d08d725bcb219ae97508281477cedb40d766d6860d7062e14d873f30322e31cSHA-256把测试报告与具体二进制绑定。文件名可被覆盖哈希能确认用户拿到的是同一产物。大小用于观察依赖和资源增长不作为唯一优化目标。每次正式基线应记录 commit、命令、环境、HAP相对路径、字节和哈希。重新构建若哈希不同可能来自时间戳或非确定打包需要区分可重复构建与内容一致。UnitTestBuildhvigorw UnitTestBuild\--modemodule\-pproductdefault\-pmoduleentrydefault\-pbuildModetest\-punitTestModetrue\--no-daemon该任务编译测试代码和依赖捕获 ArkTS类型、Hypium引用和测试资源问题。它不代表设备执行4/4报告必须单列。测试模块声明2in1让目标类型与 PC优先策略一致。未来 phone只是兼容不应稀释 PC构建门禁。构建产物安全检查Web index不引用 CDNArkWeb关闭 file、online image、geolocation和 DOM storageRelease无 sourcemap。HAP还应进一步扫描意外密钥、绝对路径、调试日志、测试 fixture、source map和未使用资源。依赖许可证与 SBOM是做大后的必要交付项。package-lock和 oh-package-lock应进入版本管理构建报告记录依赖版本。鸿蒙 PC Release 版本下图来自 MateBook Pro 2in1模拟器中的构建基线。ArkUI外壳和离线 Web编辑器来自同一 HAP构建链。截图证明应用可运行不证明签名和商店发布。HAP哈希、构建日志、自动化和设备行为共同形成交付证据。包体增长管理单 HTML包含 CodeMirror、markdown-it、DOMPurify和 CSS是主要资源之一。新增插件前记录 HAP与 index.html差值。chunkSizeWarningLimit只是构建警告阈值不是产品预算。可建立预算Web资源、HAP总大小、冷启动时间和内存共同评估。为了减几十 KB删除安全净化库是错误优化先分析 source map、重复依赖和未用语言包。可重复构建真正可重复需要固定 Node、npm、DevEco、SDK、Hvigor、系统环境与 lockfile。当前脚本固定路径和依赖锁但尚未证明两次构建字节哈希完全一致。HAP元数据可能含时间。可先比较解包后业务文件哈希确认内容一致再研究打包时间戳归一。不要在没有验证时宣称 reproducible build。交付前门禁Release候选至少需要Web 20/20、ohosTest 4/4、Debug/Release/UnitTestBuild成功、diff检查、模拟器主链、HAP大小与哈希、安全扫描、签名验证和 Alpha退出条件。当前签名、远程 CI和内部试用未完成所以仍是工程基线而非正式发布。当前边界无发布签名混淆关闭原生构建只在本机 macOS未生成 SBOM未验证字节级可重复构建没有自动上传产物和发布渠道。API 24之外兼容矩阵尚未建立。产物回溯规则每个准备交付的 HAP应配套一个本地清单记录 Git提交、工作区是否干净、Web lockfile哈希、oh-package lockfile哈希、DevEco版本、SDK版本、构建模式、文件字节和 SHA-256。若工作区存在未提交代码产物不能只绑定 HEAD因为二进制可能包含无法从仓库重建的修改。清单还应记录验证报告路径和模拟器目标不把测试截图塞进 HAP。以后引入自动发布时流水线从同一 commit生成清单和 artifact下载页面显示哈希。用户反馈问题时先收集应用版本和构建 id不要求用户上传文档。Release目录中的旧 HAP应在新构建前清理或按 commit归档避免人工拿错文件。文件名包含 product、module、mode仍不够区分两次构建哈希才是最终身份。结语OhMarkdown构建链先把 Web变成离线单 HTML再由 Hvigor按 API 24组装 Debug、Release和测试目标。脚本固定环境与顺序最终 unsigned HAP记录大小和 SHA-256同时明确它不是签名发布包。鸿蒙 PC应用的交付质量来自可重复命令和可核对产物而不是 DevEco里一次成功运行。把构建、测试、签名和发布逐层命名才能让后续团队与渠道建立可靠流程。

相关新闻

Codex实战:用AI生成Python游戏代码的人机协作模式探索

Codex实战:用AI生成Python游戏代码的人机协作模式探索

那天下午,我盯着屏幕上的几行 Python 代码,突然意识到一件事:我们可能正在经历编程方式的一次根本性转变。事情是这样的,我在 GitHub 上看到一个 OpenAI 前员工用 Codex 快速构建了一个小游戏——不是那种简单的猜数字游戏&#x…

2026/7/26 4:48:13阅读更多 →
大语言模型越狱攻击与防御:GLM 5.2安全机制深度解析

大语言模型越狱攻击与防御:GLM 5.2安全机制深度解析

在实际 AI 安全研究和模型对抗测试中,越狱攻击(Jailbreak Attack)一直是衡量大语言模型(LLM)鲁棒性的关键挑战。所谓越狱,即通过特定构造的提示词绕过模型内置的安全护栏,诱导模型输出原本被限制…

2026/7/26 4:48:13阅读更多 →
鸿蒙 PC Markdown 编辑器 GFM 渲染:表格、删除线、自动链接与任务列表

鸿蒙 PC Markdown 编辑器 GFM 渲染:表格、删除线、自动链接与任务列表

鸿蒙 PC Markdown 编辑器 GFM 渲染:表格、删除线、自动链接与任务列表 Markdown 预览并不是把井号替换成标题标签。桌面用户从 GitHub、GitCode 和团队文档仓库带来的文件,通常包含表格、删除线、裸 URL 和任务列表;如果编辑器只支持最小语法…

2026/7/26 4:48:13阅读更多 →
深入解析CC26x0/CC13x0 AUX与BATMON寄存器,实现极致低功耗设计

深入解析CC26x0/CC13x0 AUX与BATMON寄存器,实现极致低功耗设计

1. 项目概述与核心价值在物联网和无线传感节点这类对功耗极其敏感的应用场景里,我们开发者常常面临一个核心矛盾:既要实现高精度的数据采集和实时响应,又要将系统的整体功耗压到最低,以延长电池寿命。TI的CC26x0和CC13x0系列无线M…

2026/7/26 6:08:31阅读更多 →
ResWM:基于残差连接与动作条件化的高效世界模型

ResWM:基于残差连接与动作条件化的高效世界模型

1. 项目背景与核心价值去年在开发一个机器人视觉导航系统时,我遇到了传统强化学习方法的瓶颈——训练样本效率低下,模型需要数百万次试错才能学会简单任务。当时尝试了各种数据增强和课程学习技巧,直到发现世界模型(World Model&a…

2026/7/26 6:08:31阅读更多 →
9行Python代码实现AI智能体:极简Agent开发入门指南

9行Python代码实现AI智能体:极简Agent开发入门指南

这次我们来看一个很有意思的项目——用9行Python代码实现一个Agent。这个项目展示了如何用极简的代码构建一个具备基础智能体能力的程序,对于想快速入门AI Agent开发的开发者来说是个很好的起点。这个项目的核心价值在于它的简洁性:仅用9行代码就实现了A…

2026/7/26 6:08:31阅读更多 →
【金仓数据库征文】Oracle到金仓:序列、触发器与自增键改造实践

【金仓数据库征文】Oracle到金仓:序列、触发器与自增键改造实践

文章目录每日一句正能量导读1. 背景与问题2. 环境与数据2.1 验证环境2.2 源端对象扫描3. 复现过程3.1 复现“历史主键被触发器覆盖”3.2 复现“序列起点低于历史最大值”3.3 复现“序列空洞被误判为丢单”3.4 复现并发冲突4. 方案实施4.1 方案选择4.2 目标端保留序列4.3 保留触…

2026/7/26 6:08:31阅读更多 →
Godot引擎集成Jolt物理引擎:高性能3D游戏物理模拟实战指南

Godot引擎集成Jolt物理引擎:高性能3D游戏物理模拟实战指南

1. 项目概述:当Godot遇见Jolt,一场物理引擎的“换心手术” 如果你是一位Godot引擎的开发者,尤其是对3D游戏物理模拟有较高要求的开发者,那么“物理”这个词可能让你又爱又恨。Godot内置的Bullet物理引擎在4.0版本后已经相当成熟&…

2026/7/26 6:08:31阅读更多 →
AI降重后论文人工复核的8个关键要点

AI降重后论文人工复核的8个关键要点

1. 论文降AI后的关键复核要点解析当学术论文经过AI工具降重处理后,人工复核环节直接决定了最终成果的质量底线。根据我在学术期刊审稿和论文指导中的实践经验,AI降重后的文本往往存在八类典型隐患,需要像考古学家修复文物那样逐字逐句检验。重…

2026/7/26 6:06:31阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →