Flutter适配HarmonyOS实践

大家在知道纯血鸿蒙到来的时候一定很疑惑,使用跨平台语言的到底该怎么办,不管使用Flutter还是使用原生鸿蒙开发,都会考虑到一个成本问题,特别是一些无法支持鸿蒙开发团队,已经使用跨平台开发已经很成熟的公司或者团队。

接下来我将把我团队中怎么把现有flutter项目适配到鸿蒙的分享给大家。

首先我们需要了解纯血鸿蒙系统和原生安卓系统不是一个系统,开发过Flutter项目的同学都知道,每多一个平台,项目结构里都会多一个对应平台的model文件夹,例如:

Flutter适配的鸿蒙系统的内容就都在ohos文件夹里面了,如果要编辑鸿蒙相关的原生内容,可以使用DevEco studio打开ohos,在你通过适配鸿蒙的flutterSDK build之后,ohos就已经是一个独立的鸿蒙项目了,类似于android和iOS文件夹一样,他们都是一个独立的项目。

接下来我将一步步实现如何适配

检查当然flutter项目的SDK版本

因为目前适配鸿蒙的FlutterSDK版本release是3.7.12,为了避免出现大的适配问题,建议现将你的flutter项目先升级或者降级到3.7.12.

如果你的项目也像我的一样高于3.7.12,就需要降级到3.7.12后再去下载安装适配过鸿蒙的flutterSDK 

如何使用适配过鸿蒙的flutterSDK

传送门:Flutter SDK 仓库

这个仓库的简介也说了,它是基于Flutter SDK对于OpenHarmony平台的兼容拓展,可支持IDE或者终端使用Flutter Tools指令编译和构建OpenHarmony应用程序

通过文档提示,下载并配置环境

运行 flutter doctor -v 检查环境变量配置是否正确,FutterOpenHarmony应都为ok标识,若两处提示缺少环境,按提示补上相应环境即可,如果环境都通过你会看到以下界面:

开始创建项目,通过命令创建你的项目

flutter create --platforms ohos <projectName>

到这一步,就已经成功了50%啦,打开创建好的项目,将项目里的ohos文件夹复制,然后贴到你的flutter项目中和Android,iOS文件夹平级的地方。

将IDE里的flutter,dart的SDK路径替换成下载的flutter_flutter

然后在IDE里执行flutter clean, 清理掉之前的build文件,再执行 flutter pub get

调试运行

如果有更新了HarmonyOSNext的手机,你可以直接链接手机,点击IDE的run运行,如果你能顺利运行并且打开APP,恭喜你成功了40%

通过DevEco打开ohos文件夹,我们发现Index.ets入口是打开FlutterPage,这就是新的SDK为我们做的,不需要编写鸿蒙原生代码就能实现flutter项目在鸿蒙设备上运行,FlutterPage 是一个用于在鸿蒙应用中集成Flutter页面的类。

适配Flutter插件库

其实到这里大部分项目是根本无法运行的,或者运行后只有个别页面能打开,这是因为flutter项目里用到了很多插件库,但是这些库的地址是没有适配,我们需要到插件库去找,看看有没有适配:OpenHarmony平台已兼容库,例如我们需要集成:device_info_plus

1搜索插件库名称:

2.点击后面的库名称,回跳转到对应的git仓库

3.添加适配仓库地址:这时候需要在flutter项目中的pubspec.yaml文件中,在dependency_overrides下添加适配库的地址

dependency_overrides:


  device_info_plus:
    git:
      url: "https://gitee.com/openharmony-sig/flutter_plus_plugins.git"
      path: "packages/device_info_plus/device_info_plus"

  webview_flutter:
    git:
      url: "https://gitee.com/openharmony-sig/flutter_packages.git"
      path: "packages/webview_flutter/webview_flutter"
  permission_handler:
    git:
      url: "https://gitee.com/openharmony-sig/flutter_permission_handler.git"
      path: "permission_handler"

然后执行flutter pub get ,会发现我们的功能可以正常使用了。

眼尖的同学也注意到了,为什么我上面的3个适配库的url都不一样,这是因为不同的适配库,在不同的项目里,如果只是在https://gitee.com/openharmony-sig/flutter_packages.git 这一个地址找,就会出现,找不到库地址的错误。

将项目中所有的插件库在适配库地址里过一遍,基本上flutter官方的库都适配了,另外纯dart插件库不需要适配鸿蒙

<think>好的,我需要帮助用户了解鸿蒙React Native(HarmonyOS RN)的相关信息。首先,我要整理用户提供的引用内容,看看有哪些关键点可以提取。 根据引用[1],Fabric是React Native的渲染系统,负责处理组件信息并传递给原生OS进行渲染。这可能意味着在鸿蒙上,Fabric需要适配鸿蒙的原生组件。引用[2]提到ohos_react_native是基于React Native 0.72.5版本,由社区支持并在OpenHarmony-SIG开源,而Flutter也有支持,但这里重点在RN。引用[3]和[5]涉及环境安装和项目初始化,说明用户可能需要具体的开发步骤和版本信息。引用[4]提到图片缓存方案FastImage在鸿蒙使用C-API调用原生能力,这展示了如何利用鸿蒙特性优化性能。 接下来,我需要将这些信息组织成结构清晰的回答,涵盖框架定位、技术架构、开发环境、实践案例、注意事项等部分。同时,要确保使用正确的中文表达和LaTeX格式。例如,在提到版本号时,可能需要用$0.72.5$这样的格式,但根据用户指令,行内数学表达式应该用$...$,所以版本号可能不需要,但如果有技术术语需要强调,可以适当使用。不过这里可能不太需要数学表达式,但需要遵守格式要求。 用户的问题是关于鸿蒙RN的资料,所以需要提供官方资料、社区资源和开源项目链接。例如引用中的OpenHarmony-SIG仓库和ohos_react_native项目。同时,要提到环境搭建的步骤,如安装Node.js、DevEco Studio,使用npx命令初始化项目,如引用[5]中的命令示例。此外,混合开发的注意事项,如组件兼容性和性能优化,引用[4]中的FastImage案例可以作为例子。 还要生成相关问题,可能涉及开发环境配置、组件兼容性处理、性能优化方法、与Flutter的比较等。这些问题需要基于回答内容自然延伸,帮助用户进一步探索。 需要确保回答真实可靠,引用正确来源。例如引用[2]提到ohos_react_native的版本和开源情况,引用[3]和[5]提供环境安装的具体步骤。同时,注意引用标识的正确添加,如每个引用末尾的[^n]。 最后,检查LaTeX语法是否正确,是否有不必要的数学表达式。例如,在提到版本号时,可能不需要数学格式,但如果有涉及变量或代码中的数字,可能需要使用$符号。但根据示例,代码部分用反引号包裹,所以可能不需要处理。确保行内公式正确,独立公式单独成段,但在这个回答中可能用不上独立公式。 总结,回答的结构应包括框架定位、技术架构、开发环境、实践案例、官方资料、注意事项,以及相关问题。确保每个部分的信息准确,引用正确,并符合格式要求。</think>### HarmonyOS React Native 开发框架解析 #### 1. **框架定位** HarmonyOS React Native(简称鸿蒙RN)是基于 React Native 0.72.5 版本的跨平台开发框架,由 OpenHarmony-SIG 社区支持并开源[^2]。它允许开发者使用 JavaScript/TypeScript 开发应用,并通过 Fabric 渲染系统将组件信息传递给鸿蒙原生系统完成渲染[^1]。 #### 2. **技术架构** - **渲染层**:鸿蒙RN通过 Fabric 组件渲染系统,将 React 组件转换为鸿蒙原生组件,例如使用 `FastImage` 组件调用鸿蒙的图片处理能力[^4]。 - **跨平台适配**:针对鸿蒙系统特性,通过 C-API 调用原生接口,优化性能与兼容性。 - **混合开发支持**:支持HarmonyOS 原生模块(如 UI 组件、系统服务)集成,实现渐进式开发[^3]。 #### 3. **开发环境配置** 1. **基础依赖**: - Node.js 16+、DevEco Studio、HarmonyOS SDK。 - 初始化项目命令: ```bash npx react-native@0.72.5 init AwesomeProject --version 0.72.5 [^5] ``` 2. **鸿蒙适配**:需配置 `ohos-react-native` 插件,并确保 `build.gradle` 中鸿蒙依赖项正确。 #### 4. **实践案例** - **图片加载优化**:使用 `FastImage` 组件替代默认 `Image`,通过鸿蒙原生能力提升加载性能。 - **混合页面开发**:在鸿蒙原生页面中嵌入 RN 组件,或反之,通过 `NativeModule` 实现双向通信。 #### 5. **官方资料与资源** - **开源仓库**: - [ohos_react_native](https://gitee.com/openatom-harmony/ohos_react_native)(OpenHarmony-SIG) - **文档参考**: - 《[HarmonyOS和React Native混合开发(一)之环境安装](https://developer.harmonyos.com)》[^3] #### 6. **注意事项** - **组件兼容性**:部分 React Native 第三方库需适配鸿蒙 API,例如导航库需依赖鸿蒙 `Router` 模块。 - **性能优化**:复杂动画建议使用鸿蒙原生能力(如 `ArkUI`)替代 RN 实现[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值