第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲得APK簽名?

如何獲得APK簽名?

牛魔王的故事 2019-07-13 09:34:52
如何獲得APK簽名?是否有方法檢索用于簽署APK的密鑰的簽名?我用密鑰庫的鑰匙簽了我的APK。如何以編程方式檢索它?
查看完整描述

3 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗 獲得超9個贊

包管理器將為您提供任何已安裝包的簽名證書。然后,您可以打印簽名密鑰的詳細(xì)信息。

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();
        }
    }}


查看完整回答
反對 回復(fù) 2019-07-13
?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗 獲得超4個贊

我的情況是,我有一個預(yù)先安裝的apk,使用錯誤的密鑰存儲。因此,直接安裝會因為簽名不一致而導(dǎo)致失敗,我需要先檢查簽名,以確保它能夠順利安裝。

這是我的.

這段代碼也就是說,您可以從已安裝的apk中獲得簽名。

詳情:

Signature sig = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures[0];

其次:讓ReleasaseApk hashCode進(jìn)行比較。在我的例子中,我從服務(wù)器下載了這個apk,并將它放在sd_Card中。

Signature releaseSig = context.getPackageManager().getPackageArchiveInfo("/mnt/sdcard/myReleaseApk.apk", PackageManager.GET_SIGNATURES).
signatures[0];

最后,比較hashCode。

return sig.hashCode() == releaseSig.hashCode;

我試過上面的代碼,它運(yùn)行得很好。如果hashCode不同,您應(yīng)該卸載舊的apk,或者如果它是一個系統(tǒng)應(yīng)用程序,并且設(shè)備是根的,您可以使用運(yùn)行時移除,然后安裝新的簽名apk。


查看完整回答
反對 回復(fù) 2019-07-13
  • 3 回答
  • 0 關(guān)注
  • 861 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號