首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取APK签名签名?

如何获取APK签名签名?
EN

Stack Overflow用户
提问于 2011-04-07 17:27:29
回答 2查看 93.1K关注 0票数 68

有没有办法检索用于签署APK的密钥的签名?我用密钥库中的密钥签署了我的APK。如何以编程方式检索它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-07 17:57:48

您可以使用PackageManager类http://developer.android.com/reference/android/content/pm/PackageManager.html像这样访问APK的签名

代码语言:javascript
复制
Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
for (Signature sig : sigs)
{
    Trace.i("MyApp", "Signature hashcode : " + sig.hashCode());
}

我使用它与我的调试密钥的散列代码进行比较,以此作为识别APK是调试APK还是发布APK的一种方式。

票数 72
EN

Stack Overflow用户

发布于 2013-05-01 01:12:35

包管理器将为您提供任何已安装包的签名证书。然后可以打印出签名密钥的详细信息,例如

代码语言:javascript
复制
final PackageManager packageManager = context.getPackageManager();
final List<PackageInfo> packageList = packageManager.getInstalledPackages(PackageManager.GET_SIGNATURES);

for (PackageInfo p : packageList) {
    final String strName = p.applicationInfo.loadLabel(packageManager).toString();
    final String strVendor = p.packageName;

    sb.append("<br>" + strName + " / " + strVendor + "<br>");

    final Signature[] arrSignatures = p.signatures;
    for (final Signature sig : arrSignatures) {
        /*
        * Get the X.509 certificate.
        */
        final byte[] rawCert = sig.toByteArray();
        InputStream certStream = new ByteArrayInputStream(rawCert);

        try {
            CertificateFactory certFactory = CertificateFactory.getInstance("X509");
            X509Certificate x509Cert = (X509Certificate) certFactory.generateCertificate(certStream);

            sb.append("Certificate subject: " + x509Cert.getSubjectDN() + "<br>");
            sb.append("Certificate issuer: " + x509Cert.getIssuerDN() + "<br>");
            sb.append("Certificate serial number: " + x509Cert.getSerialNumber() + "<br>");
            sb.append("<br>");
        }
        catch (CertificateException e) {
            // e.printStackTrace();
        }
    }
}
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5578871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档