搭建鸿蒙+团结构建流水线

2025/06 04 20:06

Jenkins安装Unity3d插件

在Jenkins指定安装路径(ManagerJenkins/Tools/Unity3d installations)时

需要指定团结的安装目录,例如:

C:\Program Files\Tuanjie\Hub\Editor\2022.3.48t7

这个目录是不含Editor目录的;定位到Editor/Tuanjie.exe,把Editor/Tuanjie.exe拷贝一份命名为Unity.exe,使得插件可以以Unity的方式运行。

使用Tuanjie进行构建

与Unity类型,在构建任务中,添加 Invoke Unity3d Editor步骤

然后指定Editor command line arguments,例如:

CustomArgsString -batchmode -quit -silent-crashes -projectPath d:\tuanjie -executeMethod Jenkins.BuildHarmony

[可选1]构建后处理脚本

可以为团结引擎添加构建后处理

#if UNITY_EDITOR && UNITY_OPENHARMONY
using System.Collections.Generic;
using UnityEngine;

// 团结-鸿蒙后处理
[UnityEditor.InitializeOnLoad]
public class BuildOpenHarmonyPost : UnityEditor.OpenHarmony.IPostGenerateOpenHarmonyProject
{
   
    public int callbackOrder => 0;
    public void OnPostGenerateOpenHarmonyProject(string outputDir)
    {
        var streamingAssetsDir= $"{outputDir}/src/main/resources/rawfile/Data/StreamingAssets/";
        // 对输出的StreamingAssets目录进行后处理操作
    }
}

#endif

[可选2]构建后处理操作

在BuildPipeline.BuildPlayer之后,可以拷入像SDK之类的文件

考虑可以拷入:

1、build-profile.json5中含有签名信息,可以直接拷过去使用(证书直接拷到根目录中,使用相对路径)

2、entry\src\main\module.json5 含有应用配置信息,可以直接拷过去使用

3、entry\src\main\ets\ability\中的ets文件,可以配置好拷过去

4、根目录的oh_modules模块,可以安装好拷过去

使用命令行构建

必要环境

DevEco Studio 5.0.4 Release, Build Version: 5.0.11.100, built on March 28, 2025;
Runtime version: 17.0.12+1-b1087.25 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

基于JDK17,所以系统的PATH路径中,一定要优先设置好JDK17,否则会编译失败;

命令行

CD到项目输出目录,执行以下命令

hvigorw assembleHap --mode module -p product=default -p buildMode=debug --no-daemon

签名

生成hap后,要签名,否则无法安装

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-command-line-building-app

需要把hap-sign-tool.jar这个文件拷到目录中,然后执行

java -jar hap-sign-tool.jar sign-app -keyAlias "xxx" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "xxx.cer" -profileFile "xxx.p7b" -inFile "entry/build/default/outputs/default/entry-default-unsigned.hap" -keystoreFile "xxx.p12" -outFile "entry/build/default/outputs/default/entry-default-signed.hap" -keyPwd "xxx" -keystorePwd "xxx" -signCode "1"