Balík A (stará / základná verzia)
Kliknite alebo pustite prvý súbor .apk / .xapk
Balík B (nová / aktualizovaná verzia)
Kliknite alebo pustite druhý súbor .apk / .xapk
Prečo porovnanie verzií APK zabraňuje neúspešným aktualizáciám
Keď nainštalujete novšiu verziu aplikácie pre Android cez existujúcu inštaláciu, PackageManager pre Android presadzuje dve prísne pravidlá: versionCode nového balíka musí byť väčšie alebo rovnaké ako nainštalovaná zostava a jeho podpisový certifikát v META-INF/ (alebo APK Signing Block v2/v3) musí byť bajt po bajte identický.
- Zhoda súhrnu podpisového certifikátu: Vypočíta odtlačok SHA-256 podpisového bloku .RSA / .DSA / .EC v oboch balíkoch, takže okamžite viete, či bude miestne aktualizácia úspešná bez odinštalovania.
- Natívny rozdiel ABI a DEX: Zdôrazňuje, či aktualizácia odstránila 32-bitové knižnice armeabi-v7a alebo pridala nové súbory classes*.dex.
- Delta vstupu CRC32: Uvádza presné súbory pridané alebo odstránené medzi zostavami.
Ako Android vyhodnocuje aktualizácie balíka (INSTALL_FAILED_UPDATE_INCOMPATIBLE)
Jednou z najčastejších chýb, s ktorými sa používatelia stretávajú pri aktualizácii vedľajšej aplikácie, je "Aplikácia nie je nainštalovaná, pretože balík je v konflikte s existujúcim balíkom" (známa v denníkoch ADB ako INSTALL_FAILED_UPDATE_INCOMPATIBLE). Stáva sa to vždy, keď nainštalovaná aplikácia pochádza z obchodu Google Play (podpísaná súkromným kľúčom vydania vývojára) a aktualizácia bola skonvertovaná z rozdeleného archívu .xapk (ktorý sa po zlúčení rozdelení musel znova podpísať pomocou podpisového kľúča prevodníka).
Ak však boli vaša stará aj nová verzia konvertované pomocou xapktoapk.com, náš deterministický podpisový kanál používa rovnaký konzistentný podpisový certifikát naprieč konverziami – to znamená, že nový konvertovaný súbor APK môžete nainštalovať priamo na starý konvertovaný súbor APK bez odinštalovania alebo straty postupu v aplikácii! Pred inštaláciou použite nástroj na porovnanie vyššie na potvrdenie, že oba súbory zdieľajú rovnaký súhrn certifikátov.