Android INSTALL_PARSE_FAILED_NO_CERTIFICATESВысокая

Исправляем INSTALL_PARSE_FAILED_NO_CERTIFICATES в Android

Ошибка возникает при установке APK из-за отсутствия или недействительности цифровой подписи. Вы узнаете причины и научитесь подписывать приложения, пересобирать пакеты и настраивать среду разработки.

Обновлено 27 апреля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Android 8.0+Android Studio Hedgehog 2023+Gradle 8.0+apksigner 30.0+

Что означает ошибка INSTALL_PARSE_FAILED_NO_CERTIFICATES

Ошибка INSTALL_PARSE_FAILED_NO_CERTIFICATES появляется при попытке установить APK на устройство или эмулятор Android. Полный текст ошибки в ADB обычно выглядит так:

adb: failed to install app.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed collecting certificates for /manifest]

Система не может найти действительные цифровые сертификаты внутри пакета, поэтому отклоняет установку по соображениям безопасности. Ошибка возникает на этапе парсинга манифеста до начала копирования файлов.

Причины возникновения

  • APK не был подписан перед сборкой или подпись была удалена после изменения файлов.
  • Использован некорректный или повреждённый файл хранилища ключей (keystore).
  • Несовпадение алгоритма подписи или дата истечения сертификата.
  • Попытка установить APK, собранный без signingConfig в Gradle.
  • Ручное редактирование APK (например, через архиватор), после которого файл перестал быть подписан.

Способы решения

Способ 1: Проверить и переподписать APK с помощью apksigner

Убедитесь, что APK подписан, и при необходимости подпишите его заново.

Проверка подписи:

apksigner verify --verbose app.apk

Если проверка не проходит, подпишите APK debug-ключом (по умолчанию в ~/.android/debug.keystore):

apksigner sign --ks ~/.android/debug.keystore \
               --ks-key androiddebugkey \
               --ks-pass pass:android \
               --key-pass pass:android \
               --out app-signed.apk \
               app.apk

Установите подписанный APK:

adb install app-signed.apk

Способ 2: Пересобрать проект с правильным signingConfig

Если у вас исходный код, убедитесь, что сборка подписывается автоматически.

В app/build.gradle добавьте или проверьте signingConfigs:

android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
        release {
            storeFile file("release.keystore")
            storePassword System.getenv("KEYSTORE_PASSWORD")
            keyAlias "release"
            keyPassword System.getenv("KEY_PASSWORD")
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
        }
    }
}

Выполните очистку и пересборку:

./gradlew clean assembleDebug

Способ 3: Использовать jarsigner для ручной подписи

Если apksigner недоступен, можно подписать APK через jarsigner.

Подпишите APK:

jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 \
          -keystore ~/.android/debug.keystore \
          app.apk androiddebugkey

Убедитесь, что подпись добавлена:

jarsigner -verify -verbose -certs app.apk

Установите APK:

adb install app.apk

Способ 4: Сгенерировать новый keystore и подписать релиз

Если проблема в повреждённом или просроченном сертификате, создайте новое хранилище.

Сгенерируйте keystore с помощью keytool:

keytool -genkeypair -v \
        -keystore release.keystore \
        -alias release \
        -keyalg RSA \
        -keysize 2048 \
        -validity 10000 \
        -storepass changeit \
        -keypass changeit

Подпишите APK:

apksigner sign --ks release.keystore \
               --ks-pass pass:changeit \
               --key-pass pass:changeit \
               --out app-release-signed.apk \
               app-release-unsigned.apk

Установите и проверьте:

adb install app-release-signed.apk
apksigner verify --verbose app-release-signed.apk

Профилактика

  • Всегда используйте signingConfig в Gradle для debug и release сборок.
  • Храните production keystore в безопасном месте и никогда не коммитьте пароли в репозиторий.
  • Перед ручным редактированием APK делайте резервную копию и переподписывайте файл после изменений.
  • Регулярно проверяйте срок действия сертификатов с помощью keytool -list -v -keystore your.keystore.
  • Используйте CI/CD с изолированным доступом к keystore для автоматической подписи релизов.

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

Почему возникает ошибка INSTALL_PARSE_FAILED_NO_CERTIFICATES при установке через ADB?
Можно ли установить APK вообще без подписи?
Поможет ли отключение проверки в настройках разработчика?
Как проверить, подписан ли APK и какой сертификат используется?

Полезное

Проверить наличие подписи в APK
Переподписать APK debug-ключом
Пересобрать проект с правильным signingConfig

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