Пакет A (стара/базова версія)
Натисніть або відпустіть перший файл .apk / .xapk
Пакет B (нова/оновлена версія)
Натисніть або опустіть другий файл .apk / .xapk
Чому порівняння версій APK запобігає невдалим оновленням
Коли ви встановлюєте новішу версію програми Android поверх наявної інсталяції, PackageManager Android забезпечує виконання двох суворих правил: versionCode нового пакета має бути більшим або дорівнювати встановленій збірці, а його сертифікат підпису всередині META-INF/ (або APK Signing Block v2/v3) має бути ідентичним байт за байтом.
- Збіг дайджесту сертифіката підпису: Обчислює відбиток SHA-256 блоку підпису .RSA / .DSA / .EC в обох пакетах, щоб ви відразу знали, чи вдасться оновлення на місці без видалення.
- Рідна відмінність ABI та DEX: Підкреслює, чи оновлення видалило 32-розрядні бібліотеки armeabi-v7a чи додало нові файли classes*.dex.
- Дельта входу CRC32: Перелічує точні файли, додані або видалені між збірками.
Як Android оцінює оновлення пакетів (INSTALL_FAILED_UPDATE_INCOMPATIBLE)
Одна з найпоширеніших помилок, з якою стикаються користувачі під час оновлення сторонньо завантаженої програми, — «Програма не встановлена як пакет, конфліктує з існуючим пакетом» (відома в журналах ADB як INSTALL_FAILED_UPDATE_INCOMPATIBLE). Це трапляється щоразу, коли встановлена програма надходить із магазину Google Play (підписана приватним ключем випуску розробника), а оновлення було перетворено з розділеного архіву .xapk (який потрібно було повторно підписати ключем підпису конвертера після об’єднання розділів).
Однак, якщо і стару, і нову версії було перетворено за допомогою xapktoapk.com, наш конвеєр детермінованого підпису використовує той самий послідовний сертифікат підпису під час перетворення, тобто ви можете встановити новий перетворений APK безпосередньо поверх старого перетвореного APK, не видаляючи та не втрачаючи прогрес у додатку! Скористайтеся наведеним вище інструментом порівняння, щоб переконатися, що обидва файли мають однакову дайджест сертифіката перед встановленням.