完全不懂鸿蒙开发,但是花了 4 天时间完成了鸿蒙 flutter 适配,整体还是非常顺利的。粗糙的总结一下。
环境搭建
这里没啥说的,跟着 OpenHarmony-SIG/flutter_flutter 文档里的步骤操作就可以。
版本适配
开发中的项目,一般都是追着最新的 flutter SDK和第三方库升级的。但是鸿蒙 flutter 目前仅支持 flutter sdk 3.7.12
, dart sdk 2.19.6
。面临的第一个问题就是版本降级。大部分是 dart sdk 的版本限制,较少的是 flutter sdk 版本限制。
- dart sdk 适配
dart 版本限制如果没有头绪还是很难处理的,那凑巧我发现在 pub.dev 的每个库都列出了 dart sdk
对应的库版本。然后在项目的 pubspec.yaml
中设置为可兼容的版本即可。
- flutter sdk 适配
如果第三方库中有下面的限制,执行flutter pub get
的时候也会出现版本不兼容错误。
如果出现 flutter sdk 限制,因为没有对应的参照表可以参考,所以会麻烦一些。不过有个笨点的方法。environment: flutter: '>=3.20.0'
从 pub.dev 进入到 git 仓库。查看库的pubspec.yaml
文件的历史纪录,找到兼容flutter 3.7.12
的版本。
上图中一个个看直到找到兼容 flutter sdk 版本。讨巧的方法是,看 flutter 3.7.12 发布之后相近的时间去找。
- 第三方库版本冲突适配
当多个库引用了不同同一个库的不同版本,对 dart sdk 版本不兼容时,会出现库冲突。解决办法是在pubspec.yaml
中的dependency_overrides
强制锁定版本。
经过以上步骤,基本已经解决了大部分版本冲突问题。
- 鸿蒙平台库适配
当引入了和平台交互的库时,第一时间是看鸿蒙是否已经做了适配,请看 - Flutter三方库适配计划, 在这个文档中已经实现的,是可以直接替换之前引用的库的。
如果鸿蒙没有适配就只有四种方案了,等官方适配、是否有其他人适配、自己适配、注释掉相关代码启用相关功能。
- 代码适配
因为 sdk 版本降级,可能会出现一些功能在旧版本不可用的情况,这部分一般会在过程的 Problems
中报错,很容找到。根据实际情况去修改代码解决。
- 插件、module 适配
没时间写了,暂时按住不表。可以参考 [其他] 部分的文档。
经过以上步骤基本上,基本已经实现了版本匹配的大部分问题。
其他
在使用的时候,可以感觉到鸿蒙在 flutter 上确实做的挺不错的。感觉不足的是,文档整理方面不够硬。尤其鸿蒙相关的资料就比较少,官方文档做了,入口却很难找,其实挺吃亏的。
OpenHarmony-SIG/flutter_samples
我觉得这是最值得一看的文档了,从环境搭建到插件、module 适配...
原创文章,转载请标明出处。技术相关可私信咨询。