HarmonyOS鸿蒙Next中如何根据动态版本号输出HAP文件名称

HarmonyOS鸿蒙Next中如何根据动态版本号输出HAP文件名称 请问如何定制编译后输出的HAP文件名称

如何在hvigorfile.ts中动态获取har版本号,根据版本号输出HAP文件名称

3 回复
// 可参考通过 hook 以及插件上下文动态配置构建配置
// 下述是修改 hap 名称的代码
import { hapTasks, OhosPluginId } from '@ohos/hvigor-ohos-plugin';
import { hvigor } from '@ohos/hvigor';

const name = 'name';
const version = '1.0.3'; // 都可以调用其他 API 动态获取对应信息
const artifactName = `${name}-${version}`;

hvigor.afterNodeEvaluate((hvigorNode) => {
    const context = hvigorNode.getContext(OhosPluginId.OHOS_HAP_PLUGIN);
    
    if (context && context.getBuildProfileOpt) {
        const buildProfile = context.getBuildProfileOpt();
        const targets = buildProfile.targets;

        for (const target of targets) {
            if (target.name === 'default') { // 这个 'default' 可以通过接口获取到当前 target 的名称,此处不写了
                target["output"] = {
                    "artifactName": artifactName
                };
            }
        }
        
        context.setBuildProfileOpt(buildProfile);
    }
});

export default {
    system: hapTasks, // Built-in plugin of Hvigor. It cannot be modified.
    plugins: [] // Custom plugin to extend the functionality of Hvigor.
};

更多关于HarmonyOS鸿蒙Next中如何根据动态版本号输出HAP文件名称的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,根据动态版本号输出HAP文件名称可以通过使用build.gradle文件中的versionNameversionCode来实现。versionName表示版本号,versionCode表示版本代码。你可以在build.gradle中定义这些变量,并在构建过程中使用它们来生成HAP文件名称。

例如,假设你的versionName1.0.0versionCode1,你可以在build.gradle中配置如下:

android {
    defaultConfig {
        versionName "1.0.0"
        versionCode 1
    }
    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def fileName = "app-${variant.versionName}-${variant.versionCode}.hap"
            output.outputFileName = fileName
        }
    }
}

在这个配置中,applicationVariants.all用于遍历所有的构建变体,output.outputFileName用于设置输出的HAP文件名称。fileName变量通过拼接versionNameversionCode来生成动态的HAP文件名称。

构建完成后,生成的HAP文件名称将类似于app-1.0.0-1.hap

在HarmonyOS鸿蒙Next中,可以通过build.gradle文件配置动态版本号,并使用outputFileName属性自定义HAP文件名称。示例代码如下:

android {
    defaultConfig {
        versionCode 1
        versionName "1.0.0"
    }
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def version = defaultConfig.versionName
            output.outputFileName = "app-${version}.hap"
        }
    }
}

此配置会根据versionName动态生成HAP文件名称,如app-1.0.0.hap

回到顶部