bundleManager.getBundleInfoForSelf:根据给定的bundleFlags获取当前应用的BundleInfo,当bundleFlags指定为GET_BUNDLE_INFO_WITH_SIGNATURE_INFO时,获取的则是应用签名信息。
bundleManager.getBundleInfoForSelf接口返回值:
代码参考如下:
import { bundleManager } from '@kit.AbilityKit';
@Entry
@Component
struct Index {
build() {
RelativeContainer() {
Text('查询应用签名信息')
.fontSize(25)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(() => {
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
try {
bundleManager.getBundleInfoForSelf(bundleFlags).then((bundleInfo:bundleManager.BundleInfo) => {
console.info(`应用的appId:${bundleInfo.signatureInfo.appId}`);
console.info(`应用包的指纹信息:${bundleInfo.signatureInfo.fingerprint}`);
console.info(`应用的唯一标识:${bundleInfo.signatureInfo.appIdentifier}`);
console.info(`应用的证书公钥:${bundleInfo.signatureInfo.certificate}`);
}).catch((err: BusinessError) => {
console.error(`code:${err.code}; meesage:${err.message}`);
});
} catch (err) {
let error = err as BusinessError;
console.error(`code:${error.code}; meesage:${error.message}`);
}
})
}
.height('100%')
.width('100%')
}
} Q:签名过期后使用同一个CSR重新申请的证书与原证书是否一致呢?
A:CSR公钥相同则新申请的签名证书同原证书可以认为是一致的。
Q:调试证书和发布证书获取的appIdentifier是否一致。
A:一致。
Q:appId和appIdentifier有什么区别?
A:appId是应用的唯一标识,由包名、下划线和证书公钥的Base64编码组成。由于appId和签名信息相关,如果签名证书的公钥更换,appId也会跟随变化。
appIdentifier是Profile文件中的一个字段,为应用的唯一标识,为云端统一分配的随机字符串。该ID在应用全生命周期中不会发生变化,包括版本升级、证书变更、开发者公私钥变更、应用转移等。但如果使用的IDE自动签名,那么appIdentifier为随机分配。