【知律|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明

📅 2026/8/19 13:53:30
【知律|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
摘要AppGallery 发布复查不是把后台表单重新看一遍而是从当前源码、候选安装包、AGC 版本绑定和公开页面四层证据反向核验。本篇以 HarmonyOS 5.0 以上版本的 ArkTS 应用“知律”为真实样本逐项检查bundleName、版本号、目标 SDK、设备类型、权限、在线语音回退、图标与截图、隐私声明以及发布状态。文中尤其处理一个容易漏审的问题应用核心题库和学习数据可以本地运行但语音朗读存在在线 TTS 回退因此不能笼统宣称“完全离线、绝不联网”。一、为什么发布复查必须回到源码很多团队把“发布完成”理解为 AGC 页面上曾经出现过一个成功提示。这个判断不够严谨。AppGallery Connect 的一条版本链路至少包含本地源码、构建产物、上传记录、版本绑定、资料保存、提交审核、预审、正式审核和公开页面多个状态。任一环节的对象不是同一个包后续结论就会失真。知律当前源码根目录为D:\huawei\one19-11。本文只讨论能够从该目录与真实配置中复核的事实不把历史文档、旧截图或队列备注直接当成当前版本的证据。复查时首先建立四层证据源码层AppScope/app.json5、entry/src/main/module.json5、工程构建配置、页面清单和实际 API 调用。包体层本次构建生成的 APP/HAP、签名状态、包内清单、安装与卸载结果。平台层AGC 中实际选中的包、版本资料、设备、截图、隐私与发布区域。公开层应用市场公开页是否可访问展示名称、版本和素材是否与本次提交一致。这四层不能相互替代。尤其要记住本文的唯一标记上传成功不等于版本已绑定。同理本地存在一个签名包不代表它已经上传平台显示“审核中”也不代表公众已经能够下载。二、先做一张不可混淆的发布身份卡知律的AppScope/app.json5给出了应用级身份{ app: { bundleName: com.jiaweikang.one19, vendor: JiaWeiKang, versionCode: 10000000, versionName: 1.0.0, icon: $media:app_icon, label: $string:app_name } }应用级字符串资源把app_name解析为“知律”。因此本次复查的最小身份卡是字段当前源码事实发布复查动作Bundle Namecom.jiaweikang.one19与 AGC 应用、上传包和公开页归属核对Version Name1.0.0与版本页面及公开页显示核对Version Code10000000确认高于同包名已发布版本的内部版本号App Name知律核对包内资源、AGC 中文名称、截图和介绍VendorJiaWeiKang核对构建与账号归属不把它写成用户可见品牌版本名和版本号承担不同职责。versionName面向用户展示versionCode用于平台判断升级顺序。复查时不能只看到“1.0.0”就认为可以覆盖旧版本若 AGC 已经存在更高的内部版本号当前包仍会被拒绝。反过来也不能为了通过校验随意抬高版本号而不更新变更记录。三、目标 SDK 与“面向 HarmonyOS 5.0”不是一句口号工程构建配置显示{ products: [{ compatibleSdkVersion: 6.0.1(21), targetSdkVersion: 6.0.2(22), runtimeOS: HarmonyOS }] }这里至少要区分三个概念compatibleSdkVersion决定最低兼容能力边界。targetSdkVersion表示应用按哪个目标 SDK 行为与审核规则构建。用户文案中的“HarmonyOS 5.0 或以上”是产品适用范围描述不能代替包体清单。复查正确做法是从候选包再次读取实际清单而不是只读工程文件。因为本地工作区可能在构建后又被修改旧包与新源码会出现时间差。建议给候选包记录 SHA-256、大小、构建时间、版本名、版本号和包名形成不可歧义的制品条目。文章或提报表里若没有真实公开数据也不应推测下载量、PV、点赞或收藏。四、设备声明必须与页面适配证据同时成立entry/src/main/module.json5当前声明{ module: { type: entry, deviceTypes: [phone, tablet, 2in1], deliveryWithInstall: true, installationFree: false } }这意味着发布资料不能只准备手机视角也不能因为代码里有断点判断就直接写“完美适配平板和电脑”。知律的Index.ets确实按窗口断点选择导航形态较窄区间使用底部导航更宽区间使用侧边导航页面还读取系统避让区为底部控件留出安全距离。这些是适配实现证据但不是完整运行证据。真正的发布门槛还应覆盖手机竖屏启动页、首页、题库、练习、结果、设置均可达。手机横屏或小窗长标题不遮挡底部操作不进入手势区。平板横竖屏侧边导航、列表和内容区比例稳定。2in1 窗口缩放鼠标点击区域有效窗口变窄后布局能重新流动。状态栏与导航栏浅色模式下图标和背景对比可读。返回行为二级页均支持系统返回不形成无法退出的页面。因此设备类型是“承诺范围”截图和真机/模拟器记录才是“履约证据”。若某个设备还没有完成冒烟测试应缩小发布设备范围而不是补一张经过拉伸的素材。五、权限复查要同时看声明和实际调用知律当前模块只声明了一个普通权限{ requestPermissions: [ { name: ohos.permission.INTERNET } ] }只看产品形态知律像一款本地普法学习应用题库、错题、收藏、笔记、章节进度、考试历史和设置主要保存在本地 Preferences 中。但源码中的PracticePage.ets使用了文本转语音能力先尝试本地语音引擎在失败路径中再创建在线 TTS 引擎。由此得到一个非常具体的结论核心学习流程可以本地完成不等于应用永远不访问网络。如果 AGC 介绍、隐私政策或审核备注写“完全离线”“无任何联网能力”就与当前源码冲突。更准确的表达应是题库与学习记录保存在设备本地语音朗读优先使用本地能力在本地语音引擎不可用时可能使用系统提供的在线语音服务。这段表述仍需根据实际 API 数据流和华为能力说明校准但至少没有掩盖INTERNET权限与在线回退。若产品最终决定坚持完全离线则应删除在线回退代码与网络权限重新构建和测试而不是只改隐私文案。六、旧自检报告也可能成为错误来源该工程的doc目录保留了布局、色彩、功能异常、审核指南、截图、底部导航和深色模式等自检记录。这些材料对追溯很有价值但部分历史文本形成于加入在线 TTS 回退之前仍可能写着“未声明 INTERNET”或“完全离线”。发布复查不能因为文件名里有“自检报告”就默认它有效。每份证据至少增加以下元数据evidenceId: permission-review-20260725 sourceCommit: 真实提交哈希 packageSha256: 真实包哈希 checkedAt: 真实时间 result: INTERNET 用于在线 TTS 回退当源码能力发生变化应废止或更新旧报告并在变更记录中写明原因。否则审核人员看到模块清单与自检报告互相矛盾很难判断哪一份才是最终声明。七、产品名称要扫过所有元数据表面应用级字符串和 entry 模块资源已经使用“知律”“知律·普法学堂”等名称这是正确方向。但工程部分包描述或历史命名仍残留“中国方言题库”等旧产品语义Preferences 存储名也保留了dialect_quiz。存储名属于内部实现只要迁移策略稳定不一定要为了好看强行改名但包描述、模块描述、AGC 介绍、隐私政策、审核备注和用户可见页面必须保持一致。发布前建议执行关键词扫描rg -n 方言|dialect|旧应用名 AppScope entry oh-package.json5 doc扫描结果要分级处理用户可见或包元数据发布前必须修正。隐私和审核材料必须修正并重新确认。仅内部存储键记录技术债评估迁移风险后再改。历史复盘文档可保留但要明确标注历史版本。发布复查的目标不是“仓库里一个旧词都没有”而是避免用户、审核员和平台收到彼此冲突的产品身份。八、图标复查不能只看文件存在AppScope通过$media:app_icon引用应用图标。检查时至少要回答最终包实际包含的是哪一张图而不是临时目录中的候选图。PNG 是否有透明像素边缘是否依赖透明背景才能成立。在浅色、深色、桌面、安装、启动窗口和 AppGallery 缩略图中是否清楚。包内图标与 AGC 应用信息图标是否来自同一设计。图标是否含难以辨认的小字、系统图标仿冒或商标风险元素。工程中存在多份临时图标和替换素材不能按文件修改时间猜测最终采用了哪一份。最可靠的路径是读取资源映射并解包候选包核验。对于 AppGallery最终图标应使用有意设计的不透明背景避免把透明底直接交给不同展示容器处理。九、截图要证明当前版本而不是装饰页面截图应来自当前候选包的真实界面至少覆盖首页、核心练习、结果反馈和设置或学习记录。知律声明了 phone、tablet、2in1因此素材策略也要按 AGC 实际要求为相应设备组准备而不是把手机截图横向拉伸为平板图。截图复查关注以下细节应用名、题库名称与当前产品一致。不出现调试浮层、个人账号、通知内容或测试数据中的敏感信息。底部导航距离系统手势区足够。长文本没有截断按钮完整可点击。浅色模式状态栏清楚输入框和占位文字对比达标。截图里的功能确实存在审核路径可以到达。截图尺寸、格式和文件大小符合平台输入框要求。如果产品只锁定浅色模式AGC 介绍不应宣称“自动适配深色模式”。知律的EntryAbility当前主动设置浅色模式这是一项真实的设计决策应在测试记录中验证系统深色模式下不会发生状态栏反色、Web 内容反色或弹窗不可读。十、候选包存在不代表它足够新工程输出目录可以找到 APP 制品包括签名与未签名命名的文件。但仅凭“文件存在”不能断言它来自当前源码。复查应将包体和源码建立绑定1. 记录当前提交或工作区快照 2. 清理本次构建范围内的旧输出 3. 执行仓库约定的 release 构建 4. 校验退出码与首个真实错误 5. 记录候选包 SHA-256、大小和生成时间 6. 解包回读 bundleName、versionName、versionCode、deviceTypes、权限签名配置存在也不等于签名有效。证书是否过期、Profile 是否匹配包名、发布证书是否对应当前账号都必须从构建结果和安装结果验证。任何证书口令、密钥、Token 或私密身份信息都不能写进文章、日志、截图或队列文件。十一、构建通过之后还要做安装闭环App Review Guideline 3.1 关注的是兼容性与运行稳定性。发布候选包至少应完成一次标准闭环安装 - 首次启动 - 进入首页 - 打开题库 - 完成一次练习 - 查看结果 - 写入/删除一条本地记录 - 切换主要导航 - 返回与重启 - 卸载知律还需要针对已有实现补充高风险用例本地 TTS 可用时能朗读不需要网络。本地 TTS 不可用时在线回退的失败状态可理解且不会卡死。无网络时核心题库、收藏、笔记、错题和历史仍可使用。Preferences 写入失败时不应先显示“删除成功”再静默丢失错误。考试结果页重复进入时不会重复追加同一条历史记录。快速重复点击导航时不创建叠加页面。结果页不展示静态伪造的排名数据。这里有两个真实风险值得强调。第一部分持久化代码捕获异常后没有把失败返回给页面删除操作可能出现 UI 成功、数据未落盘。第二结果页存在固定排名展示或重复写入历史的可能。这些都比“页面能打开”更接近审核中的功能异常。十二、上传后必须执行“选择并绑定”AGC 的常见操作失误是新包上传成功后版本页面仍绑定旧包。正确检查顺序如下在版本页面确认目标应用和版本。上传本次候选包。等待平台解析完成。重新打开包选择区域。按包名、版本号、上传时间和大小选择本次包。保存版本页面。离开后重新进入回读当前绑定包。这就是为什么“上传成功不等于版本已绑定”必须成为发布自动化的硬规则。自动化脚本不能只以上传接口返回成功作为完成条件必须读取版本页面最终状态。若平台要求短信、验证码、扫码、安全验证、法律确认或最终不可逆确认应立即停止由账号持有人处理不能绕过。十三、隐私声明要覆盖真实本地数据知律在本地保存收藏、笔记、错题、题库或章节进度、考试历史和设置。这些数据没有证据表明会被普通 HTTP 接口上传但仍应在隐私政策中说明本地处理目的、存储位置、清除方式以及卸载后的行为。建议把“本地数据”和“联网能力”拆开写类别实际用途声明重点收藏与笔记用户学习记录保存在设备本地可在应用内删除错题与进度学习反馈与续学不用于社交排名不伪造云同步考试历史本地复盘说明清除入口和失败反馈设置字号、朗读、提醒偏好等设置项不等于系统能力已经生效网络在线 TTS 回退不应宣称绝对无网络设置页中的“提醒偏好”如果只保存一个开关没有真正创建系统通知或后台任务就不能在商店介绍里写“每天自动提醒学习”。发布文案只能描述已经实现并可复核的能力。十四、2.19 自检关注系统能力是否被滥用App Review Guideline 2.19 要求应用不得滥用网络、系统机制或系统功能。知律当前没有证据表明存在悬浮窗、无障碍控制、隐藏自启动、关联拉起或修改其他应用数据但在线 TTS 与网络权限仍需透明说明。复查清单包括网络仅用于明确的语音回退场景。不在后台无提示发起与核心功能无关的请求。不使用未公开 API、动态加载或规避审核逻辑。不把系统提醒偏好伪装成已经启用的后台任务。不通过覆盖层误导用户点击。第三方依赖的行为与隐私标签一致。若未来加入账号、云同步、推送、统计 SDK 或在线内容必须重新执行权限、隐私、SDK 清单和数据出境评估不能沿用当前版本的“本地学习应用”结论。十五、分类、标签和审核备注都必须能落到页面应用分类和标签应围绕真实用途例如法律知识学习、普法题库和本地学习工具。不要为了搜索曝光添加“AI 法律咨询”“在线律师”“权威判决预测”等当前源码不支持的描述。审核备注可以提供一条最短验证路径启动应用 - 首页 - 选择题库 - 进入练习 - 完成题目 - 查看结果 - 收藏或记录笔记同时说明无需登录。核心题库与学习记录本地可用。朗读优先本地 TTS本地引擎不可用时可能使用在线回退。应用锁定浅色视觉方案。不需要麦克风权限朗读是语音输出而非录音。审核备注不应写“已全面适配所有设备”这类无法量化的结论而应附本次实际测试设备、系统版本和结果。十六、发布区域、价格和内容分级是外部决策源码无法决定发布国家和地区、收费方式、内容分级最终答案或法律条款确认。这些字段必须由产品与账号负责人根据真实业务填写。自动化可以检查字段是否为空、是否与既定策略一致却不能替负责人做法律或商业确认。同样队列里出现“已上架”备注只能表示某个历史状态记录不能据此推断当前工作区中的包已经公开。若要报告真实上架结果必须读取公开 AppGallery 页面并记录可访问 URL、公开版本、核验时间和页面展示信息。十七、公开页回读是最后一道门审核通过后仍要做公开核验URL 在未登录环境中可访问。应用名称、图标和开发者信息正确。公开版本与本次计划一致。截图、简介、隐私链接和设备范围符合预期。下载按钮或可用状态符合目标地区。页面没有仍在审核或仅开发者可见的提示。公开页没有展示的数据就留空。PV、点赞、收藏、推荐、加精和下载量都不能估算或补写。对于文章发布也一样CSDN 草稿 ID 不是公开 URL草稿保存成功不能描述为“已公开发布”。十八、把复查结果写成机器可回读记录建议每次版本形成如下记录{ bundleName: com.jiaweikang.one19, versionName: 1.0.0, versionCode: 10000000, devices: [phone, tablet, 2in1], permissions: [ohos.permission.INTERNET], networkPurpose: [online TTS fallback], packageSha256: , buildVerifiedAt: , installSmoke: not_run, agcPackageBound: unverified, reviewStatus: unverified, publicUrl: , publicVerifiedAt: }空字符串和unverified比编造一个成功状态更可靠。机器记录还应区分built、uploaded、bound、submitted、pre_reviewing、approved和public_verified禁止用一个模糊的published覆盖所有阶段。十九、知律发布复查清单身份与包体[ ] 包名为com.jiaweikang.one19[ ] 版本名为1.0.0[ ] 内部版本号满足升级要求[ ] 候选包来自当前源码并记录 SHA-256[ ] 发布签名与 Profile 有效未泄露任何秘密设备与稳定性[ ] phone、tablet、2in1 分别完成核心流程冒烟[ ] 横竖屏、小窗和底部安全区无错位或遮挡[ ] 首启、返回、重启和卸载正常[ ] 重复点击、重复进入结果页不产生重复数据[ ] 本地数据写入失败会反馈真实错误权限与隐私[ ] INTERNET 与在线 TTS 回退一致[ ] “核心数据本地”没有被夸大成“完全不联网”[ ] 收藏、笔记、错题、进度、历史和设置均有说明[ ] 提醒设置没有被描述成未实现的系统通知[ ] 旧自检文档中的无网络结论已更新或标废素材与元数据[ ] 包内图标与 AGC 图标一致且背景不透明[ ] 截图来自当前包并按设备组准备[ ] 所有用户可见旧产品名称已清理[ ] 分类、标签、简介不包含源码没有的能力[ ] 浅色模式策略与商店文案一致AGC 与公开状态[ ] 新包上传后已重新选择并绑定[ ] 保存后重新进入版本页完成回读[ ] 真实审核状态已记录[ ] 公开 URL 可在未登录环境访问[ ] 无真实数据的指标保持为空二十、总结一次可信的 AppGallery 发布复查不是寻找一个绿色成功图标而是证明“当前源码、当前包、当前 AGC 版本和当前公开页面”指向同一个对象。知律的真实案例说明最危险的往往不是复杂代码而是跨层信息不一致核心数据本地保存却有在线 TTS 回退新产品已经叫知律部分旧描述仍指向方言题库工程声明三类设备但证据可能只覆盖手机输出目录有签名包却无法仅凭文件存在判断它是否为当前版本。把包名、版本、设备、权限、素材、隐私、绑定状态和公开 URL 做成可回读证据链才能让发布自动化既高效又不越过事实边界。对于需要人工确认、验证码、法律确认或不可逆提交的步骤自动化应明确停下对于未核验的状态应诚实保留为unverified。这不是保守而是让每一次上架都可复核、可追踪、可纠错。---AI 辅助声明本文由 AI 辅助整理技术结论基于知律项目当前可读取的 ArkTS、模块配置与构建配置逐项复核涉及 AGC 账号状态、公开页面、真实设备测试和发布结果的内容均以实际回读证据为准未核验项不作成功声明。