Android

Как проверить подпись APK-файла на Android

Это руководство поможет вам проверить цифровую подпись любого APK-файла на устройстве с Android или компьютере. Вы узнаете, зачем это нужно и как сделать это с помощью встроенных средств.

Обновлено 16 февраля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Android 8.0+ADB (Android Debug Bridge)Android SDK Build-Tools 24.0.0+

Введение / Зачем это нужно

Цифровая подпись APK-файла — это криптографическая метка, которую разработчик добавляет в приложение перед публикацией. Она гарантирует, что:

  • Приложение не было изменено после подписания (целостность).
  • Приложение действительно выпущено указанным разработчиком (аутентичность).

Проверка подписи актуальна, когда вы:

  • Скачиваете APK из неофициальных источников и хотите убедиться в его безопасности.
  • Отлаживаете собственное приложение и нужно подтвердить, что сборка подписана правильным ключом.
  • Разбираетесь в проблемах установки (например, ошибка INSTALL_PARASE_FAILED_NO_CERTIFICATES).

Этот гайд покажет, как быстро проверить подпись любого APK-файла на Android-устройстве или компьютере.

Требования / Подготовка

Перед началом убедитесь, что у вас есть:

  1. Android-устройство или APK-файл на компьютере.
  2. Установленный ADB (Android Debug Bridge). Входит в Android SDK Platform-Tools. После установки добавьте папку platform-tools в переменную среды PATH.
  3. Включённая отладка по USB на устройстве (Настройки → Для разработчиков → Отладка по USB).
  4. Базовые навыки работы с командной строкой (терминал, cmd, PowerShell).

💡 Совет: Если вы проверяете APK, который уже лежит на компьютере, ADB и устройство не нужны. Достаточно утилит apksigner или jarsigner.

Пошаговая инструкция

Шаг 1: Подготовьте среду и устройство

  1. Подключите Android-устройство к компьютеру через USB.
  2. Откройте терминал (Linux/macOS) или PowerShell/cmd (Windows).
  3. Проверьте, что ADB видит устройство:
    adb devices
    
    В списке должен появиться ваш devices с статусом device. Если нет — установите драйверы (Windows) или разрешите отладку на устройстве.

Шаг 2: Определите путь к APK-файлу

Если APK на устройстве:

  • Найдите пакет приложения (например, com.example.app). Полный путь к APK можно получить командой:
    adb shell pm list packages -f | grep "com.example.app"
    
    Вывод будет примерно таким: package:/data/app/com.example.app-1/base.apk. Это и есть путь.

Если APK на компьютере:

  • Просто найдите файл. Например, C:\Downloads\app.apk или ~/Downloads/app.apk.

Шаг 3: Проверьте подпись с помощью apksigner (рекомендуется)

Утилита apksigner входит в Android SDK Build-Tools (начиная с версии 24.0.0). Она поддерживает все современные схемы подписи (v1, v2, v3).

Выполните команду, заменив <путь_к_apk> на реальный путь:

apksigner verify --verbose <путь_к_apk>

Пример для APK на компьютере:

apksigner verify --verbose ~/Downloads/myapp.apk

Пример для APK на устройстве (сначала скопируйте его на компьютер):

adb pull /data/app/com.example.app-1/base.apk .
apksigner verify --verbose base.apk

Ожидаемый вывод при успехе:

Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
...

Если вы видите Verifies и true для хотя бы одной схемы — подпись корректна.

Шаг 4: Альтернатива: проверка через jarsigner

Если apksigner недоступен (например, в очень старых SDK) или нужно проверить только старую схему подписи (v1), используйте jarsigner — инструмент из Java Development Kit (JDK).

jarsigner -verify -verbose -certs <путь_к_apk>

Пример:

jarsigner -verify -verbose -certs base.apk

Ожидаемый вывод:

jar verified.
...

Если в конце есть jar verified. — подпись v1 верна.

⚠️ Важно: jarsigner не проверяет схемы v2/v3. Даже если jarsigner прошёл успешно, APK может быть неподписан по v2, что вызовет ошибку на устройствах Android 7.0+.

Шаг 5: Проанализируйте результат

  • Успех: Вывод содержит Verified (apksigner) или jar verified. (jarsigner). Подпись действительна, файл не изменён.
  • Ошибка "No signatures found": Файл не подписан вообще. Такие APK не устанавливаются на Android.
  • Ошибка "certificate not found" или "signature block not found": Подпись повреждена или файл изменён после подписания.
  • Предупреждения о просроченном сертификате: Подпись технически действительна, но срок действия сертификата истёк. На установку обычно не влияет, но может быть проблемой для обновлений.

Проверка результата

После выполнения команд вы должны получить чёткий ответ. Самый надёжный показатель — фраза Verified using v2 scheme от apksigner. Она гарантирует, что приложение пройдёт проверку на всех современных Android-устройствах (7.0+).

Если проверка прошла успешно, вы можете быть уверены:

  • APK не был модифицирован неизвестными лицами.
  • Приложение originates от владельца приватного ключа, использованного для подписи.

Возможные проблемы

ADB не видит устройство

  • Убедитесь, что отладка по USB включена.
  • Попробуйте переподключить кабель или использовать другой порт.
  • На Windows проверьте, установлены ли драйверы ADB (через adb kill-server и adb start-server).

apksigner/jarsigner не найдены

  • Убедитесь, что Android SDK Build-Tools (для apksigner) или JDK (для jarsigner) установлены и добавлены в PATH.
  • Полный путь к apksigner обычно: ~/Library/Android/sdk/build-tools/<версия>/apksigner (macOS/Linux) или C:\Users\<user>\AppData\Local\Android\Sdk\build-tools\<версия>\apksigner.bat (Windows).

Ошибка "Failed to read key from APK"

  • APK-файл может быть повреждён или зашифрован. Попробуйте скачать/собрать его заново.
  • Убедитесь, что вы передаёте путь именно к APK-файлу, а не к ZIP-архиву или другому формату.

Сертификат подписи просрочен

  • Это не блокирует установку, но может помешать обновлению приложения через Google Play, если новый билд подписан тем же ключом с просроченным сертификатом.
  • Решение: переподпишите приложение новым ключом (требует изменения ключа обновления, что не всегда возможно).

Часто задаваемые вопросы

Зачем проверять подпись APK-файла?
Можно ли проверить подпись без ADB?
Что означает ошибка 'No signatures found'?
Какая разница между `apksigner` и `jarsigner`?

Полезное

Подготовьте среду и устройство
Определите путь к APK-файлу
Проверьте подпись с помощью apksigner (рекомендуется)
Альтернатива: проверка через jarsigner
Проанализируйте результат

Эта статья помогла вам решить проблему?