flutter 适配鸿蒙next,并打包为HAP安装包

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的时候显示缺失,虽然他的问题现在还没解决,但我还是照着下面的评论做了一个,依旧有报错,但过了一天,我重建了项目,就顺利打包了,很神奇只能说。

猜你喜欢

转载自blog.csdn.net/qq_45679453/article/details/141070110