HarmonyOS 鸿蒙Next Flutter如何使用release证书构建包 鸿蒙场景化案例

发布于 1周前 作者 caililin 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Flutter如何使用release证书构建包 鸿蒙场景化案例

【 问题现象】

build-profile.json5已经配置了两个证书default和release,但无论开发时执行flutter run还是执行flutter build app --release 命令都是使用的default证书,无法使用release证书。

【解决方案】

当前鸿蒙Flutter的版本为3.7.12,已支持多目标构建,操作步骤如下:

1、 配置多product和签名,参考文档

(1) 在ohos目录下的build-profile.json5文件增加release证书配置项,其中release配置的是发布证书。

"signingConfigs": [
      {
        "name": "default",
        "type": "HarmonyOS",
        "material": {
          "certpath": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.cer",
          "storePassword": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
          "keyAlias": "debugKey",
          "keyPassword": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
          "profile": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.p7b",
          "signAlg": "SHA256withECDSA",
          "storeFile": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.p12"
        }
      },
      {
        "name": "release",   // 此处为release发布证书
        "type": "HarmonyOS",
        "material": {
          "certpath": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.cer",
          "storePassword": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
          "keyAlias": "release",
          "keyPassword": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
          "profile": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.p7b",
          "signAlg": "SHA256withECDSA",
          "storeFile": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.p12"
        }
      }
    ]
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 4px; right: 8px; font-size: 14px;">复制</button>

(2) 配置用于发布的product,证书指定release。

"products": [
      {
        "name": "default",
        "signingConfig": "default",
        "compatibleSdkVersion": "5.0.0(12)",
        "runtimeOS": "HarmonyOS",
        "buildOption": {
          "strictMode": {
            "caseSensitiveCheck": true,
            "useNormalizedOHMUrl": true
          }
        }
      },
      {  
        // 用于发布的product配置,指定release证书
        "name": "release",  
        "signingConfig": "release",
        "compatibleSdkVersion": "5.0.0(12)",
        "runtimeOS": "HarmonyOS",
      }
    ]
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 4px; right: 8px; font-size: 14px;">复制</button>

2、Flutter编译指定product

Flutter构建命令新增了flavor参数,这个参数可以指定步骤中的正式发布的product,命令如下:

flutter build hap [--flavor myflavor]
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 4px; right: 8px; font-size: 14px;">复制</button>

以release为例,构建使用如下命令:

flutter build hap --flavor release
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 4px; right: 8px; font-size: 14px;">复制</button>

【总结】

鸿蒙Flutter的多目标构建基于鸿蒙工程自身提供的能力,flutter模块最终是以flutter.har文件方式被鸿蒙工程所引用。

6 回复
flutter build hap --flavor release
start hap build...
Flavor "release" not exists in file

Hvigor build failed to produce an hap file. It’s likely that this file was generated under /Users/xxxx/ohos/xxxx/ohos/./entry, but the tool couldn’t find it.<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

请问出现这个如何解决 ?

看错误信息Flavor “release” not exists in file

ohos目录下build-profile.json5文件里面的products配置项增加release了吗?

配置文件能贴一下不

作为IT专家,针对HarmonyOS 鸿蒙Next Flutter如何使用release证书构建包的问题,以下是一个具体的操作步骤:

  1. 确保已存在有效的发布证书。若不存在,需要在华为开发者网站(https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/)中创建。创建过程中,需要生成Key和CSR,并下载相应的cer文件和Profile文件。
  2. 在DevEco Studio中,打开需要构建的项目,进入“File->Project Structure”,设置签名信息,包括Key Store file、Password、Alias等,这些信息应与生成的Key和下载的cer文件相匹配。
  3. 设置构建模式为release,然后执行构建操作,通常是通过“Build->Build Hap(s)/APP(s)->Build APP(s)”进行。
  4. 构建完成后,release包会生成在项目的build目录下,找到已签名的release包进行安装和测试。

此外,鸿蒙场景化案例可以参考美团外卖MTFlutter团队的实践,他们成功实现了Flutter对于鸿蒙系统的原生支持,并分享了适配过程中的技术细节和挑战。

请注意,如果在操作过程中遇到问题,建议检查签名证书是否有效、构建过程是否遵循HarmonyOS的签名规范等。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部