Что такое INSTALL PARSE FAILED NO CERTIFICATES error?
Я пытался изменить свою активность по умолчанию/main/startup (как бы Вы ее ни называли), отредактировав . Все, что я сделал, это изменил android:name
собственность. однако это полностью сломало все приложение. когда я пытаюсь установить его, он терпит неудачу и читает.
ошибка установки: INSTALL_PARSE_FAILED_NO_CERTIFICATES
когда я попытался вернуть его в прежнее состояние, он все еще давал мне ту же ошибку... Что я наделал?
15 ответов
вы отредактировали AndroidManifest.xml
непосредственно в ? Если так, то это не сработает.
Каждый Android .apk
должен быть подписан, если он будет установлен на телефоне, даже если вы не устанавливаете через рынок. Инструменты разработки работают вокруг этого, подписывая сертификат разработки, но .apk
все-таки подписан.
одно использование этого так устройство может сказать, если .apk
является допустимым обновлением для установленного приложения, поскольку, если это так, сертификаты будут одинаковыми.
поэтому, если вы внесете какие-либо изменения в свое приложение, вам нужно будет перестроить .apk
поэтому он подписывается правильно.
Я обнаружил, что эта ошибка также может возникнуть при использовании неправильной конфигурации подписи. Как описано здесь, Android 7.0 представляет новую схему подписи,V2. Схема V2 подписывает весь APK, а не только банку, как это делается в схеме V1. Если вы подписываете только V2 и пытаетесь установить на целевой объект pre-7.0, вы получите эту ошибку, так как сами банки не подписаны и pre-7.0 PackageManager не удается обнаружить присутствие V2 apk подпись.
чтобы быть совместимым со всеми целевыми системами, убедитесь, что APK подписан с обеими схемами, проверив оба поля версии подписи в Android Studio создать подписанный APK диалоговое окно как показано ниже:
Если ожидаются только цели 7.0, то нет необходимости включать подпись V1.
я обнаружил, что это было вызвано моей версией JDK.
у меня была эта проблема с "ant" , и это было связано с этой осторожностью, упомянутой в документации:
http://developer.android.com/guide/publishing/app-signing.html#signapp
внимание: начиная с JDK 7, алгоритм подписи по умолчанию изменился, требуя, чтобы вы указывали подписи и дайджест алгоритмов (- sigalg и-digestalg) при подписании АПК.
у меня есть JDK 7. В моем журнале муравьев я использовал -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]
Я подписал банку вручную и выровнял ее, но она дала немного другую ошибку:
$ "$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)
теперь мне нужно только изменения.xml для использования этих параметров при подписании!
Ok вот он: C:\Program файлы\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}" />
решено (для меня), используя в keytool args
-sigalg MD5withRSA -keyalg RSA -keysize 1024
и использование в jarsigner
-sigalg MD5withRSA -digestalg SHA1
решение найдено в
большую часть времени решение для этой ошибки очень просто:
- удалите apk
- очистите свой проект Android
- создайте свой проект Android
- установить / запустить apk
это уродливое, но быстрое решение: используйте JDK 6 вместо 7.
после прочтения ответа Хлои я удалил свой JDK 7 (в настоящее время он не нужен) и установил JDK 6. Это все исправило. Лучшее решение сделало бы ant использует JDK 6 (без удаления 7). Возможно возможное изменение / установка этого свойства:
java.библиотека.путь
в местный.файл свойств. Он находится в каталоге проекта (root).
Android не работает с JDK 7 в любом случае (только 6 или 5), поэтому сделайте так, чтобы сценарий ant также использовал JDK 6 или 5, вероятно, хорошее решение.
в моем случае я мог бы создавать и запускать сборки выпуска, но получил 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 Debug
- подразделение: Android
- название организации: неизвестный
- город: неизвестный
- штат или провинция:неизвестный
- код страны: нас
Это может произойти, если вы попытаетесь включить .jar
библиотека, содержащая .
- если это чистая Java, убедитесь, что вы не включаете его в .jar экспорт
- если это не чистая Java (то есть это проект Android), то вы должны включить его в качестве проекта Библиотеки
его, потому что ранее сгенерированная сборка и текущий конфликт в версии подписи между v1 (подпись jar) и v2 (полная подпись APK),
чтобы исправить галочку правильную версию подписи под диалогом создания подписанного APK
через некоторое время и несколько онлайн-потоков по этому вопросу мне удалось исправить мой проект.
Это в основном с учетом последних файлов (могут быть изображения или макеты), который вы вставляете. Если вы удалите их, это сработает, и вы сможете снова построить свой проект.
У меня была такая ошибка в моей консоли Eclipse. Оказывается, у меня было две банки с одинаковым содержанием, но разными именами, и они конфликтовали друг с другом. Я просто удалил один из них и сумел установить приложение на устройство.
Я получаю эту ошибку, потому что я выпустил, что мой ant release
не потому что у меня закончилось дисковое пространство.
Я получил эту ошибку, когда пытался установить проект Xamarin, построенный против Android N preview на телефоне с api v23. Решение не делать этого.
другой способ получить эту ошибку, чтобы построить с помощью ant
на macOS и имеют файл значка Finder (Icon\r
) в исходном дереве приложения. Он появляется jarsigner
не может справиться с возвратом каретки в имени файла и, хотя он будет утверждать, что подпись действительна, если вы -verify
APK, это всегда приводит к APK, который не будет установлен на устройстве. По иронии судьбы, плагин Google Drive Finder является отличным источником файлов значков Finder.
решение отстранить файлы (которые в любом случае бесполезны в APK) с таким спецификатором в fileset
:
<exclude name="**/Icon " />