一、跨平台编译与适配问题
1. 平台特定API不兼容
问题现象:使用Router模块的replaceUrl
或startAbility
等鸿蒙专属API时,编译跨平台工程报错can't support crossplatform application
。
解决方案:
- 改用
@ohos.router
的跨平台封装API,例如router.pushUrl
替代router.replaceUrl
- 涉及系统能力调用的功能(如启动Ability),使用条件编译区分平台代码:
typescriptCopy Code
if (deviceInfo.osFullName === 'HarmonyOS') { // 鸿蒙原生API调用 } else { // 跨平台替代方案 }
2. Android APK显示异常
典型表现:页面元素错位、资源加载失败或主题样式失效。
解决方案:
- 检查
resources
目录结构是否符合ArkUI-X规范(资源文件需置于common
子目录) - 使用
$r('app.media.icon')
统一资源引用路径,避免硬编码 - 在
build-profile.json5
中添加Android特定适配配置:
jsonCopy Code
"targets": { "android": { "compileSdkVersion": 34, "minSdkVersion": 21 } }
二、UI组件与交互问题
1. 焦点管理异常
常见场景:自定义弹窗中的焦点切换失效,或页面跳转后焦点残留。
解决方案:
- 为可聚焦组件显式设置
focusable(true)
和focusOnTouch(true)
属性 - 使用
FocusControl
模块管理焦点链:
typescriptCopy Code
import { FocusControl } from '@arkui/x'; FocusControl.requestFocus('componentId');
2. 浮层组件渲染异常
问题表现:遮罩层无法覆盖原生控件,或自定义浮层内容频繁重建导致性能下降。
解决方法:
- 优先采用
ComponentContent
方式创建浮层,避免使用CustomBuilder
频繁重建 - 设置
overlay
参数时添加align
和offset
精确定位:
typescriptCopy Code
Text('Content').overlay( CustomComponent(), { align: Alignment.Bottom, offset: { x: 0, y: -10 } } )
三、原生能力集成问题
1. 原生模块加载失败
典型报错:使用Bridge
模块时预览白屏,或跨平台编译后功能异常。
解决方案:
- 通过
deviceInfo.osFullName
判断运行环境,动态加载原生模块 - 将原生接口封装在独立工具类中,延迟初始化:
typescriptCopy Code
class NativeBridge { static getInstance() { if (deviceInfo.osFullName !== 'OpenHarmony') { return new AndroidBridge(); } return null; } }
四、性能优化问题
1. 冷启动连续丢帧
性能指标:动效环节超过0帧丢帧,加载环节超过6帧丢帧。
优化方案:
- 使用
LazyForEach
延迟加载非首屏组件 - 预加载关键资源,减少首帧渲染时的IO操作
- 通过
trace
工具分析主线程阻塞:
bashCopy Code
hdc shell hilog | grep "RenderFrame"
2. 复杂布局性能下降
表现特征:页面滑动卡顿
优化手段:
- 使用
Canvas
替代多层嵌套的布局结构 - 对静态内容启用
cachedCount
属性复用节点 - 避免在
build
函数内执行耗时操作
五、工具链使用问题
1. 热重载失效
常见原因:修改了平台相关代码或原生模块。
处理流程:
- 确认修改范围是否涉及
native
目录 - 使用
Build > Clean Project
清除缓存 - 对于iOS平台,重启Xcode派生数据目录