⚠️ 一、环境配置与工程初始化
-
包名格式错误
- 错误:使用
harmony.demo
(含保留词)导致编译失败。 - 解决:必须三段式命名(如
com.company.app
),并在manifest.json
中正确声明:"harmonyos": { "packageName": "com.yourcompany.app" } // 禁用harmony/ohos等关键词[1,4](@ref)
- 错误:使用
-
路径超长导致编译崩溃
- 现象:Windows系统路径超过255字符,引发
@Entry
装饰器冲突。 - 方案:项目移至根目录(如
D:\project
),缩短路径长度。
- 现象:Windows系统路径超过255字符,引发
-
第三方库冲突
- 典型错误:原生模块(如
@ohos/videocompressor
)与Uniapp的@Entry
重复注册。 - 解决:在
build-profile.json5
中排除冲突模块:"excludeModules": ["@ohos/videocompressor"][1,3](@ref)
- 典型错误:原生模块(如
📱 二、多设备适配与UI布局
-
折叠屏布局错位
- 根因:未使用响应式单位(vp/fp)和断点系统。
- 修复:
/* 折叠屏展开时分栏 */ @media (min-width: 1280vp) { .container { grid-template-columns: 1fr 2fr; } }[1,6](@ref)
-
组件使用不规范
- 高频问题:
- Navigation组件未设
titleMode
,导致标题栏异常; - Tab切换状态丢失(未用状态保持机制)。
- Navigation组件未设
- 正确示例:
Navigation().titleMode(NavigationTitleMode.Mini) // 规范声明标题模式[2](@ref)
- 高频问题:
-
资源路径不兼容
- 错误:其他平台用相对路径
@/static/icon.png
,鸿蒙需绝对路径。 - 条件编译适配:
// #ifdef HARMONYOS const img = '/resources/base/media/icon.png'; // #endif[1,4](@ref)
- 错误:其他平台用相对路径
🔧 三、鸿蒙特性集成问题
-
条件编译误用
- 典型错误:
- 混淆
APP-PLUS
(安卓/iOS)与APP-HARMONY
(鸿蒙)标识符; - 条件块内变量外部使用未隔离(引发未定义错误)。
- 混淆
- 正确分层:
// #ifdef APP-HARMONY import router from '@ohos.router'; // 鸿蒙专属API // #endif // #ifdef APP console.log("多端通用逻辑"); // 通用代码块隔离 // #endif[1,6](@ref)
- 典型错误:
-
分布式能力集成缺失
- 现象:跨设备数据同步延迟(如收藏内容未实时同步)。
- 方案:使用分布式KV数据库并设高优先级:
const options = { syncMode: 'HIGH', conflictResolution: 'LAST_WIN' };[1,5](@ref)
-
权限声明不合规
- 审核被拒主因:
- 未在
module.json5
声明麦克风/位置权限; - 动态申请权限前未弹隐私说明。
- 未在
- 合规流程:
// 先弹隐私协议弹窗 → 用户同意 → 调用权限申请API[2](@ref)
- 审核被拒主因:
⚡ 四、性能与资源管理
-
内存溢出(OOM)
- 场景:高清图片/视频未压缩,低端设备崩溃。
- 优化:
// 根据设备分级加载 <image :src="isLowEndDevice ? lowResImg : highResImg" />[1,9](@ref)
-
长列表卡顿
- 错误:直接渲染1000+条数据。
- 解决:
- 鸿蒙端用
HarmonyList
+ 虚拟滚动; - 分批加载数据(每次50条)。
- 鸿蒙端用
-
传感器资源泄漏
- 隐患:未在页面销毁时释放重力传感器监听。
- 修复:
onUnmounted(() => Sensor.release()); // 生命周期释放资源[2,5](@ref)
📦 五、发布与审核高频问题
-
热更新失效
- 根因:ArkCompiler优化模式阻断JS更新。
- 方案:关闭编译优化:
// build-profile.json5 "arkOptions": { "optimizationLevel": "NONE" }[1](@ref)
-
隐私政策不合规
- 驳回原因:
- 启动时未显式展示隐私协议;
- 权限拒绝后无降级方案(如禁用录音功能)。
- 强制要求:
// 拒绝权限时提供功能降级逻辑[2,7](@ref)
- 驳回原因:
-
签名证书有效期不足
- 审核要求:证书有效期需≥25年(建议30年)。
💎 关键优化策略总结
领域 | 易错点 | 终极方案 |
---|---|---|
环境配置 | 包名格式/路径超长 | 三段式命名 + 缩短工程路径 |
多端适配 | 折叠屏布局/资源路径 | vp/fp单位 + 条件编译路径隔离 |
鸿蒙特性 | 条件编译误用/权限缺失 | 标识符校验 + 动态权限时序控制 |
性能优化 | 长列表卡顿/资源泄漏 | 虚拟滚动 + 生命周期资源释放 |
审核合规 | 隐私政策/签名有效期 | 启动页弹窗 + 长有效期证书 |
调试建议:
- 使用
console.log(process.env.UNI_PLATFORM)
输出当前平台;- 通过
hdc shell hilog
捕获双引擎日志。
休闲娱乐类应用需重点关注媒体资源加载效率与跨设备交互体验,建议开发阶段用DevEco Profiler监控帧率与内存,提前规避性能瓶颈。