Что такое ошибка INSTALL_PARSE_FAILED_NO_CERTIFICATES?

Я пытался изменить свою деятельность по умолчанию /main/startup (как бы вы это называете), отредактировав файл androidmanifest.xml. Все, что я сделал, это изменить свойство android:name. однако это полностью нарушило все приложение. когда я пытаюсь установить его сбой и читает.

Ошибка установки: INSTALL_PARSE_FAILED_NO_CERTIFICATES

Когда я попытался изменить его на прежнее состояние, он все равно дал мне ту же ошибку... Что я сделал?

Ответ 1

Вы отредактировали AndroidManifest.xml непосредственно в файле .apk? Если это так, это не сработает.

Каждый Android .apk должен быть подписан, если он будет установлен на телефоне, даже если вы не устанавливаете магазин. Инструменты разработки работают вокруг этого, подписываясь с сертификатом разработки, но .apk все еще подписан.

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

Итак, если вы внесете какие-либо изменения в свое приложение, вам нужно будет перестроить .apk, чтобы он правильно подписался.

Ответ 2

Я обнаружил, что эта ошибка также может возникать при использовании неправильной конфигурации подписания. Как описано здесь, Android 7.0 представляет новую сигнатурную схему V2. Схема V2 подписывает весь APK, а не только JAR, как это делается в схеме V1. Если вы подписываете только V2 и пытаетесь установить его на целевой пре-7.0, вы получите эту ошибку, так как сами JAR не подписаны, а pre-7.0 PackageManager не может обнаружить наличие сигнатуры AP2 V2.

Чтобы быть совместимым со всеми целевыми системами, убедитесь, что APK подписан обеими схемами, проверив оба окна версии подписи в диалоговом окне Android Studio Generate Signed APK, как показано ниже:

введите описание изображения здесь

Если ожидаются только 7.0 целей, тогда нет необходимости включать подпись V1.

Ответ 3

Я обнаружил, что это было вызвано моей версией JDK.

У меня была эта проблема с 'ant', и это было связано с этим ПРЕДУПРЕЖДЕНИЕМ, упомянутым в документации:

http://developer.android.com/guide/publishing/app-signing.html#signapp

Внимание: с JDK 7 алгоритм подписывания по умолчанию изменился, и вам нужно указать алгоритмы подписи и дайджесты (-sigalg и -digestalg), когда вы подписываете APK.

У меня JDK 7. В моем журнале Ant я использовал -v для подробностей и показал

$ ant -Dadb.device.arg=-d -v release install
[signjar] Executing 'C:\Program Files\Java\jdk1.7.0_03\bin\jarsigner.exe' with arguments:
[signjar] '-keystore'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\release.keystore'
[signjar] '-signedjar'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unaligned.apk'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unsigned.apk'
[signjar] 'mykey'
 [exec]     pkg: /data/local/tmp/PairFinder-release.apk
 [exec] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

Я подписал JAR вручную и запустил его, но он дал немного другую ошибку:

$ "$JAVA_HOME"/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore release.keystore -signedjar bin/PairFinder-release-unaligned.apk bin/PairFinder-release-unsigned.apk mykey
$ zipalign -v -f 4 bin/PairFinder-release-unaligned.apk bin/PairFinder-release.apk
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
641 KB/s (52620 bytes in 0.080s)

Я нашел, что ответил здесь.

Как работать с INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES без удаления

Мне нужно было только удалить его, а потом он сработает!

$ adb -d uninstall com.kizbit.pairfinder
Success
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Success
641 KB/s (52620 bytes in 0.080s)

Теперь мне нужно изменить файл build.xml, чтобы использовать эти параметры при подписании!

Хорошо, вот он: C:\Program Files\Java\android-sdk\tools\ ant\build.xml

            <signjar
                    sigalg="MD5withRSA"
                    digestalg="SHA1"
                    jar="${out.packaged.file}"
                    signedjar="${out.unaligned.file}"
                    keystore="${key.store}"
                    storepass="${key.store.password}"
                    alias="${key.alias}"
                    keypass="${key.alias.password}"
                    verbose="${verbose}" />

Ответ 4

В большинстве случаев решение этой ошибки очень просто:

  1. Удалите свой apk
  2. Очистите свой Android-проект
  3. Создайте свой Android-проект
  4. Установите/запустите apk

Ответ 6

В моем случае я мог бы создавать и запускать сборки релизов, но при попытке выполнить отладочную сборку получил ошибку INSTALL_PARSE_FAILED_NO_CERTIFICATES.

Решение заключалось в удалении моего файла debug.keystore и ADT его воссоздать. Похоже, что он истек.

Лучшим долгосрочным решением является явное создание debug.keystore, которое не истекает через год, а не позволяет ADT создавать его. Вот команда для этого:

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000

При появлении запроса введите следующие значения:

  • Имя и фамилия: Отладка Android
  • Организационная единица: Android
  • Название организации: Неизвестно
  • Город или местонахождение: Неизвестно
  • Штат или провинция: Неизвестно
  • Код страны: США

Ответ 7

Это уродливое, но быстрое решение: используйте JDK 6 вместо 7.

После того, как вы прочитали ответ Chloe, я удалил свой JDK 7 (в любом случае он не нужен в настоящее время) и установлен JDK 6. Это исправило его. Лучшее решение позволит ant использовать JDK 6 (без удаления 7). Возможно, возможно изменение/установка этого свойства:

java.library.path

в файле local.properties. Это в каталоге проекта (root).

Android не работает с JDK 7 в любом случае (только 6 или 5), поэтому убедитесь, что ant script также использует JDK 6 или 5, вероятно, является хорошим решением.

Ответ 8

Потому что ранее сгенерированная сборка и ток имеют конфликт в версии подписи между v1 (подпись jar) и v2 (полная подпись APK),

Исправить отметку правильной версии подписи в диалоговом окне "Создать подпись APK"

Ответ 9

В более новых версиях Android Studio 3. 2+, если вы пытаетесь запустить release установки, и вы не определили никаких конфигураций подписи, он будет показывать подсказку ошибки и установить не удастся. Вам нужно либо запустить debug сборку, либо правильно настроить конфигурацию подписи (V1 или V2).

Ответ 10

Я также столкнулся с той же проблемой. Сначала я сгенерировал сборку с использованием V2 и установил ее на мобильных устройствах под управлением ОС 5.1, и у меня возникла та же проблема. Но сборка работала нормально на планшете под управлением ОС 7.0. Поэтому я сгенерировал сборку с V1 Jar-подписью, и она отлично работала на обоих устройствах.

Вывод: если вы поддерживаете устройство ниже Android OS 7.0. Используйте V1 JAR подпись для генерации сборки.

Ответ 11

Это может произойти, если вы попытаетесь включить библиотеку .jar, содержащую файл AndroidManifest.xml.

  • Если это чистая Java, убедитесь, что вы не включили ее в экспорт .jar.
  • Если это не чистая Java (это означает проект Android), тогда вы должны включить его в качестве проекта библиотеки

Ответ 12

Настройка переменной окружения JAVA_HOME на JDK 5 или 6 (вместо JDK 7) исправила ошибку.

Ответ 13

Через некоторое время и несколько онлайн-потоков по этому вопросу мне удалось исправить мой проект.

В основном, учитывая последние файлы (могут быть изображения или макеты), которые вы вставляете. Если вы их удалите, это сработает, и вы сможете снова создать свой проект.

Ответ 14

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

Ответ 15

Я получал эту ошибку, потому что я действительно освобождал, что мой ant release терпел неудачу, потому что у меня закончилось дисковое пространство.

Ответ 16

У меня возникла эта ошибка, когда я попытался установить проект Xamarin, созданный для предварительного просмотра Android N на телефоне под управлением api v23. Решение состоит в том, чтобы не делать этого.

Ответ 17

Другой способ получить эту ошибку - построить с помощью ant в macOS и иметь файл значков Finder (Icon\r) в исходном дереве приложения. Похоже, что jarsigner не может справиться с возвратом каретки в имени файла и, хотя он будет требовать, чтобы подписание было действительным, если вы -verify APK, это всегда приводит к APK, который не устанавливается на устройстве. Как ни странно, плагин Google Drive Finder является отличным источником файлов значков Finder.

Решение состоит в том, чтобы исключить файлы-нарушители (которые в любом случае бесполезны в APK) с таким спецификатором в fileset:

    <exclude name="**/Icon&#13;" />

Ответ 18

Эта проблема произойдет, если вы устанавливаете неподписанную версию APK. Проверьте, правильно ли вы установили APK.

Ответ 19

У меня была эта проблема с ионным кодом/кодом Visual Studio (запустить Android на устройстве):

Я удалил приложение на мобильном устройстве ("Настройки"/"Приложения"), ошибка исчезла и приложение запускается.