harmony 鸿蒙应用程序包常见问题

  • 2025-06-15
  • 浏览 (2)

应用程序包常见问题

如何获取签名信息中的指纹信息

  1. 通过调用接口获取。

可以调用bundleManager.getBundleInfoForSelf获取自身的BundleInfo应用包信息,应用包信息中包含signatureInfo签名信息,签名信息中包含fingerprint指纹信息。

import { bundleManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION|bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
try {
  bundleManager.getBundleInfoForSelf(bundleFlags).then((bundleInfo:bundleManager.BundleInfo) => {
    console.info('testTag', 'getBundleInfoForSelf successfully. fingerprint: %{public}s', bundleInfo.signatureInfo.fingerprint);
  }).catch((err: BusinessError) => {
    console.error('testTag', 'getBundleInfoForSelf failed. Cause: %{public}s', err.message);
  });
} catch (err) {
  let message = (err as BusinessError).message;
  console.error('testTag', 'getBundleInfoForSelf failed: %{public}s', message);
}
  1. 通过bm工具获取fingerprint指纹信息。
hdc shell
# 需将com.example.myapplication替换为实际应用的包名
bm dump -n com.example.myapplication|grep fingerprint 

alt text

  1. 通过.cer证书文件获取,可以参考APP备案FAQ中HarmonyOS应用/元服务如何获取公钥和签名信息。

  2. 通过keytool工具获取,详情参考生成签名证书指纹

什么是appIdentifier

appIdentifier是Profile文件中的一个字段,为应用的唯一标识,在应用签名时生成,其中: 1. 通过DevEco Studio工具自动签名生成,此时的appIdentifier字段是随机生成的,在不同的设备上签名、或者重新签名均会导致appIdentifier字段不一致。 2. 采用手动签名,并通过AppGallery Connect平台申请证书,此时申请的调试证书或者发布证书中的appIdentifier字段是固定的,该字段来源于AppGallery Connect创建应用时生成的APP ID,由云端统一分配。此时的appIdentifier字段在应用全生命周期中不会发生变化,包括版本升级、证书变更、开发者公私钥变更、应用转移等。

因此,在跨设备调试、跨应用交互调试、或者多用户共同开发且需要共享密钥等要求appIdentifier不变的场景下,推荐使用手动签名,具体场景请参考使用场景说明

如何获取应用信息中appIdentifier

  1. 可以调用bundleManager.getBundleInfoForSelf获取自身的BundleInfo应用包信息,应用包信息中包含signatureInfo签名信息,签名信息中包含appIdentifier信息。
import { bundleManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION|bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
try {
  bundleManager.getBundleInfoForSelf(bundleFlags).then((bundleInfo:bundleManager.BundleInfo) => {
    console.info('testTag', 'getBundleInfoForSelf successfully. appIdentifier: %{public}s', bundleInfo.signatureInfo.appIdentifier);
  }).catch((err: BusinessError) => {
    console.error('testTag', 'getBundleInfoForSelf failed. Cause: %{public}s', err.message);
  });
} catch (err) {
  let message = (err as BusinessError).message;
  console.error('testTag', 'getBundleInfoForSelf failed: %{public}s', message);
}
  1. 通过bm工具获取。
hdc shell
# 需将com.example.myapplication替换为实际应用的包名
bm dump -n com.example.myapplication|grep appIdentifier

alt text

你可能感兴趣的鸿蒙文章

harmony 鸿蒙入门

harmony 鸿蒙创建应用分身

harmony 鸿蒙app.json5配置文件

harmony 鸿蒙app对象内部结构

harmony 鸿蒙应用配置文件概述(FA模型)

harmony 鸿蒙应用配置文件概述(Stage模型)

harmony 鸿蒙应用程序包术语

harmony 鸿蒙应用安装卸载与更新开发指导

harmony 鸿蒙应用程序包概述

harmony 鸿蒙FA模型应用程序包结构

0  赞