签名、版本元数据与 Release 卫生检查
功能全部就绪之后发布工程要回答的问题变得朴素这个包真的是我们以为的那个包吗元数据对不对、签名是不是发布证书、内容干不干净、构建新不新鲜。这篇按我们 P7 阶段的真实门禁讲这四问。1. 先搞清楚鸿蒙工程里元数据住在哪Android 开发者迁到鸿蒙第一个容易找错的地方就是版本元数据的位置。鸿蒙 Stage 模型工程的配置是两层AppScope/app.json5 # 应用级bundleName / vendor / versionCode / versionName entry/src/main/module.json5 # 模块级abilities / requestPermissions / deviceTypes关键事实versionCode / versionName / vendor 只在AppScope/app.json5module.json5里没有。新人升版时去 module.json5 里翻 versionCode找不到就自己加一个——编译不一定报错但市场认的还是 AppScope 那份于是我明明升版了后台说 versionCode 没递增的事故就这么发生。另一个三元组也别漏compileSdkVersion/targetSdkVersion/compatibleSdkVersion本工程冻结为 24 / 24 / 23见 ADR-001——targetSdkVersion影响系统的兼容性行为和市场的分发范围发布前要和基线一起核对。发布元数据在 P7 第一天冻结成契约注意是冻结成脚本里的常量不是 Wiki 里的表格# Frozen packaging contract (P7-T01) EXPECTED_BUNDLEcom.xiangshikeji.speaklab EXPECTED_VENDORxiangshikeji EXPECTED_VERSION_NAME1.0.0 MIN_VERSION_CODE1门禁逐项 grepAppScope/app.json5核对bundleName 是否漂移、vendor 是否还是example占位单独一条显式检查——模板工程最常见的发布事故、versionName 精确匹配、versionCode ≥ 基线。几个字段的纪律B01 提过这里按发布视角重申bundleName创建 AGC 应用时与之绑定上架后不可改核对它核对这个包会更新到正确的应用条目下versionCode市场的单调轴AGC 后台强制每次提交递增。门禁只查下界≥1递增靠发布流程纪律——内部用 RC 标签speaklab-1.0.0-rc.N管理候选正式递增发生在提交那一刻vendor审核可见的主体标识example占位会直接暴露没认真准备。2. 签名发布证书是上架与侧载的分水岭鸿蒙的签名体系对新手是一套新概念最小可用的心智模型是四样东西材料来源作用私钥.p12 CSRDevEco 本地生成签名的笔丢了无法续签同一应用发布证书.cer用 CSR 在 AppGallery Connect 申请证明笔属于你发布 Profile.p7bAGC 按 bundleName 证书签发声明这个应用允许被这把笔签build-profile.json5的signingConfigs工程内配置把上面三样接进构建DevEco 默认帮你管一套调试签名自动化申请、7 天有效期的调试 Profile 之类跑真机调试很顺滑但调试证书签的包不能上架。发布构建必须显式切到发布signingConfigs——所以门禁里有一条核对Release 构建配置引用的是发布 profile 路径而不是 DevEco 自动生成的调试材料。纪律有三条签名材料不进仓库.p12/.cer/.p7b 全部 gitignore靠团队密钥渠道分发签名信息不进日志构建脚本不打印 alias 密码等上架前最后核对一遍证书有效期——证书过期导致的更新包签名校验失败是发行期最难看的事故。3. 卫生检查的另一面内容与产物一致性元数据和签名之外卫生门禁还核对一组内容事实Release/Debug/活动三个 composition seam 文件都在B02 的机制赖以存在、凭据控制器和 Preferences port 没有越界B15/B09 的红线、切换/构建/审计三个脚本在位。原则是Release 的干净由一组可枚举的事实构成每个事实都有静态证据。产物层面还有一招值得单独说解包审计。HAP 本质是 zip 结构的包用 SDK 自带的解包工具app_unpacking_tool.jar或干脆 unzip 展开就能核对resources/rawfile/里的词库与法律文本在不在、ets/目录里有没有不该出现的 Debug 夹具模块。我们的双 HAP 隔离审计Debug 包与 Release 包互相核对就是在产物层面证明Fake 夹具物理存在于 Debug 包、物理不存在于 Release 包——不是理论上不会编进去是解开看过了确实没有。门禁文件头还有一句重要自我约束Proves static facts only — never substitutes for device RC matrix.静态门禁证明文件层面的事实它不声称替代真机 RC 矩阵那是 P7-T04 的活。每种验证手段说清自己能证明什么、不能证明什么——这和 B16 的三层区分是同一纪律。4. 干净重建验收构建必须从零开始团队被旧产物冒充新构建坑过之后立了干净重建原则独立验收的构建必须从 clean 开始——hvigorw clean清掉增量缓存最好换临时目录重新检出。禁止拿entry/build/里躺着的旧 HAP 改个名就当验收包。这条原则的深层原因Hvigor 增量构建的缓存里可能留着上一个实验的产物而源码时间戳看不出来B18 讲的变异假存活根因是同一个。你验收的可能是一个从未存在过的源码状态的构建——它通过还是失败都没有意义。我们的构建脚本B01默认先 clean验收场景再加临时目录干净检出并且明确不强制git worktree——手段可以灵活临时目录/清缓存检出均可原则只有一条产物必须能从当前源码完整复现。5. SHA-256 取证让同一个包可引用并分清 HAP 与 App Pack每次验收构建打印 SHA-256B01 的脚本习惯在发布流程里它升级为取证语言任务单里写accept HAP Releasef09f7a65…真机hdc install后核对的也是它。你测的是哪个包这个问题从此一个字的歧义空间都没有。但鸿蒙发布有一个容易混淆的产物差异要说清真机侧载安装的是 HAP上架 AppGallery 提交的是 App Pack.app——后者是assembleApp的产物把各模块 HAP 打包成市场分发格式。两个文件、两个 hash引用时写明是哪个。我们的口径真机 RC 矩阵验收用 HAP 的 hash上架提交记录 App Pack 的 hash任务单里两者并存谁也不冒充谁。双 HAPDebugRelease一起给 hash配合 B02 的隔离审计构成完整的这个包干净且新鲜的证据链。6. 发布前清单AppScope/app.json5bundleName / vendor / versionName / versionCode 门禁全绿SDK 三元组与基线一致签名Release 构建引用发布证书 发布 Profile非调试材料材料不进仓库不进日志三个 seam 文件在位双 HAP 解包审计通过Debug 夹具不进 Release干净重建clean 新鲜源码非旧产物HAP 与 App Pack 的 SHA-256 分别记录进验收文档静态门禁 ≠ 真机验证hdc install真机 RC 矩阵另行执行7. 小结元数据只住AppScope/app.json5module.json5 里没有版本字段别找错地方。发布签名四件套.p12 / .cer / .p7b / signingConfigs调试证书签的包上不了架。卫生可枚举事实的静态证据解包审计把干净从推断变成目击。验收构建必须干净重建SHA-256 是引用构建产物的唯一语言HAP 与 App Pack 分开记。

相关新闻

DL3DV-10K数据集实战:用Difix3D+训练高质量3D模型

DL3DV-10K数据集实战:用Difix3D+训练高质量3D模型

DL3DV-10K数据集实战:用Difix3D训练高质量3D模型 【免费下载链接】difix_ref 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/difix_ref Difix3D是一款基于单步扩散模型的3D重建增强工具,能够显著提升3D模型的质量。本文将详细介绍如何利用…

2026/10/10 17:32:26 阅读更多 →
小程序毕设项目:基于Django的校园停车动态监测与辅助小程序开发 轻量化校园智慧停车服务小程序 (源码+文档,讲解、调试运行,定制等)

小程序毕设项目:基于Django的校园停车动态监测与辅助小程序开发 轻量化校园智慧停车服务小程序 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/28 23:49:08 阅读更多 →
AI Agent五大设计模式解析与应用实践

AI Agent五大设计模式解析与应用实践

1. 什么是AI Agent设计模式在人工智能领域,AI Agent设计模式就像是建筑师的蓝图,它定义了智能体如何感知环境、做出决策并执行行动。这些模式不是凭空想象出来的,而是经过大量实践验证的最佳实践方案。我见过太多团队在开发AI系统时&#xff…

2026/10/8 14:04:36 阅读更多 →

最新新闻

SpringBoot多模块项目实战:解耦、复用与云原生落地

SpringBoot多模块项目实战:解耦、复用与云原生落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:39:05 阅读更多 →
STM32F103光敏传感器稳定采样与非线性补偿实战

STM32F103光敏传感器稳定采样与非线性补偿实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:39:05 阅读更多 →
MATLAB二维绘图实战:从数据准备到高质量导出的完整指南

MATLAB二维绘图实战:从数据准备到高质量导出的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:39:05 阅读更多 →
C++实现AVL树:从平衡原理到指针旋转的工程实践

C++实现AVL树:从平衡原理到指针旋转的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:39:05 阅读更多 →
两串锂电池均衡实战:MP2642GR-Z与PIC18LF46K42打造可靠BMS

两串锂电池均衡实战:MP2642GR-Z与PIC18LF46K42打造可靠BMS

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:39:05 阅读更多 →
JavaWeb学生信息管理系统课程设计全解析:从表结构到答辩技巧

JavaWeb学生信息管理系统课程设计全解析:从表结构到答辩技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →