10

2 つの APK ファイルが同じ証明書で署名されていることを確認したいと思います。

Java SDK 全体を利用できますが、クロスプラットフォームの理由から Java コードから作成したいと考えています。

何か案は?

4

3 に答える 3

5

こちらの開発者ガイドのリンクをお試しください

また、それらが同じ署名を使用して署名されているか、作成日による証明書の検証を使用していないかを知ることができます。

まず、ターミナルで .apk を含むフォルダーに移動します。

  $ jarsigner -verify -verbose -certs my_application.apk
于 2014-12-30T17:25:09.757 に答える
1

Android アプリケーション

組み込み API PackageManager.checkSignatures()を使用します。

Java アプリケーション

解決策は少し面倒ですが、それでも実行可能です。ソース コードを掘り下げてPackageManager.checkSignatures()、実装を Java に移植するだけです。PackageManager では、署名の読み込みとチェックの部分は主に Java API に基づいています。

  • java.util.jar.JarEntry;
  • java.util.jar.JarFile;
  • java.security.PublicKey;
  • java.security.cert.Certificate;
  • java.security.cert.CertificateException;
  • java.security.cert.CertificateFactory;

一般的なアイデア:

  1. android.content.pm.Signatureのソース コードを借りて Java に移植します (Parcelable を削除する必要があります)。
  2. apkからの収集/読み込み方法Signature、チェックアウト方法、collectCertificates()およびandroid.content.pm.PackageParserのメソッド。loadCertificates()
  3. android.server.pm.PackageManagerServiceの「署名」、チェックアウトcheckSignatures()、およびcompareSignatures()メソッドをチェック/比較する方法。

これが理にかなっていることを願っています。

于 2012-09-20T23:35:53.530 に答える