HarmonyOS鸿蒙Next中极光SDK需要配置bundleInfo.signatureInfo.fingerprint字段作为应用签名,release证书无法运行,不能通过API获取该怎么办呢?

HarmonyOS鸿蒙Next中极光SDK需要配置bundleInfo.signatureInfo.fingerprint字段作为应用签名,release证书无法运行,不能通过API获取该怎么办呢?

通过API获取的 bundleInfo.signatureInfo.fingerprint
getSign(): string {
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
let bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleFlags)
return bundleInfo.signatureInfo.fingerprint
}

和 keytool 打印出来的值一样吗?

极光SDK需要我们配置bundleInfo.signatureInfo.fingerprint作为应用签名,但是这个字段会随着证书改变,目前debug的调试证书可以通过上述API获取,但是releas证书无法运行获取不到bundleInfo.signatureInfo.fingerprint,该怎么获取这个字段呢?

![image.png](data:image/png;base64,data-originheight=“827” data-originwidth=“1507”)

![cke_3914.png](data:image/png;base64,data-originheight=“1487” data-originwidth=“2863”)


更多关于HarmonyOS鸿蒙Next中极光SDK需要配置bundleInfo.signatureInfo.fingerprint字段作为应用签名,release证书无法运行,不能通过API获取该怎么办呢?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

【解决方案】

release签名的包不可直接运行获取签名,获取应用包签名可使用以下方法:

证书文件分为两种类型:debug和release。

  • debug证书存放在UnsgnedDebugProfileTemplate.json文件(也可以直接编辑.p7b文件,搜索certificate字段)的development-certificate字段下,将证书的内容拷贝存储为debug.cer文件。
  • release证书存放在UnsgnedReleasedProfileTemplate.json文件(也可以直接编辑.p7b文件,搜索certificate字段)的distribution-certificate字段下,将证书的内容拷贝存储为release.cer文件。
  • 利用keytool工具打印对应的证书的指纹:keytool -printcert -file xxx.cer

更多关于HarmonyOS鸿蒙Next中极光SDK需要配置bundleInfo.signatureInfo.fingerprint字段作为应用签名,release证书无法运行,不能通过API获取该怎么办呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,若极光SDK需要配置bundleInfo.signatureInfo.fingerprint字段但release证书无法运行,可通过以下步骤解决:

  1. 手动获取应用签名指纹:

    • 使用Keytool工具执行命令:
      keytool -list -v -keystore your_release_keystore.jks
      
    • 复制SHA256指纹值(去掉冒号)
  2. 在config.json中硬编码配置:

    "bundleInfo": {
      "signatureInfo": {
        "fingerprint": "你的SHA256指纹"
      }
    }
    
  3. 确保配置的指纹与签名证书完全一致,区分debug/release环境。

在HarmonyOS Next中,release证书无法通过API获取bundleInfo.signatureInfo.fingerprint的问题确实存在。这是因为release模式下应用签名信息的安全限制导致的。

建议采用以下解决方案:

  1. 对于release证书,建议预先通过keytool命令获取签名指纹:

    keytool -list -v -keystore your_release.jks
    

    然后在代码中直接配置这个固定值,而不是运行时获取。

  2. 如果必须动态获取,可以尝试在开发阶段将release证书配置为调试证书,获取到fingerprint后记录下来,再切换回正式release证书。

  3. 极光SDK要求的这个字段本质上就是应用签名证书的SHA1指纹,通过keytool获取的值和API获取的值在格式上是一致的,只是大小写可能不同(可以统一转为大写或小写比较)。

注意:release模式下无法动态获取签名信息是系统安全机制限制,不是代码问题。

回到顶部