本文基于「细胞工坊」真实 HarmonyOS ArkTS 源码编写,源码目录为
D:\huawei\one14-9,重点复核AppScope/app.json5、entry/src/main/module.json5、entry/src/main/ets/entryability/EntryAbility.ets、entry/src/main/resources/base/profile/main_pages.json、entry/src/main/resources/base/media、pages/Index.ets、pages/HomePage.ets和views/mine/AboutPage.ets。需要先说明边界:本文只核对本地工程配置、入口链路、素材和页面声明,不声称已经完成 AGC 后台发布、不记录公开上架结果、不伪造审核状态。AGC 后台的包体绑定、审核状态和公开链接必须以真实后台回读为准。
一、发布复查不是“再看一遍”,而是把身份、入口和材料对齐
HarmonyOS 应用进入 AppGallery 发布前,最容易出问题的不是某个页面按钮,而是工程身份和上架材料不一致。比如包名和 AGC 应用不一致,版本号和关于页显示不一致,设备类型选了平板但页面没有做宽屏适配,隐私材料写离线但工程声明了联网权限,图标资源和 AGC 素材不是同一套。这类问题不一定在开发调试时暴露,却会在上架审核或用户安装后变成阻塞。
「细胞工坊」05-20 的复查目标,是把本地工程里的可复核信息串起来:AppScope/app.json5定义包名、版本、图标和应用名;module.json5定义入口 Ability、设备类型、启动图标和页面配置;EntryAbility.ets加载pages/Index并设置深色模式和系统栏;AboutPage.ets展示版本、适配设备和离线隐私说明;resources/base/media下提供应用图标和功能图标。
这篇文章不会把“本地配置存在”写成“平台已发布成功”。本地复查只能证明准备材料有据可查,不能替代 AGC 后台真实选择包体、保存版本、提交审核、回读状态和公开链接。
二、AppScope/app.json5:包名和版本是发布身份的第一锚点
AppScope/app.json5是应用级身份配置。当前源码里可以看到bundleName为com.jiaweikan.one14,versionCode为1000000,versionName为1.0.0,vendor为jiaweikan,图标和名称分别引用资源。
{ "app": { "bundleName": "com.jiaweikan.one14", "vendor": "jiaweikan", "versionCode": 1000000, "versionName": "1.0.0", "icon": "$media:layered_image", "label": "$string:app_name" } }这段配置对应 AppGallery 发布复查的第一组问题:AGC 后台目标应用是否就是com.jiaweikan.one14;上传包体解析出的版本是否是1.0.0;版本号是否比已上架版本递增或符合平台要求;应用名称和图标是否来自当前工程资源,而不是旧包残留。
需要注意的是,versionName=1.0.0也出现在AboutPage.ets的页面展示中。如果工程版本升级到1.0.1,关于页仍显示1.0.0,用户和审核材料就会出现不一致。因此发布复查不是只看 JSON,还要看页面文案。
三、module.json5:设备类型、入口 Ability 和启动素材要同 AGC 选择一致
entry/src/main/module.json5定义 entry 模块和 Ability。当前配置里deviceTypes包含phone、tablet、2in1,入口为EntryAbility,Ability 图标使用$media:layered_image,启动窗口图标使用$media:app_icon_square,启动背景使用$color:start_window_background。
{ "module": { "name": "entry", "type": "entry", "mainElement": "EntryAbility", "deviceTypes": ["phone", "tablet", "2in1"], "pages": "$profile:main_pages", "abilities": [ { "name": "EntryAbility", "srcEntry": "./ets/entryability/EntryAbility.ets", "icon": "$media:layered_image", "startWindowIcon": "$media:app_icon_square" } ] } }这段配置直接影响 AGC 后台材料选择。如果后台只配置手机素材,但包体声明支持平板和 2in1,就可能出现设备素材不完整、页面适配不足或审核信息不一致。反过来,如果 AGC 后台选择了平板,源码页面就要能在宽屏下不截断、不重叠、不被状态栏和导航栏遮挡。
当前HomePage.ets和LearningPage.ets都有基于screenWidth的列数调整,EntryAbility.ets也计算了底部导航避让区。这些可以作为“已考虑多设备布局”的源码证据。但源码仍需要真实运行截图和设备测试来支撑 AGC 素材,不能只靠配置声明。
四、EntryAbility:启动链路要从窗口加载到 Index
发布复查必须确认应用能正常启动到主页面。EntryAbility.ets的onWindowStageCreate中,先拿到主窗口,关闭全屏布局,设置状态栏和导航栏颜色,再调用windowStage.loadContent('pages/Index')加载主页面。
windowStage.loadContent('pages/Index', (err) => { if (err.code) { hilog.error(DOMAIN, 'One9App', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err)); return; } hilog.info(DOMAIN, 'One9App', 'Succeeded in loading the content.'); });这段代码给发布复查提供了明确的启动路径:EntryAbility -> WindowStage -> pages/Index -> Tabs -> Home/Lab/Learning/Mine。如果 AppGallery 预检查或真机测试出现白屏,第一优先级就是确认main_pages.json是否包含pages/Index,loadContent路径是否一致,Index.ets是否能编译,主页面依赖的组件是否有非法文本或资源缺失。
当前EntryAbility还把应用颜色模式设为深色,并设置系统栏颜色。这和 05-17 视觉令牌文章中的深色主题边界一致。发布材料如果写“支持亮暗色切换”,就和源码不一致;更准确的表述是当前版本使用深色视觉方案。
五、main_pages.json:所有可跳转页面都应在页面清单中
entry/src/main/resources/base/profile/main_pages.json列出了主入口、实验页、结果页、场景选择页、学习工具页、我的页子页面、隐私政策和用户协议。这个文件决定路由能否找到页面。
{ "src": [ "pages/Index", "views/experiment/ExperimentSimPage", "views/mine/SettingsPage", "views/mine/AboutPage", "views/mine/PrivacyPolicyPage", "views/mine/UserAgreementPage" ] }发布复查时,要把页面清单和页面实际跳转统一核对。首页会跳views/experiment/ExperimentSimPage和学习页;我的页会跳记录、收藏、笔记、设置、帮助、关于;设置页会跳隐私政策和用户协议。只要跳转 URL 没在main_pages.json中,发布后就可能出现点击无响应或路由失败。
这也是 AppGallery 审核中“核心功能异常”的常见来源。开发者往往只打开首页截图,没把二级页面全部点过。复查时应至少覆盖主 Tab 和每个一级菜单入口。
六、素材核对:图标资源必须和模块引用对得上
resources/base/media下存在layered_image.json、app_icon_square.png、startIcon.png、background.png、foreground.png以及多个业务图标和底部 Tab 图标。module.json5和app.json5引用了$media:layered_image与$media:app_icon_square,因此这些资源就是包体内的图标来源。
layered_image.json app_icon_square.png startIcon.png ic_tab_home.svg ic_tab_lab.svg ic_tab_learn.svg ic_tab_mine.svg发布复查不需要在文章里暴露图片二进制内容,但要检查资源是否存在、命名是否和配置引用一致、图标是否清晰、是否有透明背景风险、启动窗口图标和 AGC 应用图标是否来自同一视觉设计。当前本地检查能确认app_icon_square.png和startIcon.png存在且是 PNG 文件,但真正的显示效果仍应通过安装启动和 AGC 预览确认。
素材一致性还有一个实际问题:关于页里显示的是文本图标Bio,而包体图标来自媒体资源。如果 AGC 截图要展示应用图标,需要确认页面内图标、启动图标和商店图标不会让用户误以为是不同应用。
七、AboutPage:版本、设备和离线声明是市场材料的源码依据
AboutPage.ets中展示了应用名称、版本号、开发框架、适配设备,并在“合规与隐私”区块说明单机离线、无需连接公共互联网、未声明联网权限或敏感权限、不收集上传个人信息、数据保存在 HarmonyOS Preferences、未集成第三方统计广告或推送 SDK。
this.InfoRow('版本号', '1.0.0') this.InfoRow('开发框架', 'HarmonyOS ArkTS') this.InfoRow('适配设备', '手机、平板、二合一设备')这段页面内容要和AppScope/app.json5、module.json5、隐私政策和 AGC 后台材料一致。当前源码中versionName=1.0.0,关于页也写1.0.0;deviceTypes包含 phone、tablet、2in1,关于页也写手机、平板、二合一设备;module.json5没有声明联网权限,关于页也写无需联网。
如果未来新增联网反馈、云同步、账号登录或在线内容,关于页和隐私政策必须同步更新。发布复查的核心不是“文案好看”,而是文案能否被源码反证。
八、HomePage 和 Index:设备适配声明要有布局证据
AppGallery 后台如果选择手机、平板、2in1,页面就要能支撑不同宽度。HomePage.ets中有screenWidth状态和gridColumns()方法,用宽度决定 Grid 列数;Index.ets使用bottomBarHeight避让底部系统导航区域。
private gridColumns(): string { if (this.screenWidth > 840) return '1fr 1fr 1fr 1fr' if (this.screenWidth > 600) return '1fr 1fr 1fr' return '1fr 1fr 1fr' }这说明源码有多设备适配意识,但仍要真实截图验证。比如首页 Grid 在手机和 2in1 宽屏下是否高度足够,按钮文字是否被乱码或截断影响,底部导航是否避让系统手势区域,状态栏文字是否在深色背景上可读。
发布复查时不要只截首页。至少要截首页、实验室、学习中心、我的页、隐私政策或关于页。因为设备声明覆盖的是整个应用,不是首页。
九、签名配置和包体选择:只核对存在,不泄露材料
工程的build-profile.json5中存在 HarmonyOS 签名配置和 release/debug 构建模式。发布复查时要确认签名配置对应 intended release 包体,AGC 后台选中的包体和本地构建出的版本一致。这里有严格边界:证书路径、密钥口令、Store 密码、Profile 路径等属于敏感信息,不应写入文章、日志或公开材料。
文章只能写复查动作:确认有 release 构建配置,确认目标 SDK 和兼容 SDK 符合项目预期,确认 AGC 后台选择的是最新上传包体,确认版本名和版本号与app.json5一致。不能把任何签名秘密打印出来,也不能把“本地存在签名配置”说成“已成功提交 AGC 审核”。
如果发布时出现包体绑定错误,正确处理方式是回到 AGC 版本页,打开包体选择,按版本号、上传时间和大小选择目标包体,保存后再提交,而不是只上传文件就认为完成发布。
十、发布复查表:把每一项绑定到源码位置
| 复查项 | 源码位置 | 当前证据 |
|---|---|---|
| 包名 | AppScope/app.json5 | com.jiaweikan.one14 |
| 版本 | AppScope/app.json5/AboutPage.ets | 1.0.0,版本号页面一致 |
| 设备类型 | module.json5/AboutPage.ets | phone、tablet、2in1;页面写手机、平板、二合一 |
| 入口 Ability | module.json5 | EntryAbility |
| 主页面 | EntryAbility.ets/main_pages.json | 加载pages/Index |
| 图标素材 | resources/base/media | layered_image.json、app_icon_square.png存在 |
| 离线声明 | AboutPage.ets/module.json5 | 文案写离线,模块未声明联网权限 |
| 隐私入口 | main_pages.json/ 设置页 | 隐私政策、用户协议页面在清单内 |
| 多设备布局 | HomePage.ets/Index.ets | 宽度列数和底部避让有代码依据 |
这张表可以直接作为发布前自查入口。任何一项不一致,都应先修本地工程或材料,再进入 AGC 后台操作。
十一、常见发布复查问题与修复方向
| 问题 | 可能后果 | 修复方向 |
|---|---|---|
versionName升级但关于页没改 | 用户和审核看到版本不一致 | 把版本展示改为资源或构建时同步 |
| AGC 选择设备多于页面适配范围 | 平板/2in1 截图或运行异常 | 补多设备截图和布局验证,或收窄设备 |
| 图标资源和 AGC 图标不是同一套 | 商店展示与安装体验割裂 | 统一包体图标、启动图标和 AGC 素材 |
| 隐私文案写离线但新增联网能力 | 审核材料与真实行为冲突 | 同步权限、隐私政策、关于页和市场描述 |
| 只上传包体但未在版本页选择 | AGC 仍绑定旧包 | 回到版本页选择最新包体并保存 |
| 源码中文乱码进入页面 | 截图和用户体验异常 | 发布前统一编码检查和真机截图复核 |
对「细胞工坊」来说,当前最需要关注的是两个边界:一是源码中多处中文在终端显示异常,发布前必须以 DevEco/真机页面为准确认显示正常;二是前几篇已发现部分页面文件头混入外部测试说明,发布前必须清理非法文本并重新构建。
十二、结论:本地复查是 AGC 操作前的证据准备
基于D:\huawei\one14-9的真实源码,05-20 能得出的结论是:细胞工坊本地工程中,包名为com.jiaweikan.one14,版本为1.0.0,模块声明支持 phone、tablet、2in1,入口 Ability 加载pages/Index,图标素材存在,关于页展示版本、设备和离线隐私说明,主页面有一定多设备布局依据。
不能得出的结论是:AGC 后台已经选中最新包体、已经提交审核、已经公开发布、已经获得真实公开 URL。发布复查的价值在于把本地证据准备好,减少进入平台后才发现身份、版本、设备、素材或声明不一致。真正的全平台发布和腾讯文档提报,必须等公开页面和平台回读数据存在后再记录。
部分内容由AI辅助生成。