Что такое ошибка 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
В большинстве случаев решение этой ошибки очень просто:
- Удалите свой apk
- Очистите свой Android-проект
- Создайте свой Android-проект
- Установите/запустите apk
Ответ 5
решена (для меня), используя в keytool аргументы
-sigalg MD5withRSA -keyalg RSA -keysize 1024
и использование в jarsigner
-sigalg MD5withRSA -digestalg SHA1
решение найдено в
Какие существуют подписи для подписания Android 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 " />
Ответ 18
Эта проблема произойдет, если вы устанавливаете неподписанную версию APK. Проверьте, правильно ли вы установили APK.
Ответ 19
У меня была эта проблема с ионным кодом/кодом Visual Studio (запустить Android на устройстве):
Я удалил приложение на мобильном устройстве ("Настройки"/"Приложения"), ошибка исчезла и приложение запускается.