パッケージ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 を直接インストールできます。インストールする前に、上記の比較ツールを使用して、両方のファイルが同じ証明書ダイジェストを共有していることを確認してください。