Come get l'APK firma della firma?

C'è un modo per recuperare la firma del tasto utilizzato per firmare un APK? Ho firmato il mio APK con il mio tasto dalla mia libreria. Come posso recuperarla in modo programmato?

  • OrizzontaleScrollView con le frecce
  • Android. Come faccio a mantenere un button visualizzato come PRESSATO finché l'azione creata da quel button non è terminata?
  • L'applicazione porttile non viene installata da apk mobile
  • C'è una semplice implementazione o un tutorial per implementare RecyclerView in android?
  • Come rimuovere i cookie utilizzando CookieManager per un dominio specifico?
  • Problema di layout e posizionamento di Android
  • Ottenere l'orientamento del telefono quando bloccato in un orientamento
  • Android: visualizzazione di image .jpg da sdcard con ImageView
  • Ottenere un auth-token google di base da AccountManager
  • Chiamata API per get l'architettura del processre
  • Utilizzo di un ListView per creare una schermata di impostazioni in Android?
  • avviare l'applicazione dal sistema url di browser
  • 3 Solutions collect form web for “Come get l'APK firma della firma?”

    Puoi accedere alla firma di firma di APK come questa utilizzando la class PackageManager http://developer.android.com/reference/android/content/pm/PackageManager.html

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

    Ho usato questo per confrontare con il codice hash per la chiave di debug come un modo per identificare se APK è un APK di debug o un APK di rilascio.

    Il gestore di pacchetti ti darà il certificato di firma per qualsiasi pacchetto installato. È quindi ansible printingre i dettagli della chiave di firma, ad es

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

    La mia situazione è che ho un apk preinstallato che utilizza un negozio di chiavi sbagliato. Così l'installazione diretta dà un fallimento a causa di firma incoerente. Ho bisogno di controllare la firma prima per assicurarsi che possa essere installata senza problemi.

    Ecco la mia soluzione .

    Come dice questo codice , è ansible get la firma da un apk installato.

    dettagli:

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

    In secondo luogo: get il hashCode di releaseApk da confrontare. Nel mio caso, ho scaricato questo apk dal mio server e inserito nella sd_card.

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

    Infine, confrontare il hashCode.

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

    Ho provato il codice sopra, funziona bene. Se ha hashCode diverso, dovresti semplicemente disinstallare la vecchia apk o se è un'applicazione di sistema e il dispositivo è radicato, è sufficiente utilizzare il runtime per rimuoverlo e quindi installare la nuova firma apk.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.