APKバージョン差分ツール

APKおよびXAPKバージョン比較ツールオンライン

ブラウザで 2 つの .apk、.xapk、または .apks パッケージ を並べて比較してください。暗号署名証明書が一致するかどうかを確認し (INSTALL_FAILED_UPDATE_INCOMPATIBLE エラーを防ぐため)、DEX バイトコード、ネイティブ ライブラリ、および内部エントリの違いを検査します。

パッケージA (旧/基本バージョン)

最初の .apk / .xapk ファイルをクリックまたはドロップします

パッケージB (新規/アップデートバージョン)

2 番目の .apk / .xapk ファイルをクリックまたはドロップします

APK バージョンを比較することでアップデートの失敗を防ぐ理由

既存のインストール上に新しいバージョンの Android アプリをインストールする場合、Android の PackageManager は 2 つの厳格なルールを強制します。新しいパッケージの versionCode はインストールされているビルド以上である必要があり、META-INF/ (または APK 署名ブロック v2/v3) 内の署名証明書はバイト単位で同一である必要があります。

  • 署名証明書のダイジェスト マッチ: 両方のパッケージの .RSA / .DSA / .EC 署名ブロックの SHA-256 フィンガープリントを計算するため、アンインストールせずにインプレース更新が成功するかどうかがすぐにわかります。
  • ネイティブ ABI と DEX の違い: アップデートにより 32 ビット armeabi-v7a ライブラリが削除されたのか、新しい classes*.dex ファイルが追加されたのかを強調表示します。
  • CRC32 エントリ デルタ: ビルド間で追加または削除された正確なファイルをリストします。

Android によるパッケージの更新の評価方法 (INSTALL_FAILED_UPDATE_INCOMPATIBLE)

サイドロードされたアプリを更新するときにユーザーが遭遇する最も頻繁なエラーの 1 つは、「パッケージが既存のパッケージと競合するため、アプリはインストールされませんでした」 (ADB ログでは INSTALL_FAILED_UPDATE_INCOMPATIBLE として知られています) です。これは、インストールされたアプリが Google Play ストアから取得され (開発者のプライベート リリース キーで署名されている)、アップデートが分割 .xapk アーカイブから変換された場合 (分割をマージした後にコンバーター署名キーで再署名する必要がある) に発生します。

ただし、古いバージョンと新しいバージョンの両方が xapktoapk.com を使用して変換された場合、決定論的署名パイプラインは変換全体で同じ一貫した署名証明書を使用します。つまり、アンインストールしたり、アプリ内の進行状況を失ったりすることなく、変換された古い APK の上に新しい変換された APK を直接インストールできます。インストールする前に、上記の比較ツールを使用して、両方のファイルが同じ証明書ダイジェストを共有していることを確認してください。

Mst Shaefale による設計と文書化 リード開発者兼 Android パッケージ アーキテクト • Android 12 ~ 15 で検証済み

すべてのバイナリ比較と SHA-256 ハッシュは、Web 暗号化を介してブラウザ内で 100% ローカルに実行されます。ご不明な点がございましたら、サポートデスクまでお問い合わせください。