一、分布式能力集成:权限与状态同步陷阱
-
设备发现失败(TOP1问题)
- 根因:
- 62%的故障因设备未登录相同华为账号导致;
- 本地防火墙阻断分布式软总线通信(需开放端口);
- 未在
module.json5
声明ohos.permission.DISTRIBUTED_DATASYNC
权限。
- 解决方案:
命令行验证设备状态:// module.json5配置 "requestPermissions": [ { "name": "ohos.permission.DISTRIBUTED_DATASYNC" }, { "name": "ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE" } ]
hdc shell hilog -t DistributedService
。
- 根因:
-
跨设备状态不同步
- 典型报错:
handleStartContinuation: ScheduleSaveData failed
- 修复关键:
- 实现
IAbilityContinuation
接口时,确保onSaveData()
和onRestoreData()
返回true
; - 分布式数据同步需设置冲突解决策略(如
LAST_WIN
)。
- 实现
- 典型报错:
二、性能优化:渲染卡顿与资源泄漏
-
列表滚动卡顿(资讯应用重灾区)
- 错误实践:直接使用
<FlatList>
导致主线程阻塞。 - 优化方案:
效果:帧率提升40%,内存占用下降25%。import { HarmonyList } from '@react-native-oh/react-native-harmony'; <HarmonyList data={newsData} lazyRenderingThreshold={1.5} /> // 仅渲染可视区域+1.5屏缓冲
- 错误实践:直接使用
-
内存泄漏三大雷区
泄漏类型 检测工具 修复方案 全局Context持有 HiChecker 使用 WeakReference
替代强引用未释放传感器监听 MemoryProfiler onPageHide()
中调用Sensor.release()
异步任务未取消 DevEco Trace 组件销毁前调用 AbortController
三、安全与权限配置:网络与敏感权限
-
网络请求失败(错误码6003)
- 根因:证书指纹与AGC平台配置不匹配。
- 根治步骤:
- 检查
module.json5
的INTERNET
和GET_NETWORK_INFO
权限; - 清除HMS Core缓存:
设置 > 应用 > HMS Core > 存储 > 清除缓存
。
- 检查
-
相机/麦克风权限失效
- 特殊要求:需声明
usedScene
指定使用场景:{ "name": "ohos.permission.CAMERA", "reason": "用于新闻图片拍摄", "usedScene": { "abilities": ["MainAbility"] } } ``` [1](@ref)
- 特殊要求:需声明
四、工程化陷阱:编译与热更新
-
路径超长导致编译失败
- 现象:
@Entry decorator missing
(ArkTS路径超255字符) - 解决:项目移至根目录缩短路径。
- 现象:
-
热更新失效
- 根因:ArkCompiler优化模式阻断JS更新。
- 配置修复:
// entry/build-profile.json5 "arkOptions": { "optimizationLevel": "NONE" } ``` [5](@ref)
五、跨平台兼容性:多端差异处理
- API差异导致白屏
- 案例:H5端使用
alert
,App端需改用uni.showToast
。 - 方案:条件编译区分逻辑:
// #ifdef APP-PLUS uni.showToast({ title: "HarmonyOS提示" }); // #endif ``` [4,7](@ref)
- 案例:H5端使用
- 导航栏高度适配
- 避坑:使用UniApp内置CSS变量:
.navbar { padding-top: calc(var(--status-bar-height) + 10px); height: calc(44px + var(--status-bar-height)); } ``` [4](@ref)
- 避坑:使用UniApp内置CSS变量: