当前位置: 首页 > news >正文

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

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

本轮证据边界:包名、版本、设备类型、权限列表和离线实现来自本轮复核的本地源码;原文中的构建、安装或历史检查记录只作为历史证据,本轮没有重新执行构建、安装、AGC 上传、软件包绑定或审核提交。发布流程与候选包检查属于建议实现,不能据此推断平台审核状态。

当前阻断项:BRAND_FEEDBACK_EMAILBRAND_COPYRIGHT_OWNER仍为占位值。账号所有者必须在候选包产生前替换为真实且合规的信息;本文不会展示、收集或保存对应私密身份数据。

HarmonyOS 应用进入 AppGallery Connect 之前,最危险的错误往往不是 ArkTS 编译错误,而是多个“看起来都正确”的信息没有指向同一个版本:源码里叫“万能转换器”,说明文档写成“万能转换器 Pro”;工程版本是1.0.0,后台却绑定了另一份同版本软件包;模块只声明phone,素材却按平板一起提交;页面宣称完全离线,备份配置却允许系统备份恢复;图标尺寸正确,但背景层仍带透明像素。任何一项单独看都不复杂,组合起来却会让审核人员无法判断“这是不是同一个应用”。

本文基于“万能转换器”的真实 HarmonyOS 工程做一次发布前复查。源码可确认:bundleNamecom.hmapp.universalconverterversionCode1000000versionName1.0.0;入口模块仅声明phonerequestPermissions为空;生产依赖为空;应用、Ability 和品牌常量使用“万能转换器”;单位换算、汇率、历史、收藏和设置都在本地完成。与此同时,源码也暴露出四个必须在候选包产生前处理的风险:README 名称仍为“万能转换器 Pro”,反馈邮箱与版权主体仍是占位值,备份配置与“数据只保存在当前设备”的强声明存在语义差异,分层图标背景包含透明像素。

本文面向 HarmonyOS 5.0 及以上版本,讨论的是“源码快照如何形成可复核的上架证据链”,不会把队列中的“1.0.0 已上架”元数据当成当前源码包已经上传、绑定、提交或审核通过的证据。本次也没有登录 AGC、没有修改后台、没有构建或安装候选包,因此不会虚构发布结果、审核状态或真机稳定性结论。

唯一标记:AGC18-HMOS-18-20-APPGALLERY-RELEASE-REVIEW-PACKAGE-MATERIALS

一、先划清六个发布状态

“源码里是 1.0.0”只能证明源码配置,不代表平台上的 1.0.0 就是它。一次可靠发布至少要区分六个对象:

对象能证明什么不能证明什么
源码快照配置、功能和资源的当前状态已构建、已测试
构建产物某次构建生成了 APP/HAP已安装、可启动
候选包被选定用于发布的签名产物已上传 AGC
已上传包AGC 接收到一个软件包版本页已绑定该包
已绑定版本版本页选择并保存了目标包已提交审核
审核/上架状态平台真实流程结果当前仓库与线上包一致

因此,发布复查不能只看app.json5,也不能只看 AGC 页面。正确做法是给源码、候选包和后台版本建立同一条身份链,并把每一步的证据保留下来。队列中的appId=6917604619777068417和“1.0.0 已上架”可以作为待核对目标,但在没有回读公开页和后台绑定记录之前,不应写成本文的实测结论。

二、身份矩阵从 AppScope 开始

AppScope/app.json5是当前源码的产品级身份入口,真实配置如下:

{ "app": { "bundleName": "com.hmapp.universalconverter", "vendor": "hmapp", "versionCode": 1000000, "versionName": "1.0.0", "icon": "$media:layered_image", "label": "$string:app_name" } }

复查时应把bundleNameversionCodeversionName、图标资源和名称资源抄入身份矩阵,而不是靠记忆在 AGC 中填写。尤其要注意versionName是展示版本,versionCode是递增标识;只改展示名称而沿用已经分发过的版本代码,通常不能形成一个新的升级版本。

建议在发布单中固定以下字段:

bundleName = com.hmapp.universalconverter versionName = 1.0.0 versionCode = 1000000 module = entry ability = EntryAbility deviceTypes = phone

这些值随后还要与候选包解析结果、AGC 应用条目、版本页和公开页逐项比对。

三、应用名称出现了真实漂移

工程资源EntryAbility_label的值是“万能转换器”,BrandConfig.ets中的BRAND_APP_NAME也是“万能转换器”,队列标题同样使用这个名称。但 README 开头仍写“万能转换器 Pro”。这不是文案偏好问题,而是发布身份漂移。

审核人员会从桌面名称、启动页、应用内“关于”、隐私政策、软件介绍、截图和版权材料识别应用。若“Pro”只存在于文档或后台,而包内没有该名称,用户会怀疑下载了错误版本;若“Pro”暗示收费、高级功能或差异化权益,风险更高。

发布前应确定唯一正式名称,然后同步:

  1. AppScopeapp_name资源;
  2. EntryAbility_label与桌面展示;
  3. BrandConfig.ets和“关于”页面;
  4. README、隐私政策、用户协议;
  5. AGC 中文名称、简介、截图和版权材料。

本文以源码多数证据支持的“万能转换器”为准,并把 README 的“Pro”列为待修复项,不替开发者猜测品牌决策。

四、模块能力决定设备范围

entry/src/main/module.json5中的关键字段为:

{ "module": { "name": "entry", "type": "entry", "mainElement": "EntryAbility", "deviceTypes": ["phone"], "deliveryWithInstall": true, "installationFree": false, "requestPermissions": [] } }

这里给出三个明确结论。第一,当前包只声明手机,不应仅凭页面看起来能拉伸,就在 AGC 中勾选平板或 2in1。第二,它是随安装交付的普通应用模块,不是免安装元服务。第三,没有申请权限,和离线工具定位基本一致。

设备类型不是营销范围,而是实现、软件包声明、截图素材和测试证据的交集。如果未来希望支持折叠屏、平板或电脑,需要先修改工程能力与自适应布局,再完成对应设备的窗口变化、横竖屏、系统栏、键鼠输入和素材验证,最后才扩大平台设备范围。

五、包名不能只在后台“看起来一样”

包名com.hmapp.universalconverter是应用升级关系、签名与平台条目的关键标识。复查应包含三次读取:

  1. 从当前源码的AppScope/app.json5读取;
  2. 从最终候选 APP 包的解析信息读取;
  3. 从 AGC 目标应用和版本页回读。

任何一次不一致都应停止发布。不能因为应用名称相同,就把候选包绑定到另一个应用条目;也不能通过复制工程后只改名称、不改包名来建立新应用。本文只完成了第一层源码读取,没有读取最终签名包和 AGC 页面,因此结论是“源码目标包名明确”,而不是“后台绑定已经正确”。

六、版本号还要和应用内展示对齐

当前AppScope的版本为1.0.0 / 1000000BrandConfig.etsBRAND_VERSION_NAME也是1.0.0,应用内“关于”页面会显示这个常量。两处暂时一致,但这套设计仍有维护风险:版本号被复制到了两个文件,下一次升级可能只改其中一处。

更稳妥的工程方案是让应用内版本显示读取包信息,或在构建阶段由单一版本源生成品牌常量。若暂时不改架构,发布检查单至少要把以下断言自动化:

AppScope.versionName == BrandConfig.BRAND_VERSION_NAME candidate.versionName == AppScope.versionName candidate.versionCode == AppScope.versionCode AGC.boundPackageHash == candidatePackageHash

最后一条最重要。同一个版本名可能被多次上传,后台列表中往往同时存在旧包和新包。必须按上传时间、文件大小、版本代码及可用的哈希证据选中最新目标包,并保存版本页后再回读。

七、图标尺寸正确不等于图标合规

当前分层图标由layered_image.json组合:

{ "layered-image": { "background": "$media:background", "foreground": "$media:foreground" } }

四个相关 PNG 都是1024×1024,尺寸符合当前 HarmonyOS 分层应用图标的基本要求。但像素复查发现:

文件Alpha 范围非完全不透明像素判断
background.png64~2552047背景层不合规风险
foreground.png0~255926642前景透明属于正常设计能力
app_icon.png64~2552047单层导出仍有透明边缘
startIcon.png64~2552047启动图标需复查

华为最新图标文档明确要求分层图标的背景层为纯色且不能包含透明像素;前景层则通常需要透明 PNG。这里的问题不在前景,而在background.png的 2047 个半透明像素。很可能是设计导出时保留了边缘抗锯齿或圆角透明边,这与“无需自行裁圆角,由系统生成遮罩”的规则冲突。

发布前应重新导出完全不透明的正方形背景层,并重新生成单层展示素材。不要只在图片查看器里肉眼认为“看不出透明”,应直接检查 Alpha 极值是否为255~255

八、包内图标和 AGC 图标必须一致

图标有两个表面:软件包内资源,以及 AGC 应用信息中上传的展示素材。即使包内图标修复了透明背景,如果后台仍沿用旧图,也会形成不一致;反过来,只换后台图标而不更新包内桌面图标,同样可能被审核或用户识别为两个产品。

复查方法不是比较文件名,而是比较视觉内容和源文件版本:

  1. 用修复后的background.png + foreground.png生成候选图标;
  2. 从最终软件包导出平台实际使用的图标;
  3. 生成 AGC 要求尺寸的上传素材;
  4. 在浅色、深色、桌面、设置列表、安装页和启动页检查;
  5. 截图保存包内展示与 AGC 预览;
  6. 确认无自行圆角、透明底、模糊拉伸和系统图标仿冒。

当前源码只能证明资源存在,不能证明 AGC 已上传同一图标,也不能证明设备实际展示正常。

九、启动页也属于品牌一致性

EntryAbility配置使用startIconstart_window_background。启动页发生在 ArkUI 首帧之前,审核人员和用户会先看到它。若启动页图标与桌面图标不同、背景对比不足或存在透明边缘,应用内部再精致也无法弥补第一印象。

当前startIcon.pngapp_icon.png都是 1024×1024,且检测到相同数量的半透明像素。这提示它们很可能来自同一导出源。修复时应从统一设计母版重新生成,而不是分别手工填边,否则会出现轮廓、缩放或色彩偏差。

还要在真机冷启动、后台无快照返回和进程销毁后的退出动效中验证启动页,而不是只看资源文件。

十、素材范围必须服从 phone 声明

因为当前deviceTypes只有phone,发布素材应围绕手机真实界面准备。至少覆盖:

  • 首页或工具入口;
  • 单位转换核心流程;
  • 实用计算器;
  • 历史记录或收藏;
  • 设置、隐私政策或关于页面。

截图应来自候选包或与候选包完全一致的真实界面,不应使用无法在应用中到达的概念图。汇率换算必须避免“实时汇率”“在线更新”等字样,因为源码使用内置静态参考汇率。历史最多 200 条、税费采用特定年度表、生肖按公历年计算等边界,也不应在宣传文案中被包装成无限、实时或权威结果。

如果 AGC 只选择手机,就不要提交平板拉伸图来暗示多设备支持;如果以后扩设备,应为每个素材组补齐真实截图。

十一、离线声明有四层证据

“完全离线”不能只靠一句宣传语。当前工程提供了较完整的四层证据:

层级当前证据结论
权限requestPermissions: []未申请网络或敏感权限
依赖oh-package.json5无生产依赖未发现运行时第三方 SDK
代码搜索未发现网络请求 API当前业务没有主动联网路径
文案隐私政策说明静态汇率、本地处理用户可理解离线边界

这四层彼此吻合,说明“离线单位换算与实用计算工具”是有源码支撑的定位。发布信息可以写“不申请网络权限,核心换算与计算在本地完成”,但不应扩大为“绝不产生任何系统级数据流动”,因为系统备份配置仍需单独说明。

十二、静态汇率要避免实时暗示

ExchangeForm.ets明确使用CalcEngine.CURRENCIES内置静态汇率表,不发起网络请求。README 还说明这是约 2024 年参考汇率。因此,正确的商店表述应是“支持离线汇率参考换算”或“使用内置参考汇率”,并在页面中给出非实时、仅供参考的提示。

以下表述不应出现:

实时汇率 每日自动更新 连接全球金融市场 提供交易级准确结果

这既是功能真实性问题,也是离线声明的一致性问题。若未来接入在线汇率,需要重新检查网络权限、域名、隐私政策、数据处理、错误态、缓存策略和 AGC 隐私标签,不能只换一个接口。

十三、系统备份让“仅本机”需要更准确

backup_config.json的真实配置是:

{ "allowToBackupRestore": true }

模块还注册了EntryBackupAbility,虽然当前回调只记录日志,没有自定义上传逻辑,但“允许系统备份恢复”与“数据只保存在当前设备、绝不会迁移”的绝对表述并不完全等价。Preferences 中的历史、收藏和设置是否进入系统备份范围,需要结合系统默认行为、备份配置和目标版本实测确认。

发布前有两条可选路径:

  1. 产品确实允许系统备份恢复:在隐私说明中准确披露系统能力及数据范围;
  2. 产品坚持严格本机不迁移:关闭不需要的备份能力,并验证升级和恢复行为。

不能一边保留allowToBackupRestore: true,一边在平台和应用内作无法兑现的绝对承诺。

十四、占位联系方式是明确阻断项

BrandConfig.ets目前仍包含:

export const BRAND_FEEDBACK_EMAIL = 'your-real-email@example.com'; export const BRAND_COPYRIGHT_OWNER = '开发者名称';

应用内“反馈与建议”、用户协议、隐私政策和“关于”页面都会使用这些值。EntryAbility虽然能检测占位符并输出警告,但不会阻止构建,因此一个可编译的包仍可能把示例邮箱和“开发者名称”带进商店。

这两项必须在候选包构建前替换为真实、可联系且与开发者主体一致的信息,并进入自动门禁:

if (email.includes('example.com') || owner === '开发者名称') { throw new Error('Release identity placeholders remain'); }

这不是为了追求代码洁癖,而是为了让隐私主体、版权材料、AGC 开发者信息和应用内文本能够互相验证。

十五、生产依赖为空仍要检查最终包

oh-package.json5只有@ohos/hypium@ohos/hamock两个开发依赖,没有生产依赖。这支持“无第三方运行时 SDK”的判断,但发布复查不能到此为止。

最终包还可能包含本地 HAR、系统能力引用、资源或构建脚本注入内容。因此应对候选包做成分和权限解析,并与源码清单比较。若 AGC 隐私标签填写“未集成第三方 SDK”,证据应来自最终包扫描,而不只是根目录配置。

本文没有解析最终候选包,所以只表述为“当前包管理配置未声明生产依赖”,不把它写成已通过平台 SDK 检测。

十六、审核指南 3.1 需要真实生命周期证据

源码配置正确不能替代运行稳定性。发布候选包至少应完成一次标准闭环:

  1. 安装候选 APP;
  2. 冷启动并进入首页;
  3. 完成单位转换;
  4. 完成一个计算器流程;
  5. 添加历史与收藏;
  6. 切换设置并重启验证恢复;
  7. 打开隐私政策和关于页面;
  8. 切后台、恢复、返回和退出;
  9. 卸载应用。

还要观察崩溃、闪退、白屏、冻结、无响应、路由失效、按钮重复触发和系统栏可读性。README 当前把单元测试和真机验证标为未完成,因此本文不能声称 Guideline 3.1 已通过,只能把它列为发布门禁。

十七、审核指南 2.19 也要做负向确认

当前工程无网络权限、无广告、无推送、无账号、无支付,代码形态较简单,未发现需要后台常驻、悬浮窗、自动启动或干预其他应用的业务理由。这降低了恶意行为审查风险,但仍应在最终包中确认:

  • 没有隐藏入口或动态加载绕过;
  • 没有未经用户触发的后台任务;
  • 没有干预其他应用或系统功能;
  • 没有使用未公开接口或漏洞式方案;
  • 没有与功能无关的权限和 SDK。

“功能简单”不是免检理由。发布复查需要保存最终包扫描结果,并让所有系统能力都能对应到可见、可逆、用户主动触发的场景。

十八、建立可执行的发布清单

把本文发现转成门禁后,建议使用如下清单:

门禁当前状态发布要求
包名源码为com.hmapp.universalconverter与候选包、AGC 一致
版本源码为1.0.0/1000000与包内、版本页一致
名称源码“万能转换器”,README 含 Pro统一后再构建
设备phoneAGC 与素材仅选手机
权限空数组最终包复核仍为空
依赖无生产依赖最终包扫描确认
图标1024 方图,背景有透明像素背景 Alpha 全 255
联系方式示例邮箱替换真实值
版权主体占位值与开发者资质一致
离线声明基本一致补充静态汇率与备份边界
测试源码有用例,未见本次报告执行并保存报告
真机冒烟README 未勾选完成安装到卸载闭环

清单中的“当前状态”只描述本文实际读取的证据。每项完成后还要附文件、截图、报告或包哈希,避免口头勾选。

十九、AGC 操作必须保存后回读

进入 AGC 后,应先核对目标 App ID、包名和开发者主体,再编辑应用信息。上传新包后不能停在“上传成功”,必须回到版本页打开包选择器,按版本代码、上传时间和大小选择目标包,保存,再重新进入页面确认绑定结果。

同样,图标、截图、隐私、国家地区、内容分级、版权信息和设备类型每次修改后都要看可见预览或保存状态。遇到短信、验证码、扫码、安全验证、法律确认或最终不可逆提交,应停止自动化并由账号持有人处理。

本文没有进行这些后台操作,因此没有 AGC 截图、版本绑定或公开 URL,也没有把任何字段写成“已验证”。

二十、结论:先让每一份证据指向同一个包

“万能转换器”的发布基础相当清晰:包名与版本明确,当前只支持手机,权限数组为空,运行时依赖为空,核心换算与计算具备离线实现,应用内也提供了隐私与关于入口。真正需要优先处理的不是再写一段宣传文案,而是修复四个可复核风险:

  1. 统一“万能转换器”和“万能转换器 Pro”的名称;
  2. 把分层图标背景改为完全不透明,并同步包内与 AGC 素材;
  3. 替换反馈邮箱和版权主体占位符;
  4. 明确系统备份恢复与“本地保存”声明的边界。

随后再生成唯一候选包,执行测试和安装启动核心流程卸载闭环,解析包内身份,上传并绑定到正确 AGC 版本,最后回读公开页面。只要任一步缺少证据,就停留在对应状态,不把“已构建”写成“已上架”,也不把历史队列元数据写成当前源码的审核结果。

官方资料可参考华为开发者的 提交 HarmonyOS 应用、应用图标配置与开发、应用图标设计规范、AppGallery Connect 概览、应用市场审核政策、审核指南 3.1 兼容性与运行稳定性 与 审核指南 2.19 恶意行为。平台规范会更新,具体字段、素材和流程应以提交当日官方文档与 AGC 页面为准。


AI 辅助声明:本文在人工核对真实 HarmonyOS 工程配置、页面文案与本地实现后,使用 AI 辅助整理结构、润色表达并生成配图;工程能力、发布阻断项与验证边界均以文中列出的源码证据为准。

CSDN-SERIES:ALL-163250315

http://www.jsqmd.com/news/1391961/

相关文章:

  • 2026 年至今,岳阳靠谱的高海拔干式变压器供应厂家竞争格局,山巅矗立的这玩意儿,居然比平原设备少费30%电?背后藏着行业大秘密 - 行业推荐官【认证】
  • Codex客户端第三方增强工具Codex++配置踩坑记录
  • 法学硕士论文降AI教程:法律专业研究生论文AIGC超标免费4.8元知网达标完整操作指南 - 还在做实验的师兄
  • 2026年抚顺防冻服选购盘点:澳丰防护及优质供应商梳理 - 小范同学a
  • 为什么济南企业的济南英文网站建设必须避开这三个坑?资深开发者带你从0到1打造国际化品牌
  • m4s文件打不开?1分钟免转码无损合并,B站缓存视频转MP4一步到位
  • 八大网盘直链下载一步到位:网盘直链下载助手的完整上手指南
  • Windows Hyper-V虚拟化技术从入门到实战:开启、配置与网络管理
  • 从零开始学网安实战,当白帽黑客的第一天。立贴为证,绝不放弃!
  • Windows 不装模拟器也能安装 APK?APK Installer 上手实测与避坑指南
  • 驾照公证在哪里办?办理攻略来了 - 快讯投递
  • 2026年深度学习基石:从零实现Autograd与激活函数全景选型指南
  • 视频转录音哪个好-2026常用工具亲测整理了靠谱实用的选择
  • 外语苦手逆袭手册:Translumo实时屏幕翻译工具四阶进阶指南
  • 2026年南京企业家社群哪家值得推荐?避坑指南收好 - 甄选测评馆
  • Kubernetes——基于域名访问与东西/南北流量管理
  • 2026合肥理工学校西藏中职班招生简章 - 我叫小周
  • 告别反复折腾,一份脚本管好 Windows 和 Office 的激活:KMS_VL_ALL_AIO 使用手记
  • FTP、FTPS与SFTP:文件传输协议演进、安全机制与场景选型指南
  • 2026 怎么选靠谱的录音转文字软件解决方案?这几个不踩雷值得大家选
  • 在 Windows 上搞定安卓 APK 安装,这次不用再折腾命令行
  • 信创改造选什么智能运维平台靠谱?全维度深入解析
  • 从一张照片到一件浮雕:用ImageToSTL完成图片转STL的全过程
  • 软考网络工程师|案例分析:RIP、OSPF、路由引入与故障排查完整考点总结
  • DDrawCompat 兼容层上手攻略:半小时让 20 年前的老游戏在现代 Windows 上跑起来
  • 高压开关机械特性测试仪操作使用说明 - HVHIPOT
  • 洗衣学习品牌 - 甄选测评馆
  • pyQT中的文本部件及其区别
  • 车载摄像头入门系列(1)车载摄像头发展历程
  • 免模拟器在 Windows 上装安卓应用:APK-Installer 全流程指南