1、闲鱼鸿蒙原生应用移植实践阿里巴巴高级无线开发专家/邬吉风个人介绍 邬吉风,阿里巴巴高级无线开发专家,毕业于浙江大学。开源项目fish-redux,flutter_boost作者,闲鱼终端基础架构负责人。分享纲要鸿蒙原生开发的必要性如何有效评估复杂度闲鱼的移植方案实操的技术方案详解目前的进展和问题小结和展望为什么要鸿蒙原生开发可以预见,当HarmonyOS Next开始发布/升级,将对业务产生巨大影响。华为现网手机设备总量月5.2亿,如果2024年底(新发+升级)HarmonyOS Next设备达到1亿,大约影响华为渠道19%的用户。还在犹豫要不要干的时候?如何有效评估复杂度工作主要包括六大部分
2、工作主要包括六大部分1.原生业务-Java/OC代码用ArkTS完成重写。2.原生框架-Java/OC代码用ArkTS/C+完成重写。3.跨端业务不用改,平移后,回归验证或简单适配性修改。4.跨端容器(Kun/Flutter/Web)Java/OC代码用ArkTS完成重写,C+库重编译。5.二三方SDK接入,部分涉及Java/OC代码用ArkTS重写。6.鸿蒙环境/编译/构建/灰度等工作流的支持改造。核心围绕语言差异,选择以重写为主,还是移植为主,会极大影响项目复杂度核心围绕语言差异,选择以重写为主,还是移植为主,会极大影响项目复杂度闲鱼选择以移植为主的方案40%40%10%10%KunFlu
3、tterWebNative闲鱼重度使用跨端UI框架90%90%的业务以跨端的业务以跨端UIUI框架来承接框架来承接先从 Web For OHOS 移植说起API API 扩展扩展同层渲染同层渲染23UA UA 兼容兼容1整体原则:尽可能的减少对业务层的适配成本Chromium99容器定制容器定制4基础可用Flutter For OHOSFlutter是什么?为什么要单独做鸿蒙上的适配?Flutter不是天然跨平台的么?12官方支持六个平台:iOS、Android、Web、Windows、macOS、Linux。其他系统,如HarmonyOS,需自定义将Flutter嵌入为使之成为平台的UI工具
4、包选择。Flutter是Google推出的开源UI工具包。它具有高性能、跨平台、良好的开发者体验、和完善的社区生态等特点移植Flutter能否像移植网页一样简单?结论:像Web一样移植Flutter代码,但不简单ReactNativeReactNativeFlutterFlutterNativeNativeWeb Web 0%100%接近100%在鸿蒙系统上,我们能几乎复用100%的Flutter(Dart)代码,可以类比是一次对不同浏览器版本的兼容代码复用率对比代码复用率对比如何移植Flutter代码到OHOS几大关键问题亟待解决如何在鸿蒙系统上运行Flutter(Dart)代码,比如一个“
5、Hello World?”如何以混合的方式运行Flutter、原生鸿蒙、Web页面?12如何解决自身和三方的Flutter Plugins代码的移植?3音视频场景能力-外接纹理方案4如何构建独立的编译流水线?5工具链工具链3.2运行时运行时3.1Android,iOSOHOSOHOSFlutter For OHOS由华为官方,闲鱼提交了30多个PR-gn 编译脚本、交叉编译工具链-命令行,flutter devices&flutter precache等涉及shell目录下代码涉及attachment/tools目录下代码diffdiff 20230907/ dev :openharmony-
6、sig/flutter_flutter.git-渲染和Surface-事件-线程-插件机制Flutter架构图核心适配代码接近100%跨端复用123如何在鸿蒙系统上运行Flutter(Dart)代码,比如一个“Hello World?”FlutterBoost For OHOS 目前在 Flutter For OHOS的基础上,混合栈 FlutterBoost的鸿蒙版适配工作已经初步完。如果有依赖FlutterBoost的团队可以使用,https:/ FlutterBoost是一种非常特殊的Flutter Plugin,它和Embedder有很高的耦合关