HarmonyOS 输出的 hap 文件如何加上 buildMode,bundleName以及版本号

目前,buildMode不管是选择debug还是release,输出的hap包都是entry-sit-signed和entry-sit-unsigned(未签名),[我们配置的product为 sit]

那要如何配置才能输出为下面的格式呢?

app名字-版本号-debug/release.hap呢,这里app名字目前我们是根据product取的,如测试环境包/生产环境包等。

HarmonyOS
4天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

修改输出hap文件名可以通过更改hvigorfile.ts文件内容,hapSourcePath表示需要修改包名路径,hapTargetPath表示更改之后的包名路径。

示例代码:

// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently.
export { hapTasks } from '@ohos/hvigor-ohos-plugin';
const entry = require("@ohos/hvigor")(__filename);
const fs = require("fs-extra");
const path = require("path");
// 直接通过任务名创建一个copy的任务
entry.task(function () {
  const entryPath = entry.getNodeDir();
  const hapSourcePath = path.resolve(entryPath,
    'build/default/outputs/default/entry-default-unsigned.hap');
  const hapTargetPath = path.resolve(entryPath,
    'build/outputs/default/entry.hap');
  fs.copySync(hapSourcePath, hapTargetPath);
}, 'copy').setDependsOn("assembleHap")

根据hap包文件 解析出app的包名和版本等信息:

调用bundleManager模块的getBundleArchiveInfo接口,获取到对应hap的bundleInfo,如果需要自行解析hap,版本号和bundleName信息在hap的module.json中。

bundleManager.getBundleArchiveInfo getBundleArchiveInfo(hapFilePath: string, bundleFlags: number, callback: AsyncCallback<BundleInfo>): void;

以异步方法根据给定的hapFilePath和bundleFlags获取BundleInfo,使用callback形式返回结果。

需要权限: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED |参数名|类型|必填|说明| |-|-|-|-| |hapFilePath|string|是|表示存储HAP的路径,路径应该是当前应用程序数据目录的相对路径。| |bundleFlags|number|是|表示用于指定要返回的BundleInfo对象中包含的信息的标志。| |callback|AsyncCallback<BundleInfo>|是| 回调函数,当获取成功时,err为null,data为获取到的BundleInfo;否则为错误对象。

import bundleManager from '@ohos.bundle.bundleManager';
import hilog from '@ohos.hilog';
let hapFilePath = "/data/xxx/test.hap";
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT;
try { bundleManager.getBundleArchiveInfo(hapFilePath, bundleFlags, (err, data) => {
  if (err) {
    hilog.error(0x0000, 'testTag', 'getBundleArchiveInfo failed. Cause: %{public}s', err.message); }
  else {
    hilog.info(0x0000, 'testTag', 'getBundleArchiveInfo successfully: %{public}s', JSON.stringify(data));
  } });
} catch (err) {
  hilog.error(0x0000, 'testTag', 'getBundleArchiveInfo failed. Cause: %{public}s', err.message);
}

参考文档:

bundleManager.getBundleArchiveInfo:

分享
微博
QQ
微信
回复
4天前
相关问题
HarmonyOS 版本号如何获取
59浏览 • 1回复 待解决
HarmonyOS 如何获取当前APP版本号
57浏览 • 1回复 待解决
如何获取App版本号版本名等信息
4012浏览 • 1回复 待解决
如何获取当前手机系统版本号
554浏览 • 1回复 待解决
如何获取app/系统版本号
476浏览 • 1回复 待解决
如何查看手机支持版本号
7960浏览 • 1回复 待解决
HarmonyOS har包如何获取自身版本号
520浏览 • 1回复 待解决
如何使hsp包版本号统一
736浏览 • 0回复 待解决
HarmonyOSAPP如何动态修改版本号
762浏览 • 1回复 待解决
HarmonyOS 模块版本号怎么统一配置
621浏览 • 1回复 待解决
stage模型怎么获取app版本号信息
2029浏览 • 1回复 待解决
HarmonyOS 代码怎么获取APP版本号
1浏览 • 0回复 待解决
安卓app如何判断鸿蒙系统及版本号
2581浏览 • 1回复 待解决
HarmonyOS如何获取当前app版本号和code
949浏览 • 1回复 待解决