鸿蒙应用审核实战:往来记应用上架审核问题修复全记录
永远不要在生产环境使用测试数据,即使用户没有数据也要展示真实状态空状态本身就是一种重要的用户反馈考虑添加数据引导功能,鼓励用户添加首条记录这次华为应用审核问题的修复过程,虽然紧张但收获颇丰。我们不仅解决了当前问题,还建立了一套完善的深色模式和多设备适配体系。希望我们的经验能够帮助到正在或即将面临类似挑战的开发者们。关键体会:遵循平台规范不是限制,而是提升应用品质的机会。每一次审核反馈都是让应用变得
📱 项目背景
最近,我们的个人记账应用「往来记」在提交华为应用商店审核时,收到了6个审核问题反馈。经过一周的紧张修复,我们成功解决了其中5个问题,还有1个需要设计师协助。本文将完整记录这次修复过程,希望能为其他鸿蒙应用开发者提供参考。
🔍 问题总览与修复成果
| 问题类型 | 问题数量 | 修复状态 | 修复难度 |
|---|---|---|---|
| ❗ 必须修复 | 1个 | ✅ 已完成 | ⭐⭐ |
| ⚠️ 建议优化 | 5个 | 4完成 + 1待办 | ⭐⭐⭐ |
修复效率:83.3%问题已解决,剩余1个为图标资源问题需设计师协助。
💥 关键问题1:统计分析模块的测试数据
问题描述
审核发现统计分析模块包含硬编码的测试数据,这违反了华为审核指南3.4条。
修复方案
核心思路:用真实的空状态替代模拟数据
修复前代码:
// 问题代码:硬编码测试数据
if (this.statistics.recordCount === 0) {
console.info('生成测试数据用于演示');
this.statistics = {
totalReceived: 5000, // 虚假数据
totalSent: 3000, // 虚假数据
netAmount: 2000, // 虚假数据
// ... 更多测试数据
};
}
修复后代码:
// 解决方案:真实的空状态
if (!this.statistics) {
console.warn('统计数据为空,设置默认值');
this.statistics = {
totalReceived: 0, // 真实零状态
totalSent: 0, // 真实零状态
netAmount: 0, // 真实零状态
recordCount: 0, // 真实零状态
personCount: 0, // 真实零状态
monthlyTrend: [] // 空数组
};
}
经验总结
- 永远不要在生产环境使用测试数据,即使用户没有数据也要展示真实状态
- 空状态本身就是一种重要的用户反馈
- 考虑添加数据引导功能,鼓励用户添加首条记录
🎨 问题2&6:深色模式完整适配
问题描述
两个相关问题:深色模式下文字对比度不足、应用未完全适配系统深色模式。
技术方案
我们创建了一个统一的深色模式常量管理类:
文件结构:
entry/src/main/ets/common/DarkModeConstants.ets
核心代码:
export class DarkModeConstants {
// 背景色系统
static readonly BACKGROUND_PRIMARY_LIGHT = '#FFFFFF';
static readonly BACKGROUND_PRIMARY_DARK = '#000000';
static readonly BACKGROUND_CARD_DARK = '#262626';
// 文字颜色系统
static readonly TEXT_PRIMARY_LIGHT = '#000000';
static readonly TEXT_PRIMARY_DARK = '#FFFFFF';
static readonly TEXT_SECONDARY_DARK = '#A6A6A6';
// 输入框颜色系统
static readonly INPUT_BG_DARK = '#333333';
static readonly INPUT_TEXT_DARK = '#FFFFFF';
static readonly INPUT_PLACEHOLDER_DARK = '#737373';
// 动态获取颜色方法
static getBackgroundPrimary(isDarkMode: boolean): string {
return isDarkMode ? this.BACKGROUND_PRIMARY_DARK : this.BACKGROUND_PRIMARY_LIGHT;
}
static getTextPrimary(isDarkMode: boolean): string {
return isDarkMode ? this.TEXT_PRIMARY_DARK : this.TEXT_PRIMARY_LIGHT;
}
}
对比度验证
我们严格按照WCAG 2.1 AA标准进行色彩对比度验证:
| 元素组合 | 颜色组合 | 对比度 | 标准要求 | 结果 |
|---|---|---|---|---|
| 主要文字 | #FFFFFF ↔ #000000 | 21:1 | ≥4.5:1 | ✅ 优秀 |
| 输入框文字 | #FFFFFF ↔ #333333 | 12.6:1 | ≥4.5:1 | ✅ 优秀 |
| 次要文字 | #A6A6A6 ↔ #262626 | 5.3:1 | ≥4.5:1 | ✅ 合格 |
实现要点
- 使用@StorageLink监听系统主题:
@StorageLink('darkMode') isDarkMode: boolean = false;
- 统一应用颜色:
// 页面背景
.backgroundColor(DarkModeConstants.getBackgroundPrimary(this.isDarkMode))
// 文字颜色
.fontColor(DarkModeConstants.getTextPrimary(this.isDarkMode))
// 输入框样式
TextInput({ placeholder: '请输入' })
.fontColor(DarkModeConstants.getInputText(this.isDarkMode))
.backgroundColor(DarkModeConstants.getInputBackground(this.isDarkMode))
📱 问题4:横竖屏切换支持
问题描述
应用在折叠屏设备上不支持横竖屏自动切换。
修复方案
修改 module.json5 配置文件:
{
"module": {
// 支持多种设备类型
"deviceTypes": [
"phone", // 手机
"tablet", // 平板
"2in1" // 折叠屏/二合一设备
],
"abilities": [
{
"name": "EntryAbility",
"orientation": "auto_rotation", // 关键:启用自动旋转
// ... 其他配置
}
]
}
}
适配效果
- ✅ Mate X5 折叠屏设备完美支持
- ✅ 横屏模式下布局自动调整
- ✅ 旋转动画流畅自然
🖼 问题3:应用图标规范(待办)
问题分析
当前图标尺寸为216x216px,但华为要求提供1024x1024px的高分辨率图标。
解决方案
此问题需要设计师协助,技术团队已准备好处理流程:
-
资源要求:
- 前景图:1024x1024px PNG格式
- 背景图:1024x1024px PNG格式(可选)
-
工具要求:
- DevEco Studio 5.0.5.315或更高版本
- 使用内置的「Create App Icon」功能
-
处理流程:
设计师提供1024px图标 → 导入DevEco Studio → 自动生成多分辨率资源 → 替换media目录文件
🛠 技术收获
1. 深色模式适配最佳实践
- 提前规划:在项目初期就考虑深色模式支持
- 统一管理:创建颜色常量类维护色彩系统
- 对比度验证:使用专业工具检查色彩可访问性
- 渐进增强:从核心页面开始,逐步覆盖所有界面
2. 多设备适配策略
- 声明式配置:在module.json5中正确声明设备支持
- 响应式布局:使用自适应布局组件
- 测试覆盖:确保在真实设备上测试各种场景
3. 审核准备技巧
- 自查清单:提交前按照审核指南逐项检查
- 真实数据:移除所有测试和模拟数据
- 规范遵循:严格遵循华为UX设计规范
📈 性能影响评估
本次修复对应用性能的影响微乎其微:
- 包体积:增加约2KB(颜色常量类)
- 运行时性能:无感知影响
- 内存占用:颜色切换几乎不占用额外内存
🎯 后续优化计划
短期计划(v1.0.2)
- 完成1024x1024px图标资源更新
- 全面测试深色模式所有页面
- 验证横竖屏切换的用户体验
中期计划(v1.1.0)
- 为所有页面添加深色模式支持
- 优化大屏设备的横屏布局
- 添加更多无障碍功能
长期规划
- 建立完整的设计系统
- 实现动态主题切换
- 支持高对比度模式
💡 给开发者的建议
通过这次修复经历,我们总结了以下几点建议:
- 审核前自查:使用华为提供的审核指南作为检查清单
- 深色模式早做:不要等到最后才添加深色模式支持
- 设备覆盖测试:至少在两种不同设备上测试应用
- 规范文档常看:华为的UX设计规范是很好的参考资源
- 用户真实体验:始终从真实用户的角度思考问题
🔗 参考资料
🎊 结语
这次华为应用审核问题的修复过程,虽然紧张但收获颇丰。我们不仅解决了当前问题,还建立了一套完善的深色模式和多设备适配体系。希望我们的经验能够帮助到正在或即将面临类似挑战的开发者们。
关键体会:遵循平台规范不是限制,而是提升应用品质的机会。每一次审核反馈都是让应用变得更好的契机。
附:鸿蒙学习资源直达链接
https://developer.huawei.com/consumer/cn/training/classDetail/cfbdfcd7c53f430b9cdb92545f4ca010?type=1?ha_source=hmosclass&ha_sourceId=89000248
更多推荐

所有评论(0)