首页 > 其他分享 >flutter开发适配鸿蒙HarnomyNext系统过程步骤以及问题记录

flutter开发适配鸿蒙HarnomyNext系统过程步骤以及问题记录

时间:2024-09-25 20:06:09浏览次数:1  
标签:engine HarnomyNext -- 适配 ohos PATH HOME flutter

flutter项目适配鸿蒙HarnomyNext系统步骤记录

本人是在Window环境下开发

第一:环境搭建

1. 下载鸿蒙next开发工具DevEcho Studio,类似Android Studio的工具,页面都类似

  • 鸿蒙开发套件官方下载地址:https://developer.huawei.com/consumer/cn/download/
  • 下载之前需要先登录,后面的模拟器创建还要开发者验证、审核啥的,好在审核进度还可以,我这边提交申请后差不多两个小时审核通过
  • 找到自己电脑系统匹配的版本下载,我的电脑是Window的就选择Window版本下载
  • 安装步骤比较简单,一步步next直到完成即可,新版本的工具已经集成node和ohpm等环境进去了,不用单独下载安装了

2. 下载鸿蒙版flutter

  • 项目地址:https://gitee.com/openharmony-sig/flutter_flutter
  • 没错是国内地址,这套是国内开发者社区改造flutter sdk得到的,截至目前最新版本支持到flutter3.7.12版本
      git clone https://gitee.com/openharmony-sig/flutter_flutter.git
      git checkout -b dev origin/dev  //我们使用dev版本,dev不断在更新相比master拥有更多功能
    

3. 下载FlutterEngine构建产物(非必选项)

  • Flutter工程构建依赖ohos_debug_unopt_arm64(debug版本)与ohos_release_arm64(release版本)
  • FlutterTools指令运行参数中添加--local-engine字段来指定下载的engine:--local-engine=src/out/<engine产物目录> ,使用示例:flutter build hap --debug --local-engine=E:\ohos\flutter_image\src\out\ohos_debug_unopt_arm64
  • 若不使用--local-engine来指定engine,默认使用云端最新版engine //所以可以不指定,所以这步是可选的
  • 下载编译产物engine本地路径必须带上src/out目录; 解压后,存放到一个目录(engine本地路径必须需带上src/out目录):如:E:\ohos\flutter_image\src\out
  • 我这边测试运行的时候是没有指定的,也是能成功的,因为指定不方便DevEcho Studio直接跑运行的时候找不到指定参数的地方,只能命令行运行才能指定参数,麻烦又不好用
  • 如果想下载的引擎的话,可以访问这个连接:https://docs.qq.com/sheet/DUnljRVBYUWZKZEtF?tab=BB08J2

4. 需要安装java jdk17版本

  • flutter项目是要依赖java jdk的,需要安装java jdk17版本
  • 查看java jdk版本方法:java -version
  • 我的开发环境刚好是java jdk 17的,就不用再重新安装了,怎么安装自信百度google,也不知道其他的jdk版本行不行没测试不知道。

5. 配置电脑环境变量

#window下系统环境变量--->环境变量添加如下变量配置。export是mac和linux下的配置方法,window下就是新建环境变量,变量名是PUB_HOSTED_URL,比哪里值是https://pub.flutter-io.cn
# 国内镜像
export PUB_HOSTED_URL=https://pub.flutter-io.cn    # PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn   # FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

# 拉取下来的flutter_flutter/bin目录
export PATH=/Users/admin/ohos/flutter_flutter/bin:$PATH  #PATH变量添加值 E:\ohos\flutter_flutter\bin

# HamonyOS SDK
export TOOL_HOME=/Applications/DevEco-Studio.app/Contents   # mac环境,  TOOL_HOME=E:\ohos\DevEcoStudio
export DEVECO_SDK_HOME=$TOOL_HOME/sdk   # command-line-tools/sdk,    DEVECO_SDK_HOME=%TOOL_HOME%\sdk
export PATH=$TOOL_HOME/tools/ohpm/bin:$PATH   # command-line-tools/ohpm/bin,   PATH变量添加值 %TOOL_HOME%\tools\ohpm\bin
export PATH=$TOOL_HOME/tools/hvigor/bin:$PATH   # command-line-tools/hvigor/bin,    PATH变量添加值 %TOOL_HOME%\tools\hvigor\bin
export PATH=$TOOL_HOME/tools/node:$PATH   # command-line-tools/tool/node/bin,    PATH变量添加值 %TOOL_HOME%\tools\node
export HDC_HOME=$TOOL_HOME/sdk/HarmonyOS-NEXT-DB1/openharmony/toolchains   # hdc指令(可选),这个hdc类似于Android开发的adb工具  HDC_HOME=%TOOL_HOME%\sdk\default\openharmony\toolchains

# 可选配置项(使用Android Studio 或者 Visual Studio Code调试时需要配置此项,jdk版本为17.0.12)
JAVA_HOME=/Users/admin/Documents/JDK/jdk-17.0.12.jdk/Contents/Home
PATH=$JAVA_HOME/bin:$PATH:.
export JAVA_HOME
export PATH

# 可选配置项(防止由于flutter鸿蒙版的git下载地址环境变量不匹配,影响后续的flutter项目创建)
export FLUTTER_GIT_URL=https://gitee.com/openharmony-sig/flutter_flutter.git  //FLUTTER_GIT_URL=https://gitee.com/openharmony-sig/flutter_flutter.git

第二:创建运行项目

1. 检测flutter创建鸿蒙运用条件是否可以了

  • 运行flutter doctor -v检查环境变量配置是否正确
[✓] HarmonyOS toolchain - develop for HarmonyOS devices
    • OpenHarmony Sdk at E:\ohos\DevEcoStudio\sdk, available api versions has [12:default]
    • Ohpm version 5.0.8-rc.1    #如果这里报x错误,说明上面的`PATH变量添加值 %TOOL_HOME%\tools\ohpm\bin`添加的环境变量ohpm的路径配置有问题
    • Node version v18.20.1      #如果这里报x错误,类似PATH配置的node路径有问题
    • Hvigorw binary at E:\ohos\DevEcoStudio\tools\hvigor\bin\hvigorw   #如果这里报x错误,类似PATH配置的hvigor路径有问题

2. 创建flutter项目

  • 创建工程 方式一 该方式只创建了ohos平台
    flutter create --platforms ohos <projectName>
  • 创建工程 方式二 该方式创建了android,ios,ohos三个平台
    flutter create <projectName>
  • 进入工程根目录编译hap包,创建完项目之后,要先执行这步build才能生成依赖,如果直接使用DevEcho Studio打开会报错找不到flutter.har依赖库
    flutter build hap --debug

3. 运行flutter项目到鸿蒙next手机

  • 方式一:通过flutter devices指令发现真机设备之后,获取device-id,进入项目目录指定构建方式编译hap包并安装到鸿蒙手机中 flutter run --debug -d <deviceId>
  flutter devices
  flutter run --debug -d <deviceId>
  • 方式二:进入工程根目录编译hap包,然后安装到鸿蒙手机中
  flutter build hap --debug
  hdc -t <deviceId> install <hap file path>    # 类似Android的adb安装:adb -s <deviceId> install <apk file path> 
  • 方式三:使用DevEcoStudio打开项目的ohos模块
1. File --> Project Structure --> Signing Configs --> 勾选Automatically generate signature --> Apply ,可以启用启动签名,第一次执行`flutter build hap`的时候也会提示到
2. 创建模拟器:Device Manager --> 进去根据提示可以插件模拟器,不过第一次创建还需要进行开发者验证以及审核。。。
3. 重点提示一下:创建的模拟器只有x86架构的,而这篇文章我们通过flutter_flutter构建的支持鸿蒙的flutter运用只支持arm64架构的,人家文档也说明了,所以啊其实创建模拟器对flutter应用也没啥用,#要真机运行

如图所示,flutter项目生成的hap安装包只包含arm64-v8a,没有v7架构的也没有x86架构的,目前只支持arm64-v8a的,所以要真机才能运行,这个是release版本的截图,debug版本也是一样的就不放图片了

第三:打包项目

1. 打包测试包

  • flutter build hap --debug
  • 如果需要指定engine的话,使用--local-engine参数
  • 使用flutter build hap --debug --local-engine=E:\ohos\flutter_image\src\out\ohos_debug_unopt_arm64,会提示失败src\out\ohos_debug_unopt_arm64\flutter.har找不到
  • 如果提示flutter.har找不到,那就是从项目目录下的ohos\har\flutter.har拷贝一份到src\out\ohos_debug_unopt_arm64目录下,然后再执行上一步就能成功

2. 打包正式包

  • flutter build hap --release 或者 flutter build hap

  • 如果需要指定engine的话,使用--local-engine参数

  • 比如flutter build hap --release --local-engine=E:\ohos\flutter_image\src\out\ohos_release_arm64,会提示失败src\out\ohos_release_arm64\flutter.har找不到

  • 如果提示flutter.har找不到,那就是从项目目录下的ohos\har\flutter.har拷贝一份到src\out\ohos_release_arm64目录下,然后再执行上一步就能成功

  • 参考文章:

flutter项目支持鸿蒙Next系统:https://gitee.com/openharmony-sig/flutter_samples/tree/master/ohos/docs/03_environment
编译flutter支持鸿蒙Next系统的flutter引擎:https://juejin.cn/post/7369519814640123919
https://blog.csdn.net/HarmonyOS_001/article/details/139841769

标签:engine,HarnomyNext,--,适配,ohos,PATH,HOME,flutter
From: https://www.cnblogs.com/yongfengnice/p/18431927

相关文章

  • Flutter 自定义国家选择器:基于 A ~ Z字母索引的列表跳转与侧边栏导航实现
    在许多移动应用中,我们经常需要通过字母索引快速跳转到目标位置,比如通讯录、国家选择等功能。这篇博客将带大家实现一个仿照通讯录的Flutter国家选择器。通过一个字母索引的侧边栏,用户可以快速跳转到目标字母分组。效果:1.项目需求与设计思路我们需要实现一个包含多个国......
  • 《程序猿之设计模式实战 · 适配器模式》
    ......
  • Flutter:如何修复/删除 .pub-cache 中的所有依赖项
    Flutter:如何修复/删除.pub-cache中的所有依赖项作者:坚果华为云享专家,InfoQ签约作者,OpenHarmony布道师,电子发烧友鸿蒙MVP,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括Flutter,小程序,安卓,VUE,JavaScript。如果您正在使用Flutter开发应用......
  • HarmonyOS开发之横竖屏旋转适配
    场景描述在HarmonyOS移动应用开发中,横竖屏旋转适配成为了一个不可或缺的功能点。特别是在HarmonyOSNEXT平台,开发者面临着更加多样化的设备和更复杂的用户交互需求。以下是我们在项目中遇到的一些关于横竖屏旋转的高频问题及解决方案:如何通过传感器自己感知方向并设置旋转:在不考虑......
  • 适配器模式详解:解决接口不兼容的利器
    适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式主要用于解决“接口不兼容”问题。一,适配器模式的结构适配器模式主要包含以下几个部分:目标接口(Target):客户期望的接口。......
  • 优化Flutter应用性能:避免常见错误与高效构建策略
    1.常见的错误规避策略慎用不透明度与动画结合:避免直接在动画中使用不透明度属性,因为可能会导致性能问题。若确需此类效果,可考虑使用AnimatedOpacity或FadeInImage等优化组件。动画构建器的精准应用:AnimationBuilder应专注于需要动画处理的特定小部件,避免用它来包装整个小部件树,以......
  • 设计模式之适配器模式
    适配器模式适配器模式(AdapterPattern)是一种结构型设计模式,它允许不兼容的接口之间进行交互。在软件工程中,适配器用于解决两个已有接口之间不匹配的问题,使得原本因接口不兼容而不能一起工作的类可以协同工作。基本概念目标接口(Target):客户期望使用的接口,它定义了客户需要的方法......
  • c#代码介绍23种设计模式_07适配器模式
    目录1、适配器模式2、类的适配器模式实现(ClassAdapterPattern.cs)3、对象的适配器模式实现(ObjectAdapterPattern.cs)4、适配器模式的优缺点4-1.类的适配器模式:4-2.对象的适配器模式5、使用场景6、.NET中适配器模式的实现7、实现思路1、适配器模式在实际的开发......
  • css使用@media响应式适配各种屏幕的方法示例
    定义和使用使用@media查询,你可以针对不同的媒体类型定义不同的样式。@media可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media是非常有用的。当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。PC端设备屏幕的宽度......
  • 英特尔®以太网网络适配器E810-CQDA1 / E810-CQDA2 网卡 规格书 e810 网卡 规格书 Int
    英特尔®以太网800系列网络适配器英特尔®以太网网络适配器E810-CQDA1/CQDA2在10到100Gbps的以太网速度下实现高效的工作负载优化性能关键特性•单、双端口QSFP28•应用设备队列(ADQ)•PCIExpress(PCIe)4.0x16•动态设备个性化(DDP)•以太网端口配置工具(EPCT)......