A csomag (régi / alap verzió)
Kattintson vagy dobja le az első .apk / .xapk fájlt
B csomag (új / frissített verzió)
Kattintson vagy dobja le a második .apk / .xapk fájlt
Miért akadályozza meg a sikertelen frissítéseket az APK-verziók összehasonlítása?
Amikor egy Android-alkalmazás újabb verzióját telepíti egy meglévő telepítésre, az Android PackageManager két szigorú szabályt kényszerít ki: az új csomag versionCode-jének nagyobbnak vagy egyenlőnek kell lennie, mint a telepített build, és a META-INF/-n belüli aláírási tanúsítványának (vagy az APK aláírási blokkjának v2/v3-án) bájtonként azonosnak kell lennie.
- Aláíró tanúsítvány kivonat egyezés: Kiszámolja a .RSA / .DSA / .EC aláírásblokk SHA-256 ujjlenyomatát mindkét csomagban, így azonnal tudni fogja, hogy a helyi frissítés sikeres lesz-e eltávolítás nélkül.
- Natív ABI és DEX különbség: Kiemeli, hogy a frissítés törölte-e a 32 bites armeabi-v7a könyvtárakat, vagy új classes*.dex fájlokat adott-e hozzá.
- CRC32 belépési delta: Pontosan felsorolja a felépítések között hozzáadott vagy eltávolított fájlokat.
Hogyan értékeli az Android a csomagfrissítéseket (INSTALL_FAILED_UPDATE_INCOMPATIBLE)
Az egyik leggyakoribb hiba, amellyel a felhasználók egy oldalt betöltött alkalmazás frissítésekor találkoznak, a "Az alkalmazás nincs telepítve, mivel a csomag ütközik egy meglévő csomaggal" (az ADB-naplókban INSTALL_FAILED_UPDATE_INCOMPATIBLE néven ismert). Ez akkor történik meg, amikor a telepített alkalmazás a Google Play Áruházból érkezett (a fejlesztő privát kiadási kulcsával aláírva), és a frissítést egy osztott .xapk archívumból konvertálták (amit a felosztások egyesítése után újra alá kellett írni egy konverter aláíró kulccsal).
Ha azonban mind a régi, mind az új verzióját a xapktoapk.com használatával konvertálták, akkor determinisztikus aláíró folyamatunk ugyanazt a konzisztens aláírási tanúsítványt használja a konverziókon keresztül – ami azt jelenti, hogy az új konvertált APK-t közvetlenül a régi konvertált APK tetejére telepítheti anélkül, hogy eltávolítaná vagy elveszítené az alkalmazáson belüli folyamatot! A fenti összehasonlító eszközzel ellenőrizze, hogy mindkét fájl ugyanazt a tanúsítványkivonatot használja-e a telepítés előtt.