HarmonyOS鸿蒙Next中flutter怎么构建出不带签名的鸿蒙包?

HarmonyOS鸿蒙Next中flutter怎么构建出不带签名的鸿蒙包? 目前需要先构构建一个裸的不带签名信息的包,然后流水线再去签名

但是执行 flutter build app --release

好像无法构建出无签名的包

有什么方式能构建吗?

5 回复

可以通过 flutter build app --no-codesign 只构建出无签名包

不过目前只有3.22.0版本支持这个指令,3.27.5不支持

https://gitcode.com/openharmony-tpc/flutter_flutter/pull/579

更多关于HarmonyOS鸿蒙Next中flutter怎么构建出不带签名的鸿蒙包?的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


cke_113.png

使用deveco打开flutter下的ohos工程,build app的时候 会在ohos工程目录下的build/outputs/default/ohos-defualt-unsigned.app下,其中ohos-defualt-unsigned.app就是未签名的包

cke_1124.png

这种不是很符合我的场景哈,我是在流水线上构建的,所有需要只构建出无签名包,在把无签名包拿去签名,构建出制品

不过目前我已经找到方式了哈, 可以通过 flutter build app --no-codesign 只构建出无签名包,

在HarmonyOS Next中,Flutter暂不支持直接构建不带签名的鸿蒙包。鸿蒙应用必须经过签名才能安装和运行。目前Flutter for HarmonyOS仍处于适配阶段,构建流程需遵循鸿蒙的签名机制。

在HarmonyOS Next中,Flutter工具链目前默认会为构建的App包(.app文件)自动生成并使用调试签名。要构建一个不带签名信息的“裸包”,以便在后续的CI/CD流水线中进行正式签名,你需要通过修改Flutter构建配置来实现。

核心方法是配置Flutter项目的 android 目录(虽然目标是HarmonyOS,但Flutter构建流程仍会参考此配置)。具体步骤如下:

  1. 定位签名配置文件:在您的Flutter项目目录下,找到 android/app/build.gradle.kts(如果使用Kotlin DSL)或 android/app/build.gradle(Groovy DSL)文件。

  2. 修改构建类型配置:在 buildTypes 块中,找到或创建 release 构建类型。你需要将其配置为不进行签名(signingConfig 设置为 null)且不启用V1/V2签名(这是Android的签名方案,但会影响输出包的签名状态)。

    以Groovy DSL (build.gradle) 为例:

    android {
        ...
        buildTypes {
            release {
                // 关键配置:将签名配置设置为 null
                signingConfig null
                // 确保禁用Android签名方案,这有助于生成未签名的包
                v1SigningEnabled false
                v2SigningEnabled false
                v3SigningEnabled false
                v4SigningEnabled false
            }
        }
    }
    

    以Kotlin DSL (build.gradle.kts) 为例:

    android {
        ...
        buildTypes {
            getByName("release") {
                // 关键配置:将签名配置设置为 null
                signingConfig = null
                // 确保禁用Android签名方案
                isV1SigningEnabled = false
                isV2SigningEnabled = false
                isV3SigningEnabled = false
                isV4SigningEnabled = false
            }
        }
    }
    
  3. 执行构建命令:完成配置后,在项目根目录运行标准的Flutter构建命令:

    flutter build app --release
    

    此命令现在会基于修改后的Gradle配置,生成一个未经过签名的HarmonyOS App包。

  4. 查找输出文件:构建生成的未签名App包(.app文件)默认位于 build/app/outputs/hap/release/ 目录下。你可以将此文件提供给后续的流水线,使用HarmonyOS的正式签名证书进行签名。

重要说明:此方法利用了Flutter for HarmonyOS当前构建流程的底层机制。由于HarmonyOS Next的Flutter工具链仍在持续演进,具体的配置方式或构建产物路径在未来版本中可能会有调整。如果遇到问题,请核对您使用的Flutter for HarmonyOS插件或工具的版本文档。

回到顶部