HarmonyOS鸿蒙Next中有动态获取hap版本号的脚本么?

HarmonyOS鸿蒙Next中有动态获取hap版本号的脚本么? 【问题描述】:我需要把打包、上传和给测试发布的整个过程集成到Jenkins里,json5文件需要动态生成,所以需要动态获取版本号

3 回复

开发者您好,可以通过扩展能力中getVersion获取模块oh-package.json5中配置的版本号,示例在getVersion中。如果问题仍然未解决,请描述具体问题信息。

更多关于HarmonyOS鸿蒙Next中有动态获取hap版本号的脚本么?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,可以通过bundle.getVersionCode()bundle.getVersionName()方法动态获取hap的版本号。

在HarmonyOS Next中,可以通过以下几种方式动态获取HAP的版本号,以满足您在Jenkins流水线中自动化构建和发布的需求:

  1. 使用ohos.app.ability.Ability: 在Ability中,可以通过context获取应用信息,其中包含版本号。

    import { Ability } from '[@ohos](/user/ohos).app.ability.UI';
    
    export default class MainAbility extends Ability {
      onWindowStageCreate(windowStage) {
        let context = this.context;
        let appInfo = context.applicationInfo;
        let versionName = appInfo.versionName; // 获取版本名称(如1.0.0)
        let versionCode = appInfo.versionCode; // 获取版本代码(如100)
      }
    }
    
  2. 使用[@ohos](/user/ohos).bundle.bundleManager API: 通过bundleManager获取当前应用的Bundle信息,从中提取版本号。

    import { bundleManager } from '[@ohos](/user/ohos).bundle.bundleManager';
    
    async function getVersion() {
      try {
        let bundleInfo = await bundleManager.getBundleInfoForSelf(0);
        let versionName = bundleInfo.versionName;
        let versionCode = bundleInfo.versionCode;
      } catch (error) {
        console.error('Failed to get bundle info', error);
      }
    }
    
  3. 在构建脚本中动态生成: 在Jenkins流水线中,可以通过脚本(如Shell或Node.js)动态生成版本号,并写入module.json5文件。例如,使用Node.js脚本:

    const fs = require('fs');
    const version = process.env.VERSION || '1.0.0'; // 从环境变量获取版本号
    const json5Path = './module.json5';
    
    let config = JSON.parse(fs.readFileSync(json5Path, 'utf8'));
    config.app.versionName = version;
    config.app.versionCode = parseInt(version.replace(/\./g, ''));
    
    fs.writeFileSync(json5Path, JSON.stringify(config, null, 2));
    
  4. 使用HarmonyOS的hvigor构建工具: 在hvigorfile.ts中,可以通过配置动态注入版本号到module.json5。例如:

    import { hapTasks } from '[@ohos](/user/ohos)/hvigor-ohos-plugin';
    
    export default {
      app: {
        // 从环境变量或外部文件读取版本号
        versionName: process.env.VERSION_NAME || '1.0.0',
        versionCode: process.env.VERSION_CODE || 100,
        // 其他配置...
      }
    }
    

建议

  • 在Jenkins流水线中,推荐使用第3或第4种方式,通过环境变量或构建参数动态设置版本号,并自动更新module.json5文件。
  • 确保版本号符合HarmonyOS的规范(如versionName为字符串,versionCode为整数)。

以上方法可以帮助您在HarmonyOS Next中实现动态获取和设置HAP版本号,从而完成自动化集成。

回到顶部