这一篇收尾,不再只看代码,而是看一个 App 从 Demo 走向交付还缺什么。构建配置、截图、商店文案、隐私说明、免责声明、上架前检查,这些东西不写代码,但决定项目能不能像产品一样交出去。

项目落点:

  • 构建配置:build-profile.json5entry/build-profile.json5
  • 模块配置:entry/src/main/module.json5
  • 发布截图:doc/release/screenshots
  • 商店文案:doc/release/store-listing-draft.md
  • 隐私政策:doc/release/privacy-policy.md
  • 预发布检查:doc/release/prelaunch-checklist.md

读完这一篇,你可以复用一套 HarmonyOS 单机 App 的交付清单:代码、资源、文案、隐私、免责声明和测试路径一起闭环。

从 Demo 到可发布,还差什么

一个 App 能跑起来,不等于能发布。

《疆域纪行》作为离线旅行攻略 App,除了页面和功能,还准备了:

交付物 解决的问题 对应目录
截图 证明核心页面真实可用 doc/release/screenshots
商店文案 让用户理解应用价值 doc/release/store-listing-draft.md
隐私政策 说明本地数据边界 doc/release/privacy-policy.md
预发布清单 防止漏测关键路径 doc/release/prelaunch-checklist.md

很多个人项目卡在“代码写完”这一步,其实离可交付还差文案、截图、隐私和验证路径。

  • 应用介绍文档
  • 商店文案草稿
  • 隐私政策
  • 预发布检查清单
  • 应用截图
  • release 包输出
  • 签名构建配置

这篇不展开讲具体平台提交流程,而是从工程角度复盘:一个 HarmonyOS 单机 App 要走向可发布,需要补齐哪些环节。

构建配置:先确认 Stage 模型和 SDK

entry/build-profile.json5 中可以看到:

{
  "apiType": "stageMode",
  "buildOption": {
    "resOptions": {
      "copyCodeResource": {
        "enable": false
      }
    }
  }
}

这说明项目使用 Stage 模型。对于当前 HarmonyOS 应用开发,Stage 模型是主流选择,Ability、页面加载、上下文获取都围绕它展开。

根目录 build-profile.json5 中还有产品配置:

"products": [
  {
    "name": "default",
    "targetSdkVersion": "6.1.0(23)",
    "compatibleSdkVersion": "6.0.2(22)",
    "runtimeOS": "HarmonyOS"
  }
]

写技术文章时可以说明目标 SDK 和兼容 SDK,但不要把本机证书路径、证书密码、profile 路径等敏感信息贴出去。

发布文章里如果要展示签名配置,建议写成:

"signingConfigs": [
  {
    "name": "default",
    "type": "HarmonyOS",
    "material": {
      "storeFile": "<your-store-file>",
      "keyAlias": "<your-key-alias>",
      "profile": "<your-profile>"
    }
  }
]

技术分享要讲方法,不要泄露真实凭据。

模块配置:支持设备要和体验匹配

module.json5 中声明:

"deviceTypes": [
  "phone",
  "tablet",
  "2in1"
]

这意味着商店材料和测试也应该覆盖这些设备形态。

如果只在手机模拟器上看过,就不要在文章或商店文案里过度强调平板深度适配。比较稳妥的表达是:

当前版本以手机竖屏体验为主,布局已预留 tablet 和 2in1 设备支持,后续会继续增强大屏分栏体验。

技术复盘中诚实描述边界,比夸大能力更专业。

发布材料:截图和文案都要准备

项目已经有发布截图:

doc/release/screenshots/
├── 01-home.jpeg
├── 02-explore.jpeg
├── 03-detail.jpeg
├── 04-route.jpeg
└── 05-mine.jpeg

这五张图覆盖了核心路径:

  • 首页推荐
  • 探索筛选
  • 详情页
  • 路线规划
  • 我的 / 设置

这也是写 CSDN 技术文章时很好的配图顺序。技术文章不是只能贴代码,适当放页面截图能帮助读者理解代码背后的产品目标。

商店文案草稿在:

doc/release/store-listing-draft.md

隐私政策在:

doc/release/privacy-policy.md

预发布检查在:

doc/release/prelaunch-checklist.md

这些文档说明项目已经从“开发完成”往“交付完成”推进了。

单机离线 App 的隐私表达

《疆域纪行》的特点是:

  • 无需登录
  • 无需联网即可浏览核心内容
  • 收藏、搜索历史、行程仅保存在本机

这种 App 的隐私风险相对低,但仍然应该说明清楚:

  • 是否采集个人信息。
  • 是否上传收藏或搜索历史。
  • 是否请求定位、相机、相册等权限。
  • 本地数据如何保存。
  • 卸载 App 后本地数据会怎样。

技术文章里可以强调这一点:local-first 不只是技术架构,也是一种隐私友好的产品设计。

内容准确性和免责声明

旅行攻略类 App 最容易踩的坑不是代码,而是内容变化。

项目里多处加入了类似说明:

本应用内容为离线旅行参考信息,景区开放时间、门票、交通、餐厅营业状态等信息可能变化,请以当地官方公告和实际情况为准。

这非常必要。因为第一版内容是离线内置,不能保证实时更新。尤其是:

  • 景区开放时间
  • 门票价格
  • 路况
  • 餐厅营业状态
  • 边境线路规定

都可能变化。

对开发者来说,免责声明不是“推卸责任”,而是明确产品边界。

上架前的功能检查

建议至少覆盖这些路径:

  • 冷启动进入首页。
  • 首页点击景点进入详情。
  • 详情页收藏,再返回收藏页查看。
  • 详情页加入行程,在路线页查看摘要。
  • 探索页搜索“喀什”“赛里木湖”“大盘鸡”。
  • 探索页切换景点、美食、路线、城市。
  • 筛选无结果时显示空状态。
  • 关闭并重启 App,确认收藏和搜索历史仍在。
  • 系统返回键从详情页返回主页面。
  • 所有底部按钮不遮挡内容。

这些测试不依赖后端,很适合在发布前手动跑一轮。

工程复盘:这个项目最值得借鉴的点

第一,数据建模清楚。

AtlasItemRouteItemCityItemLocalAppState 把内容和用户状态分开,后续扩展有基础。

第二,页面主流程简单。

activeTab 控制主 Tab,detailId/detailKind 控制详情页,没有过早引入复杂路由。

第三,本地持久化封装在服务层。

页面不直接写 Preferences key,而是通过 LocalAppStore.ets 读写状态。

第四,视觉完成度较高。

大图、渐变、卡片、时间轴、空状态、启动页都已经具备产品感。

第五,发布意识比较完整。

截图、商店文案、隐私政策、免责声明都已经准备。

还可以继续优化的方向

如果继续迭代,我会优先做这些:

  • 把硬编码颜色抽成主题常量。
  • 把大文件 Index.ets 拆成 components 和独立页面。
  • 为路线行程设计更完整的数据结构。
  • 增加内容版本号和迁移逻辑。
  • 支持平板左右分栏布局。
  • 搜索支持标签和拼音。
  • 本地数据支持导出备份。
  • 增加更多真实内容和图片来源说明。

这不是因为当前版本不好,而是从 MVP 到正式产品的自然演进。

优化顺序也有讲究:先拆主题常量和组件,让维护成本降下来;再增强搜索、路线编辑和导出,让功能变强;最后再考虑联网更新和离线包,因为那会引入内容版本、同步和审核边界。按这个顺序走,项目不会因为一次性升级过多而失控。

验证清单

检查项 操作方式 通过标准
release 输出包存在且来源清楚 对照项目文件或真机/模拟器操作 结果符合文章描述
商店截图覆盖首页、探索、详情、路线、我的 对照项目文件或真机/模拟器操作 结果符合文章描述
隐私说明明确无登录和本地保存范围 对照项目文件或真机/模拟器操作 结果符合文章描述
文章中的签名材料全部脱敏 对照项目文件或真机/模拟器操作 结果符合文章描述
上架前手动路径已跑通 对照项目文件或真机/模拟器操作 结果符合文章描述

常见问题和处理

问题现象 优先排查 处理方式
构建配置能跑但文章不能贴 检查是否含证书路径和密码 用脱敏示例讲方法
审核关注内容时效 在详情和关于页写免责声明 动态信息统一描述为参考
截图和功能不一致 先更新截图再写文案 截图覆盖核心用户路径

本系列总结

10 篇文章从一个真实 HarmonyOS 离线 App 出发,完整覆盖了:

  • 工程入口和 Stage 模型
  • ArkTS 数据建模
  • ArkUI 首页和底部导航
  • 本地搜索与筛选
  • Preferences 持久化
  • 沉浸式详情页
  • 路线时间轴
  • 图片资源与启动体验
  • 适配和稳定性
  • 发布准备和项目复盘

如果你正在学习 HarmonyOS,不建议只停留在零散 API。选择一个真实小产品,把数据、页面、状态、资源、发布都走一遍,成长会快很多。

《疆域纪行》这个项目的价值就在这里:它不是最复杂的 App,但它把一个内容型 HarmonyOS 应用从 0 到 1 的关键链路都串起来了。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐