1.下载针对OpenHarmony的Flutter版本
仓库链接OpenHarmony-SIG/flutter_flutter,仓库里为mac和linux版本的配置。下面是在自己win本上的环境变量配置过程。
1.1 下载鸿蒙套件,这个并不需要申请了,可以直接去官网下载。
下载链接:下载中心 | 华为开发者联盟-HarmonyOS开发者官网,共建鸿蒙生态 我下载的是beta1的最后一个版本,建议下ide,因为如果下命令行那个配置签名比较复杂,下ide的话会自动配置签名,ide里面带有command line和sdk。
下载过程就比较简单一路next基本就没有问题。
1.2 git clone 上面链接中的代码
我看issue中说的是要选择dev分支,不要选master分支的,dev不断在更新相比master拥有更多功能,但最近我看dev分支已经合并到master分支上了,两者区别应该不会很大。下面是dev分支的clone命令。
git clone -b dev [email protected]:openharmony-sig/flutter_flutter.git
下载后,在环境变量系统变量path中添加
1.3环境变量配置(SDK,node,ophm,hvigor)以及国内镜像
(一)SDK配置
刚才下载的Deveco Stdio中有已经有了sdk
然后在配置环境变量中添加环境变量,其中的路径要根据自己的下载路径修改(下同),其中这个sdk的api版本是12。
(二)Node,ophm ,hvigor配置配置
下图中,需要配置的环境变量德文都在tools文件夹下。
在环境变量中的系统变量path变量中追加 Node,ophm ,hvigor的路径
(三)设置Dececo_SDK的环境变量
这里可能会引起后面的一个错误,因为下面路径中DevEco Stdio中有空格,会导致后面无法识别到正确的路径。但影响不大,后面可以修改。
(四)国内镜像
同样在系统变量中添加
PUB_HOSTED_URL=https://pub.flutter-io.cn FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
1.4 验证是否正确配置
打开cmd命令行窗口,输入
flutter doctor -v
运行后,正确配置效果如图。确保flutter和HarmonyOS配置成功。
第一次输入flutter doctor -v 中, 会出现这个错误。
原因是DevEco Stdio之间有空格,cmd命令行中自动截断,导致路径错误,这里只需在路径前后加上双引号就可以解决。
flutter config --ohos-sdk="×××\DevEco Studio\sdk\HarmonyOS-NEXT-DB1\openharmony"
2.下载或构建鸿蒙Flutter Engine的构建产物(此步可以不需要,根据最新的,如果不指定--local engine,默认是用云端的引擎)
应用构建依赖鸿蒙Flutter Engine构建产物,这里建议直接使用官方已经构建好的产物,下载链接:Flutter Engine构建产物,自己去构建费时费力换可能构建失败,下载好的产物为散个压缩包,分别为debug profile release,对需要打包的类型进行解压,解压后的文件夹如下:
这里我选择的是release版本,
FlutterTools指令运行参数中添加--local-engine字段来指定下载的engine:--local-engine=src/out/<engine产物目录\>
,若不使用--local-engine来指定engine,默认使用云端最新版engine。 使用示例:flutter build hap [--local-engine=/Users/admin/Documents/flutter_engine/src/out/ohos_debug_unopt_arm64]
3.创建Flutter工程
一.创建工程
# 创建工程 方式一 该方式只创建了ohos平台
flutter create --platforms ohos <projectName>
# 创建工程 方式二 该方式创建了android,ios,ohos三个平台
flutter create <projectName>
二. 进入工程根目录编译
cd /Users/kk/Desktop/develop/project/hmosdemo
编译产物在
${projectName}/ohos/entry/build/default/outputs/default/entry-default-signed.hap
下
然后hap打包,可以选release,debug,profile三个版本,debug版本包相对大一点。
flutter build hap --release/debug/profile
如果你想使用之前你下载的Flutter Engine的构建产物,可以使用下面这条指令,后面的参数对应的是你上一步解压出来的engine产物路径
flutter build hap --local-engine = E:\flutter_flutter\engine-windows-x86\ohos_release_arm64-1806-windows-AMD64\src\out\ohos_release_arm64
下图即为打包为鸿蒙hap的结果。
三. 鸿蒙真机运行Flutter项目
一. 在运行到真机之前,需要对项目进行签名,具体操作如下:
在file中选Project Structure 勾选红色箭头所指位置,或者也可以在右上角红色箭头出打开。勾选后,打包时就会自动签名。
二. 通过鸿蒙真机运行Flutter项目(目前只有arm架构的mac才支持模拟器模拟)
-
通过
flutter devices
指令发现真机设备之后,获取device-id
方式一:进入项目目录指定构建方式编译hap包并安装到鸿蒙手机中
flutter run --debug -d <deviceId>
方式二:进入工程根目录编译hap包,然后安装到鸿蒙手机中
flutter build hap --debug
hdc -t <deviceId> install <hap file path>
方式三:使用DevEcoStudio 选择设备为真机,在此之前需要在手机打开开发者选项,连接到手机后,点击启动。
我手里的手机还未申请到鸿蒙next版本的资格,就不做展示了。
我遇到的几个比较难的几个问题问题
自动签名失败,我自己也重装了ide,还有重建了项目,但自动签名就是勾选不上,build-profile.jason5文件中signingConfigs也一直空的。这里解决办法是自己去配置签名。这个官方文档中手动配置签名的教程。https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/signing-0000001587684945-V2配置成功后build-profile.jason5文件中应该长这样。
还遇到过SDK缺失的问题,SDK目录下的内容我照着别人看了一下也没缺少,目录里的文件我也没改动,但是有错误,在第一天有错误的时候,我重装了Deveco studio,重新创建了项目,但依旧有这个问题,网上有个issue问题和我差不多,但他是run的时候显示缺失,虽然他的问题现在还没解决,但我还是照着下面的评论做了一个,依旧有报错,但过了一天,我重建了项目,就顺利打包了,很神奇只能说。