第10篇|真机交付:留痕如何把构建、签名和安装跑通
第十章只做一件事:把留痕从工程构建、签名打包、真机安装到功能验收完整跑通,形成可以直接交付的最后一环。

图10-1 章节封面:真机交付把构建、签名和安装连成一条线
|
维度 |
内容 |
|
本章主题 |
真机交付如何把构建、签名、安装和验收串成一条线 |
|
核心文件 |
build-profile.json5、entry/src/main/module.json5、AppScope/app.json5、hvigorw.bat |
|
读者目标 |
看懂工具链对齐、签名安装和缓存清理的真实排查顺序 |
|
输出结果 |
一套可复用的真机交付检查表 |
|
先看结论真机交付不是最后点一次安装按钮,而是先把版本、签名、权限和缓存全部对齐,再让应用在真实设备上稳定启动。只要这条链路通了,前九章的功能才算真正落地。 |
一、先把交付链路看成一条流水线,而不是最后一个按钮
留痕是一个多模块 HarmonyOS 项目,entry 负责页面壳,staticlibrary 负责公共样式和模型,dynamiclibrary 负责持久化和统计。真机交付如果只盯着单独模块,很容易出现 HAP 能出、HSP 没带上、安装后首页能开但功能空掉的问题,所以这一章按完整流水线来写。
交付链路可以固定成四步:先构建,再签名,然后安装,最后验收。每一步都应该能看见输入和输出,而不是靠感觉判断。工程一旦进入真机阶段,任何“差不多能跑”的宽松判断都会放大成现场问题。
|
# 先构建完整交付物 |
|
步骤 |
命令或输入 |
输出或关注点 |
|
构建 |
.\hvigorw.bat assembleApp |
生成完整交付包,而不是只看页面能否预览 |
|
安装前检查 |
hdc list targets |
确认设备在线、可安装、状态正常 |
|
安装 |
hdc install -r .\path\to\app-release.app |
完整包写入真机 |
|
验收 |
启动应用并查看首页、拍照、录音、统计 |
确认功能链路真的闭环 |

图10-2 真机交付链路:构建、签名、安装和验证是一条连续流程
二、工具链对齐要先于真机安装
当前项目的目标 SDK 是 6.1.0(23),兼容边界保留在 6.0.2(22)。这意味着交付时要优先确认 DevEco Studio、Hvigor 和工程配置版本是否一致,否则会在构建层先失败,而不是等到安装时才发现。
工程里还打开了 caseSensitiveCheck 和 useNormalizedOHMUrl,这类严格模式对路径和资源引用要求更高。它的意义很直接:把原本可能在真机上才显现的问题,尽量提前收敛在构建阶段。
|
{ |
|
检查项 |
当前项目状态 |
说明 |
|
目标 SDK |
6.1.0(23) |
真机交付以这个目标为准 |
|
兼容 SDK |
6.0.2(22) |
保留旧设备兼容边界 |
|
严格模式 |
已开启 |
路径、资源和引用更容易提前暴露问题 |
三、module.json5、签名和权限要一次说清
module.json5 决定了应用怎么进、怎么装、装完后要拿什么权限。留痕的主入口是 EntryAbility,deliveryWithInstall 设为 true,说明它会跟着安装流程一起交付。installationFree 设为 false,表示它不是免安装应用,必须走正常包安装链路。
权限上,这个项目会用到相机、麦克风和定位相关能力。真机交付时最重要的不是把权限都堆上去,而是让权限声明、用户授权和实际功能入口保持一致。这样首页、拍照页、录音页和记录页才不会出现看得见入口却没有权限支撑的情况。
|
{ |
|
{ |
|
配置项 |
当前值 |
对交付的作用 |
|
mainElement |
EntryAbility |
真机启动入口 |
|
deliveryWithInstall |
true |
安装时连同应用一起交付 |
|
installationFree |
false |
保持正常安装流程 |
|
权限集合 |
CAMERA / MICROPHONE / LOCATION |
支撑拍照、录音和定位水印 |
四、失败类型要分层处理,而不是反复点安装
如果构建已经成功,但真机还是装不上,第一步不是怀疑页面代码,而是把失败类型分开。device is unauthorized 往往是设备授权问题;verify app signature failed 多半是签名或 profile 不匹配;install failed 还要看是不是旧包残留、路径异常或者缓存冲突。
还有一种常见情况是只装了 entry,没有把 HSP 一起打进去。这样的包看起来像是安装成功,但打开后会出现功能缺失、页面空白或者服务层找不到实现。对这类问题,直接重打完整的 assembleApp 比单独试几次安装更有效。
|
# 真机安装排查顺序 |
|
症状 |
更可能的原因 |
先查什么 |
|
device is unauthorized |
设备未授权或证书不匹配 |
设备连接状态和签名 profile |
|
verify app signature failed |
证书或 profile 与安装包不一致 |
build-profile 和真机授权 |
|
install failed |
旧包残留或安装缓存异常 |
产物目录和 hdc 输出 |
|
功能能开但不完整 |
只打了 entry,HSP 没一起进包 |
是否执行完整 assembleApp |
五、D:\HvigorUserHome 缓存清理是最常见的兜底动作
这个项目里,构建失败不一定是业务代码错误。D:\HvigorUserHome 下的旧缓存、项目缓存和临时文件,经常会把新包卡在奇怪的位置。尤其是出现 EPERM unlink 这类错误时,优先怀疑缓存和文件占用,而不是先改代码。
最稳妥的处理方式是先关闭 DevEco Studio,再清缓存,再重新构建。不要一边让 IDE 读缓存,一边强行删除目录,这样只会把问题从构建失败变成目录锁定。清完以后再重新 assembleApp,通常能把很多看似随机的失败收回来。
|
# 关闭 IDE 后再清理缓存 |
|
缓存现象 |
处理方式 |
备注 |
|
EPERM unlink |
清理 project_caches 后重试 |
多半是文件占用或旧缓存残留 |
|
产物不更新 |
删旧输出再重新构建 |
避免拿到旧包误判 |
|
构建反复失败 |
关闭 IDE 后再清缓存 |
先释放文件锁 |
六、验收要回到应用本身,而不是只看安装成功
真机能够安装,只说明交付链路打通了一半。最后的验收还是要回到应用本身:首页能否打开、拍照能否弹权限、录音能否开始和结束、记录是否写入、统计是否能刷新。只有这些实际行为全部正常,才算真正完成交付。
留痕的验收点很清楚:拍照要能生成记录,录音要能保存并回放,定位和时间要能出现在水印里,统计页要跟着真实数据变化。它不是一个演示壳,而是一个能拿去现场使用的记录工具。
|
验收项 |
通过标准 |
对应页面 |
|
首页启动 |
能正常进入主界面 |
首页 |
|
权限弹窗 |
相机、麦克风、定位按需弹出 |
拍照页、录音页 |
|
拍照保存 |
能生成记录并回到列表 |
拍照页、记录页 |
|
录音保存 |
能录、能停、能回放 |
录音页、记录页 |
|
统计刷新 |
周/月/年切换后结果变化 |
统计页 |

图10-3 系列收官图:第十章把整套实战链路落在真机交付上
|
本章收官第十章把留痕从工程、签名、安装一路走到真机验证。到这里,前面九章的页面、服务层、存储和统计才真正进入可以交付的状态。 |
更多推荐


所有评论(0)